Libvirt NAT模式下KVM/QEMU Windows虚拟机无网络连接问题求助
Libvirt NAT模式下KVM/QEMU Windows虚拟机无网络连接问题求助
Hello super users,
我现在正尝试让KVM/QEMU虚拟机通过Libvirt默认的NAT模式连上互联网,但遇到了麻烦:Windows 10虚拟机把虚拟适配器识别为**“未识别网络”,显示“无互联网”**。从ipconfig的输出(如下)能看出VM的DHCP工作异常——子网掩码(原本应该是255.255.255.0)和自动分配的IPv4地址(应该在192.168.122.2到192.168.122.254之间)都配置错误:
Ethernet adapter Ethernet 2: Connection-specific DNS Suffix . : Autoconfiguration IPv4 Address. . : 169.254.81.241 Subnet Mask . . . . . . . . . . . : 255.255.0.0 Default Gateway . . . . . . . . . :
主机上VM运行时执行ip a的输出:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether f0:2f:74:1b:5b:aa brd ff:ff:ff:ff:ff:ff 3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:5b:92:9a brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 4: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether d0:37:45:d8:fb:9a brd ff:ff:ff:ff:ff:ff inet 192.168.0.127/24 metric 20 brd 192.168.0.255 scope global dynamic wlan0 valid_lft 603733sec preferred_lft 603733sec inet6 fe80::d237:45ff:fed8:fb9a/64 scope link valid_lft forever preferred_lft forever 6: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master virbr0 state UNKNOWN group default qlen 1000 link/ether fe:54:00:d4:cd:4e brd ff:ff:ff:ff:ff:ff inet6 fe80::fc54:ff:fed4:cd4e/64 scope link valid_lft forever preferred_lft forever
主机执行ip r的输出:
default via 192.168.0.1 dev wlan0 proto dhcp src 192.168.0.127 metric 20 192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.127 metric 20 192.168.0.1 dev wlan0 proto dhcp scope link src 192.168.0.127 metric 20 192.168.0.56 dev wlan0 proto dhcp scope link src 192.168.0.127 metric 20 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
这事儿有点奇怪,因为网桥virbr0是正常启动的,虚拟接口vnet0也已经挂载到它上面了。为了修复配置错误,我手动设置了静态LAN参数,这时候能ping通主机(192.168.0.127)和网桥(192.168.122.1),但ping外网服务器比如google.com或者8.8.8.8都会超时。
是不是这说明virbr0能正常工作并转发数据包,但防火墙不允许虚拟网桥把数据包发送到默认网关?
相关配置信息:
- nftables规则:执行
nft list ruleset获取的规则集 - virbr0配置文件:
/etc/libvirt/qemu/networks/default.xml - Libvirt日志文件:
/var/log/libvirt/libvirtd.log - vnet0配置(VM运行时):
/etc/libvirt/qemu/win10.xml
我已经尝试过的解决方法:
- 安装并启用了dnsmasq(现在dnsmasq的错误已经消失)
- 执行
sysctl -w net.ipv4.ip_forward=1并将配置写入/etc/sysctl.conf
提前感谢各位抽出时间帮忙!
limefrog :)))
备注:内容来源于stack exchange,提问作者limefrog
相关产品推荐
相关产品推荐

