QEMU通过OVS实现联网
这篇笔记也是记录了一下自己的辛酸历程,仅供有需要的人参考。
首先关于qemu虚拟机的搭建,这不多赘述了,大家应该都会,这里可以给大家提供一个链接和一些命令。
QEMU搭建X86_64 + Ubuntu虚拟系统环境https://blog.csdn.net/m0_53195006/article/details/129883054这里主要的内容参考是没问题,就是记得在qemu configure的时候要加入--enable-sdl。
命令如下:
#./configure --enable-kvm --enable-debug --enable-sdl --enable-vnc --target-list=x86_64-softmmu
#create empty img
qemu-img create -f qcow2 ubt1.qcow2 10G
#create ubuntu img
qemu-system-x86_64 -m 2048 -smp 2 --enable-kvm ubt1.qcow2 -cdrom ./ubuntu-16.04.4-server-amd64.iso
#cp ubt1.qcow2 ubt2.qcow2
#start too vms
qemu-system-x86_64 -m 2048 -smp 2 --enable-kvm ubt1.qcow2 -netdev tap,id=tapnet,ifname=vnet0,script=no -device rtl8139,netdev=tapnet,mac=00:11:22:33:44:55
qemu-system-x86_64 -m 2048 -smp 2 --enable-kvm ubt2.qcow2 -netdev tap,id=tapnet,ifname=vnet1,script=no -device rtl8139,netdev=tapnet,mac=00:11:22:33:44:66
这样我们就拥有了两台虚拟机,但是先别启动,先配置好vnet。
然后呢,我们要启动ovs了。首先是安装ovs。
sudo apt update
sudo apt install openvswitch-switch
这里我们可以检查一下ovs是否启动了,看下是否active。
sudo systemctl status openvswitch-switch
如果active了的话,那么就代表启动了。接着做下面的命令,这很好懂。我新建两个tap设备,给两个qemu用。enp6s0是我宿主机的网卡名称。但是做完下面的动作你会发现,本来可以上网的,现在不行了。
sudo tunctl -b -t vnet0
sudo ifconfig vnet0 up
sudo tunctl -b -t vnet1
sudo ifconfig vnet1 up
sudo ovs-vsctl add-br vbr0
sudo ovs-vsctl add-port vbr0 vnet0
sudo ovs-vsctl add-port vbr0 vnet1
sudo ovs-vsctl add-port vbr0 enp6s0
最关键的步骤,因为我是通过dhcp获取的ip地址,所以把enp6s0的ip地址给到vbr0并没有用(靠!!!)。需要
sudo dhclient vbr0
这样vbr0获取到ip地址才可以使用。
配置完之后,我们按照之前的命令启动两个qemu,就发现他们可以上网了,附一张iperf3的图,是两个qemu之间打的。
这里有个问题,我之前在 CSDN 上看到有人用bridge也可以实现上网的,但是我做了就不行,还没搞清楚原因。
如果觉得这篇文章有用的话,可以点赞、评论或者收藏,万分感谢,goodbye~