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
- Check bridge on host:
ip a show br0 - Ping router from both host and VM:
ping 192.168.1.1 - 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