I am at a loss as to the issue. I am on artix (RUNIT) .Booting to KVM guest breaks internet (WIFI). Shutting down restores internet connection. the error I get from
ping 8.8.8.8:
From <IP> Destination host unreachable
I am able to ping the host and visa versa. I just have trouble interpreting logs and solving the issue (seems to me dhcp is causing issue, haven't tried switching to dhclient yet, because it used to work before latest system update). Kindly, anyone willing to take me through the steps please?
I use:
- virt-manager
- NetworManager
- wpa_supplicant installed, but service not enabled. (to prevent compatibility issues)
Logs from host:$ ip route show
0.0.0.0 dev vnet1 scope link
default dev vnet1 scope link
default via 192.168.25.186 dev wlan0 proto dhcp src 192.168.25.206 metric 3002
169.254.0.0/16 dev vnet1 proto kernel scope link src 169.254.75.168
192.168.25.0/24 dev wlan0 proto dhcp scope link src 192.168.25.206 metric 3002
192.168.25.186 dev wlan0 scope link
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
$ ip link
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: wlan0: <BROADCAST,MULTICAST,DYNAMIC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether 5e:6f:35:78:58:fb brd ff:ff:ff:ff:ff:ff permaddr d8:9c:67:6f:25:17
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:01:fa:ce brd ff:ff:ff:ff:ff:ff
5: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master virbr0 state UNKNOWN mode DEFAULT group default qlen 1000
link/ether fe:54:00:9d:79:87 brd ff:ff:ff:ff:ff:ff
amy-R:[amy]:~/Downloads$
$ dmesg
[ 1557.508590] virbr0: port 1(vnet1) entered blocking state
[ 1557.508601] virbr0: port 1(vnet1) entered disabled state
[ 1557.508734] device vnet1 entered promiscuous mode
[ 1557.509042] virbr0: port 1(vnet1) entered blocking state
[ 1557.509049] virbr0: port 1(vnet1) entered listening state
[ 1559.679608] virbr0: port 1(vnet1) entered learning state
[ 1561.812943] virbr0: port 1(vnet1) entered forwarding state
[ 1561.812952] virbr0: topology change detected, propagating
[ 1661.011835] wlan0: deauthenticating from 56:6f:90:26:a8:95 by local choice (Reason: 3=DEAUTH_LEAVING)
[ 1696.338500] wlan0: authenticate with 56:6f:90:26:a8:95
[ 1696.341438] pcieport 0000:00:01.2: AER: Multiple Corrected error received: 0000:01:00.0
[ 1696.341461] rtw_8822be 0000:01:00.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, (Receiver ID)
[ 1696.341466] rtw_8822be 0000:01:00.0: device [10ec:b822] error status/mask=00000080/00006000
[ 1696.341472] rtw_8822be 0000:01:00.0: [ 7] BadDLLP
[ 1696.872980] wlan0: send auth to 56:6f:90:26:a8:95 (try 1/3)
[ 1696.911395] wlan0: authenticate with 56:6f:90:26:a8:95
[ 1696.911447] wlan0: send auth to 56:6f:90:26:a8:95 (try 1/3)
[ 1696.939568] wlan0: authenticated
[ 1696.942946] wlan0: associate with 56:6f:90:26:a8:95 (try 1/3)
[ 1696.948911] wlan0: RX AssocResp from 56:6f:90:26:a8:95 (capab=0x431 status=0 aid=1)
[ 1696.949237] wlan0: associated
[ 1697.029727] wlan0: Limiting TX power to 0 (-128 - 0) dBm as advertised by 56:6f:90:26:a8:95
[ 1697.083073] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 2073.009633] wlan0: deauthenticating from 56:6f:90:26:a8:95 by local choice (Reason: 3=DEAUTH_LEAVING)
[ 2146.311626] wlan0: authenticate with 56:6f:90:26:a8:95
[ 2146.852917] wlan0: send auth to 56:6f:90:26:a8:95 (try 1/3)
[ 2147.011585] wlan0: authenticate with 56:6f:90:26:a8:95
[ 2147.011639] wlan0: send auth to 56:6f:90:26:a8:95 (try 1/3)
[ 2147.030392] wlan0: authenticated
[ 2147.032901] wlan0: associate with 56:6f:90:26:a8:95 (try 1/3)
[ 2147.039141] wlan0: RX AssocResp from 56:6f:90:26:a8:95 (capab=0x431 status=0 aid=1)
[ 2147.039464] wlan0: associated
[ 2147.071013] wlan0: Limiting TX power to 0 (-128 - 0) dBm as advertised by 56:6f:90:26:a8:95
[ 2147.146828] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Logs from VM Guest1: 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:9d:79:87 brd ff:ff:ff:ff:ff:ff
└─$ ip route show
default via 192.168.122.1 dev eth0 proto dhcp src 192.168.122.180 metric 100
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.180 metric 100
[ 14.635803] systemd[1]: first-boot-complete.target - First Boot Complete was skipped because of an unmet condition check (ConditionFirstBoot=yes).
[ 14.645979] systemd[1]: Finished systemd-sysusers.service - Create System Users.
[ 14.647776] systemd[1]: Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev...
[ 14.651954] systemd[1]: Started systemd-journald.service - Journal Service.
[ 14.663801] systemd-journald[485]: Received client request to flush runtime journal.
[ 14.842842] sr 0:0:0:0: Attached scsi generic sg0 type 5
[ 15.126666] Adding 1003516k swap on /dev/mapper/amyhost--vg-swap_1. Priority:-2 extents:1 across:1003516k FS
[ 15.150142] iTCO_vendor_support: vendor-support=0
[ 15.170704] input: PC Speaker as /devices/platform/pcspkr/input/input5
[ 15.210951] iTCO_wdt iTCO_wdt.1.auto: Found a ICH9 TCO device (Version=2, TCOBASE=0x0660)
[ 15.211259] iTCO_wdt iTCO_wdt.1.auto: initialized. heartbeat=30 sec (nowayout=0)
[ 15.226619] SVM: TSC scaling supported
[ 15.226628] kvm: Nested Virtualization enabled
[ 15.226629] SVM: kvm: Nested Paging enabled
[ 15.226640] SVM: Virtual VMLOAD VMSAVE supported
[ 15.226641] SVM: Virtual GIF supported
[ 15.226642] SVM: LBR virtualization supported
[ 15.258979] snd_hda_codec_generic hdaudioC0D0: autoconfig for Generic: line_outs=1 (0x3/0x0/0x0/0x0/0x0) type:line
[ 15.258986] snd_hda_codec_generic hdaudioC0D0: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[ 15.258988] snd_hda_codec_generic hdaudioC0D0: hp_outs=0 (0x0/0x0/0x0/0x0/0x0)
[ 15.258990] snd_hda_codec_generic hdaudioC0D0: mono: mono_out=0x0
[ 15.258991] snd_hda_codec_generic hdaudioC0D0: inputs:
[ 15.258993] snd_hda_codec_generic hdaudioC0D0: Line=0x5
[ 15.608305] EXT4-fs (vda1): mounting ext2 file system using the ext4 subsystem
[ 15.612566] EXT4-fs (vda1): mounted filesystem without journal. Quota mode: none.
[ 15.747077] RPC: Registered named UNIX socket transport module.
[ 15.747082] RPC: Registered udp transport module.
[ 15.747083] RPC: Registered tcp transport module.
[ 15.747084] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 15.975549] NET: Registered PF_QIPCRTR protocol family
[ 45.978003] systemd-journald[485]: Time jumped backwards, rotating.
[ 695.033552] usb-storage 1-3:1.0: USB Mass Storage device detected
[ 695.034016] usbcore: registered new interface driver usb-storage
[ 695.041748] usbcore: registered new interface driver uas
[ 699.893766] scsi 6:0:0:0: Direct-Access Kingston DataTraveler 2.0 PMAP PQ: 0 ANSI: 4
[ 699.894206] scsi 6:0:0:0: Attached scsi generic sg1 type 0
[ 699.961903] sd 6:0:0:0: [sda] 30277632 512-byte logical blocks: (15.5 GB/14.4 GiB)
[ 699.964059] sd 6:0:0:0: [sda] Write Protect is off
[ 699.964066] sd 6:0:0:0: [sda] Mode Sense: 23 00 00 00
[ 699.965971] sd 6:0:0:0: [sda] No Caching mode page found
[ 699.965978] sd 6:0:0:0: [sda] Assuming drive cache: write through
[ 699.979427] sda: sda1
[ 699.979673] sd 6:0:0:0: [sda] Attached SCSI removable disk
what's the output of:
sudo virsh net-list
sudo virsh net-dumpxml <name-from-previous-output>
artist
Virsh net-list
Name State Autostart Persistent
--------------------------------------------
default active yes yes
<network>
<name>default</name>
<uuid>1fe90f13-225a-4fc1-a6c5-2a6bffeff8a7</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:6d:9d:60'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
What is the output of:
lspci | grep -i wi
sudo virsh dumpxml <vm-name> | grep -A5 -i "type='pci' managed='yes'"
artist
lspci | grep -i wi
01:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8822BE 802.11a/b/g/n/ac WiFi adapter
After
virsh list --all
for VM name the output was empty for
sudo virsh dumpxml <vm-name> | grep -A5 -i "type='pci' managed='yes'"
. Can I get it another way for example using virt-manager
Running virsh list --all without sudo only works if this was set up.
You can also get the vm-name from within the virtual machine manager.
Or copy the complete xml from the Overview tab and paste it on eg. pastebin
artist
I get strange virsh responses after booting guests (first try)
- After booting a guest the "virsh list --all" outputs an ID run state of 2 (idle) or 3 paused (Fully booted guest).
- The "virsh net-list" state of default is remains inactive on a running guest
Strange responses after booting guest (second try)
- "virsh list --all" outputs a correct ID run state of 1
- b]virsh net-list[/b]" state of default remains inactive on a running guest
-------update/edit-------
By restarting libvirtd and booting to guest I managed to solve both issues
- ID runstate = 1
- state of the default is active
I only get shortlived internet (after a few minutes internet breaks for both host and guest )
Excuse me, I had already found VM-name. With correct VM-name the response was null (nothing)
From virt-manager-->details-->Overview-->XML I copied the guest xml as below
<domain type="kvm">
<name>linux2022-tonb</name>
<uuid>432a48f1-c086-4479-a309-1ecf8bb5f47d</uuid>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://libosinfo.org/linux/2022"/>
</libosinfo:libosinfo>
</metadata>
<memory unit="KiB">3145728</memory>
<currentMemory unit="KiB">3145728</currentMemory>
<vcpu placement="static">6</vcpu>
<os>
<type arch="x86_64" machine="pc-q35-7.2">hvm</type>
<boot dev="hd"/>
</os>
<features>
<acpi/>
<apic/>
<vmport state="off"/>
</features>
<cpu mode="host-passthrough" check="none" migratable="on"/>
<clock offset="utc">
<timer name="rtc" tickpolicy="catchup"/>
<timer name="pit" tickpolicy="delay"/>
<timer name="hpet" present="no"/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled="no"/>
<suspend-to-disk enabled="no"/>
</pm>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2" discard="unmap"/>
<source file="/var/lib/libvirt/images/linux2022-clone1.qcow2"/>
<target dev="vda" bus="virtio"/>
<address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
</disk>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw"/>
<target dev="sda" bus="sata"/>
<readonly/>
<address type="drive" controller="0" bus="0" target="0" unit="0"/>
</disk>
<controller type="usb" index="0" model="qemu-xhci" ports="15">
<address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
</controller>
<controller type="pci" index="0" model="pcie-root"/>
<controller type="pci" index="1" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="1" port="0x10"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
</controller>
<controller type="pci" index="2" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="2" port="0x11"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
</controller>
<controller type="pci" index="3" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="3" port="0x12"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
</controller>
<controller type="pci" index="4" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="4" port="0x13"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
</controller>
<controller type="pci" index="5" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="5" port="0x14"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
</controller>
<controller type="pci" index="6" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="6" port="0x15"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
</controller>
<controller type="pci" index="7" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="7" port="0x16"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/>
</controller>
<controller type="pci" index="8" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="8" port="0x17"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x7"/>
</controller>
<controller type="pci" index="9" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="9" port="0x18"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0" multifunction="on"/>
</controller>
<controller type="pci" index="10" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="10" port="0x19"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x1"/>
</controller>
<controller type="pci" index="11" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="11" port="0x1a"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x2"/>
</controller>
<controller type="pci" index="12" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="12" port="0x1b"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x3"/>
</controller>
<controller type="pci" index="13" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="13" port="0x1c"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x4"/>
</controller>
<controller type="pci" index="14" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="14" port="0x1d"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x5"/>
</controller>
<controller type="sata" index="0">
<address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
</controller>
<controller type="virtio-serial" index="0">
<address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</controller>
<interface type="network">
<mac address="52:54:00:a6:98:69"/>
<source network="default"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
<serial type="pty">
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
</serial>
<console type="pty">
<target type="serial" port="0"/>
</console>
<channel type="unix">
<target type="virtio" name="org.qemu.guest_agent.0"/>
<address type="virtio-serial" controller="0" bus="0" port="1"/>
</channel>
<channel type="spicevmc">
<target type="virtio" name="com.redhat.spice.0"/>
<address type="virtio-serial" controller="0" bus="0" port="2"/>
</channel>
<input type="tablet" bus="usb">
<address type="usb" bus="0" port="1"/>
</input>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<graphics type="spice" autoport="yes">
<listen type="address"/>
<image compression="off"/>
</graphics>
<sound model="ich9">
<address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/>
</sound>
<audio id="1" type="spice"/>
<video>
<model type="virtio" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
</video>
<redirdev bus="usb" type="spicevmc">
<address type="usb" bus="0" port="2"/>
</redirdev>
<redirdev bus="usb" type="spicevmc">
<address type="usb" bus="0" port="3"/>
</redirdev>
<watchdog model="itco" action="reset"/>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
</memballoon>
<rng model="virtio">
<backend model="random">/dev/urandom</backend>
<address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
</rng>
</devices>
</domain>
I must admit that all 4 guests exibit this issue of
From <IP> Destination host unreachable
This seems weird to me:
0.0.0.0 dev vnet1 scope link
default dev vnet1 scope link
vnet1 will show as a device on the host when the guest is booted, but for nat should not become the default device.
It could be that Network Manager is creating this problem, so I'd suggest to disable it.
artist
I downed (the service of) NetworkManager. As you predicted (and I would ask you to elaborate how you came to the conclusion) NetworkManager was the conflicting asset.
$ ip route show
0.0.0.0 dev vnet0 scope link
default via 192.168.56.74 dev wlan0
169.254.0.0/16 dev vnet0 proto kernel scope link src 169.254.112.47
192.168.56.0/24 dev wlan0 proto kernel scope link src 192.168.56.134
192.168.56.74 dev wlan0 scope link
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
Again for educational purposes I would ask to elaborate how you came to a conclusion
Second, Disabling NetworkManager is only half the answer, not the solution, since I intent to keep using NetworkManager. How would I continue the troubleshoot?
You only have to search on this forum and you'll see how often Networkmanager causes problems.
Connman seems to have less reported problems but I suspect that may simply be because it's used less ?
Unless this is a portable device you a likely connected to the same SSID all the time ? In which case it is possible to set a wifi connection up manually. And also set up a bridge manually. And still have the process automated.
If you search "NetworkManager kvm breaks internet" there's a lot of what look like relevant pages to digest.
"NetworkManager sucks" also throws up some interesting reading!
I will continue to try and test above mentioned solution for a while and report back if the issue continues. At least it appears NetworkManager was the culprit and internet works for now
So the preferred tool is Connman above NetworkManager? Or any other besides NetworkManager is fine?
I don't believe I said that ?
My preferred tool is none of them.
I have suffered issues with QEMU/KVM networking using the default 'NAT' setting in the past. This was without networkmanger.
The way I do it now is on the host I create a bridge interface br0. Then all my virtual machines use that.
<interface type="bridge">
<mac address="52:54:00:2e:aa:13"/>
<source bridge="br0"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
https://wiki.archlinux.org/title/Network_bridge#Creating_a_bridge
Read the whole page (bearing in mind a small portion is systemd only)
Maybe creating your own bridge interface will solve your problem and play nicely with NM.
Maybe not but it's worth a try imho.
I am in the process of creating a bridge, though I get an error with a wireless interface:
$ sudo ip link set wlan0 master br0
Error: Device does not allow enslaving to a bridge.
I found the following solution for wireless interface on a bridge: https://wiki.archlinux.org/title/Network_bridge#Wireless_interface_on_a_bridge. That gives me two options which method should I select:
- https://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC or;
- hostapd: https://wiki.archlinux.org/title/Software_access_point
Option one requires ebtables. I have iptables-nft already in use and having both installed might conflict. Also the tutorial steps refer to
/etc/network/interfaces (where is the artix equivalent of this debian based directory??).
Alternatively, instead of a bridge I found tutorials for using macvtap??
Well that complicates things. I have never done it (wlan0 to a bridge) so I'd just be reading the same documents as you! I use a wired connection on my PC.
Nothings ever simple.
I was just suggesting a possibility. Sounds like it is doable though if the following condition is met:
"Wi-Fi device must support AP mode". Make sure it does before you waste too much time on it.
It's all learning though.
I'm blessed to use Openrc with Netifrc and my whole network setup is just
config_eth0="null"
config_br0="192.168.1.111/24"
bridge_br0="eth0"
routes_br0="default via 192.168.1.1"
config_usb0=dhcp
Though I can just about remember how to bring up a wired and wifi connection in a terminal (often need my notes for wifi) which is helpful occasionally.
imho network managers are great when they work. but they sometimes think they are cleverer than they are and then just silently fail (a bit like me :o )
Also both networkmanager and connman seem to enjoy changing the hostname on a running system (breaks X programs) which is enough dissuade me from both of them.
I can't tell you what is the best solution for you. We have different hardware.
My wireless interface supports ap mode.
Whatever the best solution is i am willing to try. I am on xfce not Xorg. NetworkManager or connman are no requirements for me though I believe there are and there ought to be solutions even with them in mind
Laptop and wireless interfaces are common setups for linux. There is a solution. I am confident there are solutions. If we could list or test them many others would equally benefit. Though i am lucky to have AP mode in this case.
From brainstorming I can think of
- manual edits of routing table
- static Ip (which i dont prefer and want to keep to minimum🤭). Maybe a manual edit in code could prevent the occurance of default dev vnet1 scope link and it is solved with that. I could remove NM and connman and connect with wpa-supplicant for testing if the occurance is gone.
- move away from NAT and use bridge(if possible) or macvtap (cant guess if that will work)
- two options i mentioned before Here (https://wiki.debian.org/BridgeNetworkConnections#Bridging_with_a_wireless_NIC) and Hostapd (https://wiki.archlinux.org/title/Software_access_point)
- The device is portable and does not connect to the same SSID, but i could keep switching to a minimum. Manual wifi connection is a plan B or even C to my mind
- maybe other solutions or tests I did not think of
I am in need of saving and I am not convinced we have exhausted all braincells
You are using X/X11/Xorg underneath Xfce. I only mentioned that issue in passing.
Yes and going from the search I recommended you do, "NetworkManager kvm breaks internet", your exact issue is a common problem. Bear in mind that KVM was designed to be used on servers. Not portable laptops over wifi. Which could be why getting it working is a little more complex than one might hope?
I can't test potential solutions as I don't use wifi and I'm not having the problem. I can only suggest them (And I could well be wrong, I often am in my own endevours).
The implementation and testing is down to you.
I was under the impression that you had solved the the problem somewhat in that you disabled NM and you did have internet while using your virtual machine?
Using my often flawed logic tells me:
You know there is a problem using networkmanager in conjuntion with virb0 nat and your wifi with the default networkmanager settings.
So you can research and try to find the setting change that will fix this. Probably, imo, on the networkmanager side but that's not a definite.
You can use a different solution. A different network manager could be one (have you tried conmman) ? No network manager seems to be one, but is sub optimal on your portable device.
Another solution might be using a bridge whether standard or macvtap. I've no experience of the latter and no experience of the former bridged to wifi.
A bridge can have other advantages over NAT anyway. As the VM gets it's own ip on the local network making bidirectional ssh/sftp, and the setup of servers such as webservers far easier. You may not need any of this ?
You'll have to save yourself unless someone else comes along who KNOWS the answer because I don't.
I only have ideas which I've suggested. It's down to you to decide which to try and then try to test them.
But if you ask anything specific about problems along the way I'll do my best to help.