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   半山随笔  阅读(52)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示