Skip to content

Instantly share code, notes, and snippets.

@bvk
Last active September 26, 2025 20:58
Show Gist options
  • Save bvk/7b0b20c7b5dd1b37631828dfd82e018b to your computer and use it in GitHub Desktop.
Save bvk/7b0b20c7b5dd1b37631828dfd82e018b to your computer and use it in GitHub Desktop.
Debian /etc/network/interfaces example for KVM to bridge over WiFi inteface as a non-root user
bvk@runner:~$ sudo cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug wlp3s0
iface wlp3s0 inet dhcp
wpa-ssid WIFI-SSID
wpa-psk WIFI-PASSWORD
post-up ip link add kvmbr0 type bridge
post-up ip link set kvmbr0 up
pre-down ip link del kvmbr0
post-up sysctl -w net.ipv4.ip_forward=1
post-up sysctl -w net.ipv4.conf.kvmbr0.proxy_arp=1
post-up sysctl -w net.ipv4.conf.wlp3s0.proxy_arp=1
# Duplicate wlp3s0 ipv4 address to kvmbr0 with /32 mask.
post-up ip addr add $(ip addr show wlp3s0 | sed -En -e 's@.*inet ([0-9.]+)/.*@\1@p')/32 dev kvmbr0
pre-down ip addr del $(ip addr show wlp3s0 | sed -En -e 's@.*inet ([0-9.]+)/.*@\1@p')/32 dev kvmbr0
# Start/stop DHCP relaying.
post-up dhcp-helper -i kvmbr0 -b wlp3s0 -r /var/run/kvmbr0-dhcp-helper.pid
pre-down pkill -F /var/run/kvmbr0-dhcp-helper.pid
# Start/stop automatic routing updates.
post-up bash -c 'parprouted -d wlp3s0 kvmbr0 >/var/log/kvmbr0-parprouted.log 2>&1 & echo $! >/var/run/kvmbr0-parprouted.pid'
pre-down pkill -F /var/run/kvmbr0-parprouted.pid
# KVM fixes for Debian 13 Trixie.
post-up mkdir -p /etc/qemu
post-up echo allow kvmbr0 > /etc/qemu/bridge.conf
post-up chmod u+s /usr/lib/qemu/qemu-bridge-helper
bvk@runner:~$
bvk@runner:~$ kvm -m 2G -hda test.img -nographic -serial mon:stdio -kernel /boot/vmlinuz-6.12.48+deb13-amd64 -initrd /boot/initrd.img-6.12.48+deb13-amd64 -append 'console=ttyS0 root=UUID=584054b1-24ea-4931-a019-4efb43b18e35' -device virtio-net,netdev=network0,mac=02:33:a4:8d:45:33 -netdev bridge,id=network0,br=kvmbr0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment