9

I have been trying to set up a Windows 10 VM in my current Arch Linux (5.13.12-arch1-1) host system. I set up the VM using libvirt and KVM/QEMU using virt-manager as GUI.

The NIC card has been setup with "Virtual Network 'Default' NAT" and using "virtio" settings. However even after updating the drivers on Windows, it is not able to connect to the internet and shows "Unidentified Network- No Internet Access".

Output of ipconfig /all in Windows 10 output

Output of ip link in Arch

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

Output of virsh net-dumpxml default in Arch

<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>

Already done-

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 shows that no ip has been allocated to the VM. As of now, I am clueless on how to fix this.

*MAC addresses have been changed

3 Answers 3

12

Same problem here, appears to be a driver problem. This fixed it for me:

  1. If you haven't done yet, download Windows VirtIO Driver ISO ('Stable virtio-win ISO' worked for me) and attach to guest CD drive: https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md

  2. In Win 10 guest, open Device Manager and look for a network adapter with a yellow triangle. If it appears as 'Ethernet Controller', skip to step 3. Otherwise, if it's recognized as 'Red Hat VirtIO Ethernet Adapter' with a yellow triangle: right-click -> Remove Device and check 'delete drivers'. Refresh Device Manager. Now it should appear as just "Ethernet Controller", probably at the top.

  3. Still in Device Manager, right-click "Ethernet Controller" -> Update Update Driver -> Search my computer. When asked for a path, navigate to your CD drive -> NetKVM -> w10 -> whatever architecture you may have (in my case the full path was D:\NetKVM\w10\amd64).

Should now install the correct driver for virtio network adapter and give you internet access. For reference, see: https://access.redhat.com/articles/2470791

3
  • 1
    Just to add this: I hade also a few PCI devices without drivers listed - all of these had drivers on the ISO image linked in your answer. It is easier to select the entire CD drive instead of the folders, though and I needed to first install the PCI drivers before I could install the network driver.
    – ingofreyer
    Commented Feb 6, 2023 at 6:54
  • 1
    Oh you star! This. Just. Worked.
    – J-Cake
    Commented Mar 27, 2023 at 9:17
  • It just worked for me, too. I came across this network problem during the process of installing WinApps ( github.com/Fmstrat/winapps?tab=readme-ov-file ) and this answer was exactly the fix for me.
    – marcor92
    Commented Dec 18, 2023 at 10:11
2

Aparently libvirt does not handle nftables well [1].

You need to use the legacy backend [2]. These are the necessary packages

iptables ebtables dnsmasq firewalld

I had to also enable firewalld to get the network working.

  1. https://blog.zentria.company/posts/its-2021-nftables-still-does-not-integrate/
  2. libvirt: "Failed to initialize a valid firewall backend"
1

In virt-manager make sure virbr0 is active and autostart on boot is selected

enter image description here

For more info check this out VirtualNetworking

3
  • Thanks but those options have already been set on my system.
    – Sam
    Commented Aug 28, 2021 at 9:57
  • @Sam have you installed virtio drivers in win 10 guest ?
    – Madhubala
    Commented Aug 28, 2021 at 10:06
  • Yep, ethernet and display drivers have been upgraded to the vertio Red Hat versions.
    – Sam
    Commented Aug 28, 2021 at 10:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .