Bridged connection got borked in Virt-Manager

I set up a bridged connection for my Windows 10 VM that is running in Virt-Manager, and the connection was working.
It looks like this
Screenshot_20240619_205249

<interface type="bridge">
  <mac address="52:54:00:68:c4:38"/>
  <source bridge="br0"/>
  <model type="e1000e"/>
  <address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
</interface>

But now after a reboot I get this error when trying to start the VM:

Error starting domain: Cannot get interface MTU on 'br0': No such device

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 72, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 108, in tmpcb
    callback(*args, **kwargs)
  File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 57, in newfn
    ret = fn(self, *args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/share/virt-manager/virtManager/object/domain.py", line 1402, in startup
    self._backend.create()
  File "/usr/lib/python3.12/site-packages/libvirt.py", line 1379, in create
    raise libvirtError('virDomainCreate() failed')
libvirt.libvirtError: Cannot get interface MTU on 'br0': No such device

I tried running

sudo systemctl restart libvirtd

but I still get the error.

Is that bridge a virtual bridge where you have defined the private network within qemu or a bridge that gets an ip from the same network as your lan?

It gets an ip on its own just like my physical machine does.

All I did to create it was change NAT to Bridge, and then give the name of br0 to it. It worked, at first.

Can your share your Qemu “Virtual Networks”(Under “Connection details”) and the out put of “ip a”?

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 noprefixroute 
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether a8:5e:45:e2:87:3c brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.2/24 brd 10.0.0.255 scope global dynamic noprefixroute enp3s0
       valid_lft 2840sec preferred_lft 2840sec
    inet6 2a06:c701:4fa6:a900:fead:bb62:4bd:9506/64 scope global dynamic noprefixroute 
       valid_lft 86256sec preferred_lft 43056sec
    inet6 fe80::19c9:d5d0:114a:706/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp0s20f0u3u1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 00:e0:4c:68:51:92 brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:16:af:ef 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

There is no “br0” in your “ip a” output.

What exactly do you mean by that, NAT bridge is not the same as creating a bridge to the physical network adapter of your host? A NAT bridge is a virtual bridge defined within Qemu and a bridge using your host network adapter is done with NetworkManager or with whatever Networking service you are using.

I don’t really understand all of that, to tell you the truth. :thinking:
What did I do to create the bridged connection?
I opened the settings of the VM, in Virt-Manager. I went to the NIC tab. I changed the network source to bridged. I assigned the device name of br0. And that’s it, that’s all I did.

Can you share the output of the following?

nmcli con show
nmcli con show
NAME                UUID                                  TYPE      DEVICE 
Wired connection 2  3484ae00-b4e7-3915-9fb4-747a40474bae  ethernet  enp3s0 
lo                  32166855-c20c-4fe4-a83c-50e9a06d7ce2  loopback  lo     
virbr0              0b3b793f-0ad7-4aec-b7d3-776ba7c2d1c0  bridge    virbr0 
Wired connection 1  32242c33-ae36-3404-9203-81a6981df29d  ethernet  --     

The only bridge you have defined is a virtual bridge which is a NAT bridge defined within Qemu but it also show in NetworkManager. If you want to to create a bridge that gets an ip in the same network as your lan better to do it manually. So like this.

https://wiki.archlinux.org/title/network_bridge#With_NetworkManager

Which kind of bridged connection do you think is best for my user case?
I want a bridged connection so the Windows VM can talk to my WIFI-connected Brother printer through the native Windows software provided by Brother. The Windows software has a PC-to-Fax driver that I use for sending old-fashioned faxes directly from my computer.

The one bridge device that is bridge directly with the network adapter of your host system, so how they created it here.

1 Like

I will check it out, thanks!
Should I revert the settings on the NIC tab back to NAT, like it was before? Or did I take a step in the right direction by making it bridged?

What screen did you change that, can you share that too? Which NIC tab are you talking about?

Screenshot is in the original post

I see it now, now it makes more sense. What you did there is switch your vm’s virtual network interface from NAT(which use a virtual nat bridge) to use the bridge device br0. Since br0 doesn’t exist Qemu is complaining about br0 not existing.

If you use NetworkManager to actually create br0, as how they explain it in that Archwiki article.

Then using the Network source “Bridge device” being br0 should work.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.