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”即可。

posted on 2024-11-08 13:52  半山随笔  阅读(29)  评论(0编辑  收藏  举报

导航