Host Bridge for QEMU/KVM on Arch

Make your VMs part of your LAN

I needed a VM that would allow SSH, i use QEMU/KVM(VMM) for my Ubuntu server. VMM is VERY picky about bridges

So lets walk through this together!

Concepts

Bridge (br0) — a virtual switch on your host. Your physical NIC connects to it, and your VMs can join directly onto your LAN. Each device gets its own IP.

systemd-networkd — we use this instead of NetworkManager for a persistent bridge setup. Easy to toggle on/off when needed.

please note enp42s0 will be different for you! to find your own NIC ip a

Host Setup

Place these files in /etc/systemd/network/ with prefixes controlling order.

1) 10-br0.netdev

[NetDev]
Name=br0
Kind=bridge

2) 20-enp42s0.network

[Match]
Name=enp42s0

[Network]
Bridge=br0

3) 30-br0-static.network

[Match]
Name=br0

[Network]
Address=192.168.1.144/24
Gateway=192.168.1.1
DNS=1.1.1.1 8.8.8.8
DHCP=no

Then enable networkd:

sudo systemctl enable --now systemd-networkd

VM Setup

In Virt‑Manager: Edit VM → NIC → set Network source to Bridge and pick br0. Use virtio model.

Static IP (Netplan)

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: no
      addresses: [192.168.1.69/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [1.1.1.1, 8.8.8.8]

Apply with sudo netplan apply.

Verify

  1. Check bridge on host:
    ip a show br0
  2. Ping router from both host and VM:
    ping 192.168.1.1
  3. SSH from another device:
    ssh user@192.168.1.69

Troubleshooting

  • NIC still has IP
    sudo ip addr flush dev enp42s0
  • NetworkManager conflict
    sudo nmcli device set enp42s0 managed no
  • Limited Connectivity warning — harmless; ignore if network works fine.
  • Bridge fails after reboot
    sudo systemctl enable --now systemd-networkd
Linux blinkie