libvirt: 配置virt-net tap上网
在libvirt通过修改xml来配置上网有一点复杂,而且网上相关的资料很少不知道其他人都是怎么上网的。参考libvirt文档记录一下如果使用自己创建的tap设备上网。
使用预先创建的tap设备上网
首先得有一个网桥,我一般用docker0当作网桥,只需装一个docker即可。有了网桥之后可以创建一个tap设备并挂在docker0上。
ip tuntap add dev tap0 mode tap
brctl addif docker0 tap0
这样在用户态的工作就完成了。下面配置libvirt xml。
<interface type='ethernet'> <mac address='52:54:00:f5:fb:dc'/> <model type='virtio'/> <target dev='tap0' managed='no'/> <driver name='qemu'/> <address type='pci' domain='0x0000' bus='0x02' slot='0x01' function='0x0'/> </interface>
重点是model type设置为virtio,target dev设置为刚刚创建的tap0,managed设置为no表示无需libvirt干预,driver name设置为qemu,将qemu作为virtio的后端,否则默认是vhost。这样启动libvirt后虚拟机就创建了virtio-net设备。但是通常guest没有自动将网络配置好,我们需要手动配置ip,路由和dns。
按照docker0的地址配置ip,docker0的ip通常是172.17.0.44.
ifconfig ens1 172.17.0.44/24 route add default gw 172.17.0.1
配置dns为8.8.8.8
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
这样就可以上网了。
如果是用vhost上网,去掉libvirt xml中“driver name”即可。