以前在ubuntu14.04上配置openvswitch和kvm,虚拟机nat是可以的(之前写了一个nat的配置openvswitch kvm虚拟机环境),但是桥接的时候总是有问题,网上的资料也特别杂乱,配置了很长时间没有配置成功。
发现了这么一个英文帖子 KVM and OVS on Ubuntu 16.04,试着配置了一下居然成功了,而且还很简单。
(在这里还原一下实验设置,可能相关配置并不是最合理的,后期会进行更改)
环境:Ubuntu Desktop 16.04,有两个网卡
ens33 192.168.1.54
ens38 192.168.1.55
首先是安装KVM相关的软件:
sudo apt-get install qemu-kvm libvirt-bin bridge-utils virtinst
关闭kvm默认的网桥:
sudo virsh net-destroy default
sudo virsh net-autostart –disable default
安装openvswitch组件,开启ipv4转发(切换到root用户):
sudo apt-get install -qy openvswitch-switch openvswitch-common
sudo service openvswitch-switch start
sudo echo “net.ipv4.ip_forward” >> /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
添加网桥,并修改/etc/network/interfaces如下(修改好像没有什么用,重启的时候有问题):
sudo ovs-vsctl add-br br0
sudo ovs-vsctl add-port br0 ens38
重启网络:
sudo ifdown –force -a && sudo ifup –force -a
这个地方有问题,如下,本以为实验要失败的,抱着侥幸的心里继续实验。
can’t add ens38 to bridge br0: Operation not supported
set hello timer Failed: Operation not supported
set max age Failed: Operation not supported
set stp status Failed: Operation not supported
set forward delay Failed: Operation not supported
需要说明的是路由表如下,默认路由在另一个网卡上(配置默认路由在br0上也可以的),所以是可以上网的,能ping通百度:
接下来就是安装虚拟机了,使用virsh安装,命令为:
qemu-img create vm1.img 6G
sudo virt-install -n vm1 -r 512 –vcpus 1 \
–os-type linux \
–os-variant ubuntu16.04 \
–network bridge=br0,virtualport_type=’openvswitch’ \
–hvm –virt-type kvm \
–disk size=8,path=/home/qiu/vm1.img \
–noautoconsole \
–cdrom=/home/qiu/Desktop/ubuntu-14.04-server-amd64.iso
注意上面红色的部分,原文为virtualport_type=’ovs’,是报错的。
然后就开始安装操作系统了,要使用命令 virt-viewer vm1 查看console。
安装完成之后,虚拟机竟然有了ip:192.168.1.56,而且能ping通网关和百度,不容易啊。
virsh 删除虚拟机的命令: virsh destroy vm1 virsh undefine vm1