无法使用 KVM/QEMU 在 Windows 10 VM 中连接到互联网

无法使用 KVM/QEMU 在 Windows 10 VM 中连接到互联网

我一直在尝试在当前的 Arch Linux (5.13.12-arch1-1) 主机系统中设置 Windows 10 VM。我使用 libvirt 和 KVM/QEMU 设置 VM,并使用 virt-manager 作为 GUI。

NIC 卡已设置为“虚拟网络‘默认’NAT”并使用“virtio”设置。但是,即使在 Windows 上更新驱动程序后,它仍无法连接到互联网并显示“未识别网络 - 无法访问互联网”。

ipconfig /allWindows 10 中 的输出输出

ip linkArch 中的输出

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
    altname wlp0s20f3
10: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether bb:bb:bb:bb:bb:bb brd ff:ff:ff:ff:ff:ff
11: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master virbr0 state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether cc:cc:cc:cc:cc:cc brd ff:ff:ff:ff:ff:ff

virsh net-dumpxml defaultArch 中的输出

<network connections='1'>
  <name>default</name>
  <uuid>a145acdf-7624-40c5-af1f-b88bfc33bcc6</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='dd:dd:dd:dd:dd:dd'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
      <host name='Windows10' ip='192.168.122.2'/>
    </dhcp>
  </ip>
</network>

已经完成了-

sudo pacman -S iptables-nft nftables dhclient
sudo systemctl enable/start libvirt.service
sudo systemctl enable/start dnsmasq.service
virsh net-autostart default
virsh net-start default

virsh net-dhcp-leases default显示没有为虚拟机分配 IP。到目前为止,我还不知道如何修复这个问题。

*MAC地址已更改

答案1

同样的问题,似乎是驱动程序问题。这帮我解决了这个问题:

  1. 如果你还没有完成,请下载 Windows VirtIO 驱动程序 ISO(“稳定的 virtio-win ISO”对我来说很管用)并附加到客户 CD 驱动器:https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md

  2. 在 Win 10 客户机中,打开设备管理器并查找带有黄色三角形的网络适配器。如果它显示为“以太网控制器”,请跳至步骤 3。否则,如果它被识别为带有黄色三角形的“Red Hat VirtIO 以太网适配器”:右键单击 -> 删除设备并选中“删除驱动程序”。刷新设备管理器。现在它应该只显示为“以太网控制器”,可能位于顶部。

  3. 仍在设备管理器中,右键单击“以太网控制器”-> 更新驱动程序-> 搜索我的电脑。当系统询问路径时,导航到您的 CD 驱动器 -> NetKVM -> w10 -> 您可能拥有的任何架构(在我的情况下,完整路径是D:\NetKVM\w10\amd64)。

现在应该安装正确的 virtio 网络适配器驱动程序并为您提供互联网访问权限。有关参考,请参阅: https://access.redhat.com/articles/2470791

答案2

显然,libvirt 不能很好地处理 nftables [1]。

您需要使用旧版后端 [2]。这些是必需的软件包

iptables ebtables dnsmasq firewalld

我还必须启用防火墙才能使网络正常运行。

  1. https://blog.zentria.company/posts/its-2021-nftables-still-does-not-integrate/
  2. libvirt:“无法初始化有效的防火墙后端”

答案3

在 virt-manager 中确保 virbr0 处于活动状态并被autostart on boot选中

在此处输入图片描述

欲了解更多信息,请查看虚拟网络

相关内容