# Configuring Network Bridges in Debian 12 for QEMU: Temporary and Permanent
Network bridges in Linux allow virtual machines to integrate into the local network as full-fledged nodes. Unlike QEMU's user mode, bridge mode provides direct interaction with the physical LAN. Basic knowledge of OSI layers 1–3, and the differences between switches and routers, is required. All commands are run as root or with sudo.
A bridge acts as a virtual switch with an unlimited number of ports. Without interfaces added to it, there's only a virtual interface with the same name. Adding ports (physical or tap) makes them part of the switch: individual interfaces' IP and MAC addresses are ignored.
Example: three physical NICs + bridge = four switch ports, with one managed IP on the bridge.
Temporary Bridge Creation
Create a bridge named bridge0:
ip link add bridge0 type bridge
ip link set dev bridge0 up
Check status with ip a. The interface goes UP when an active port is added (physical NIC with link or tap from VM).
Add an interface, e.g., enp2s0:
ip link set enp2s0 master bridge0
To remove: ip link set enp2s0 nomaster. Works with Wi-Fi and single NICs — the host uses the bridge with a new MAC.
Network will drop after adding. Get an IP:
- DHCP:
dhclient -v bridge0 - Static:
ip a add 172.16.5.2/24 dev bridge0 && ip route add default via 172.16.5.1 dev bridge0
VM in bridge mode will get an IP from the host's network.
To delete: ip link delete bridge0. Interfaces return to original state. Bridge vanishes on reboot.
Permanent Configuration via /etc/network/interfaces
For persistence, edit /etc/network/interfaces or a file in /etc/network/interfaces.d/.
Basic example for virtbr0 (static IP, no ports by default):
auto virtbr0
iface virtbr0 inet static
address 10.15.15.1
netmask 255.255.255.0
bridge_fd 0
bridge_maxwait 0
bridge_ports none
bridge_hello 2
bridge_maxage 20
bridge_stp off
Key parameters:
auto/iface: auto-start.inet static/dhcp/manual: IP type (manual — no IP, add manually).bridge_ports none: empty bridge; QEMU adds tap dynamically. Or specify enp2s0 etc.bridge_fd 0,bridge_maxwait 0: activation delays (0 for simple cases).bridge_hello 2,bridge_maxage 20: BPDU for STP.bridge_stp off: disable Spanning Tree (for test VMs).bridge_hw MAC: set bridge MAC or copy from interface.
For a physical NIC in the bridge, change it to manual (remove dhcp).
Activate: systemctl restart networking.service. Existing bridge won't auto-delete — use ip link delete or reboot. Monitor with ip a.
Integration with QEMU
Launch VM with bridge:
-net nic,model=e1000e,macaddr=52:54:00:a9:2b:c7 -net bridge,br=bridge0
Breakdown:
-net nic,...: emulates NIC in guest OS (e1000e — gigabit Intel; unique MAC for multi-VM).-net bridge,br=bridge0: creates tap on host, adds to bridge, connects with patch cord.
Tap MAC is ignored in bridge. Without br=bridge0, VM won't start.
Key Points
- Bridges from bridge-utils (apt install) — dynamic; networking — persistent.
- UP state only with active ports;
ip afor diagnostics. - Wi-Fi/single NIC: supported, host works via bridge.
- STP off for simplicity; hello/maxage — defaults.
- QEMU tap auto-added; unique MACs in VMs.
— Editorial Team
No comments yet.