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”即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具