QEMU/KVM virbridge not working

I have a bridge network connected to eth0 that works

brctl show

bridge name bridge id STP enabled interfaces
br0 8000.387c761cd98f no eth0
virbr0 8000.5254002f35df no

(not sure whaat virbr0 is, I never created it)

In the client the network is setup as

<interface type="bridge">
  <mac address="52:54:00:bb:ff:27"/>
  <source bridge="br0"/>
  <target dev="vnet5"/>
  <model type="virtio"/>
  <link state="up"/>
  <alias name="net0"/>
  <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>

Yet I get no DHCPin the (windows 11) client.

Windows-IP-Konfiguration


Ethernet-Adapter Ethernet:

   Verbindungsspezifisches DNS-Suffix:
   IPv4-Adresse (Auto. Konfiguration): 169.254.93.18
   Subnetzmaske  . . . . . . . . . . : 255.255.0.0
   Standardgateway . . . . . . . . . :

How do I enable dhcp traffic from client to host network?

Renewing (ipconfig /renew) times out

do I need this:

sudo sysctl -w "net.ipv4.ip_forward=1"
sudo iptables -P FORWARD ACCEPT

Or is that some bad advice?

The bridge works at a lower level then IP layer of the network. setting forwarding and iptables is both bad advice.

What does ip addr show?

Someone that using a bridge with NetworkManage will need to ask for info from you.
(I use systemd-networkd on my desktop to create the bridge I use).

I try to use the KDE Plasma NetworkManager to create the bridge. Your question ip addr reverse to OSI 3 which is indeed at a higher level than datalink (MACs and stuff)

virbr0 is created by default and can be used to connect VM’s to a separate network segment using NAT to connect to the internet.

If eth0 is connected to your router, the VM should pick-up an IP address from the router and becomes part of your LAN, no NAT needed.

On my system, this leads by virt-manager to network XML:

<interface type="bridge">
  <mac address="52:54:00:76:fe:fd"/>
  <source bridge="bridge0"/>
  <model type="virtio"/>
  <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>

without target dev, it’s choosen sequentially.

Be sure that both eth0 and vnet5 belong to the bridge, I get:

$ bridge link show master bridge0
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100 
5: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 2 

and the bridge should get the IP address from the network, not the eth0. in NetworkManager, eth0 should be defined as slave of br0. Then it should work.

I ran this:

sudo sysctl -w net.bridge.bridge-nf-call-iptables=0
sudo sysctl -w net.bridge.bridge-nf-call-ip6tables=0

I’m aware of that, the ip addr reveals mistakes in config.

I believe all the qemukvm bridge blues can be retraced to the fact that I have docker installed as well. This is not specifically covered in the many resources I’ve found online and deepseek. I had Claude signal me that docker bridging could potential thward bridging for others and was able to solve the problem (for the time being.)

Usually you would use podman not docker on Fedora.

I’m glad I got docker working. But you are envited to get all 45+ containers working on podman .