## Debian 12 中为 QEMU 配置网络桥接:临时与永久
Linux 中的网络桥接允许虚拟机作为完整节点融入本地网络。与 QEMU 的用户模式不同,桥接模式提供与物理 LAN 的直接交互。需要掌握 OSI 第 1–3 层的基本知识,以及交换机与路由器的区别。所有命令需以 root 或使用 sudo 执行。
桥接充当一个具有无限端口数的虚拟交换机。如果未添加接口,则只有一个同名的虚拟接口。添加端口(物理或 tap)后,它们成为交换机的一部分:各个接口的 IP 和 MAC 地址将被忽略。
示例:三个物理 NIC + 桥接 = 四个交换机端口,桥接上有一个统一管理的 IP。
临时桥接创建
创建名为 bridge0 的桥接:
ip link add bridge0 type bridge
ip link set dev bridge0 up
使用 ip a 检查状态。只有添加活动端口(带链路的物理 NIC 或来自 VM 的 tap)时,接口才会 UP。
添加接口,例如 enp2s0:
ip link set enp2s0 master bridge0
移除:ip link set enp2s0 nomaster。支持 Wi-Fi 和单 NIC——主机通过桥接使用新的 MAC。
添加后网络会中断。获取 IP:
- DHCP:
dhclient -v bridge0 - 静态:
ip a add 172.16.5.2/24 dev bridge0 && ip route add default via 172.16.5.1 dev bridge0
桥接模式的 VM 将从主机网络获取 IP。
删除:ip link delete bridge0。接口恢复原状。重启后桥接消失。
通过 /etc/network/interfaces 进行永久配置
为实现持久化,编辑 /etc/network/interfaces 或 /etc/network/interfaces.d/ 中的文件。
virtbr0 的基本示例(静态 IP,默认无端口):
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
关键参数:
auto/iface:自动启动。inet static/dhcp/manual:IP 类型(manual 表示无 IP,手动添加)。bridge_ports none:空桥接;QEMU 动态添加 tap。或者指定 enp2s0 等。bridge_fd 0,bridge_maxwait 0:激活延迟(简单场景用 0)。bridge_hello 2,bridge_maxage 20:STP 的 BPDU。bridge_stp off:禁用生成树协议(用于测试 VM)。bridge_hw MAC:设置桥接 MAC 或从接口复制。
对于桥接中的物理 NIC,将其改为 manual(移除 dhcp)。
激活:systemctl restart networking.service。现有桥接不会自动删除——使用 ip link delete 或重启。使用 ip a 监控。
与 QEMU 的集成
使用桥接启动 VM:
-net nic,model=e1000e,macaddr=52:54:00:a9:2b:c7 -net bridge,br=bridge0
解析:
-net nic,...:在客户机 OS 中模拟 NIC(e1000e 为英特尔千兆;多 VM 用唯一 MAC)。-net bridge,br=bridge0:在主机上创建 tap,添加到桥接,用虚拟补丁线连接。
桥接中忽略 tap 的 MAC。没有 br=bridge0,VM 无法启动。
关键要点
- bridge-utils(apt install)提供的桥接为动态;networking 服务提供持久化。
- 只有活动端口时才 UP;用
ip a诊断。 - Wi-Fi/单 NIC:支持,主机通过桥接工作。
- STP 关闭以简化;hello/maxage 为默认值。
- QEMU 自动添加 tap;VM 中使用唯一 MAC。
— Editorial Team
暂无评论。