网桥是KVM虚拟机实现高性能网络的关键中间层,工作在二层,将物理网卡和虚拟机TAP接口作为端口接入同一网络段,绕过NAT或用户态转发以降低延迟、提升吞吐;br0本质是虚拟交换机而非宿主机IP接口。

明确网桥在KVM中的角色
网桥(bridge)是KVM虚拟机实现高性能网络的关键中间层。它工作在二层,让虚拟机的TAP接口直接接入物理网络段,绕过NAT或用户态转发,降低延迟、提升吞吐。此时br0不是“给宿主机用的IP接口”,而是作为交换机——物理网卡(如eno1)和虚拟机vNIC都成为它的端口。
创建带生产参数的网桥连接
使用nmcli创建时需同步配置STP行为与老化策略,避免环路并提升收敛速度:
- 新建网桥连接:`sudo nmcli connection add type bridge con-name br0 ifname br0`
- 禁用STP(局域网无环拓扑可选):`sudo nmcli connection modify br0 bridge.stp no`
- 调优MAC表老化时间:`sudo nmcli connection modify br0 bridge.ageing-time 300`(默认300秒,适合稳定环境)
- 设置hello间隔与最大生存期:`sudo nmcli connection modify br0 bridge.hello-time 2 bridge.max-age 20`
绑定物理网卡并释放其IP配置
物理接口必须从原连接中解绑,并作为slave加入网桥,同时清空其IP地址,否则会引发路由冲突:
- 查出当前有线连接名:`nmcli con show --active | grep ethernet`(常见为"Wired connection 1")
- 将物理网卡设为网桥从属:`sudo nmcli connection add type bridge-slave ifname eno1 master br0`
- 关闭原连接,防止IP重叠:`sudo nmcli connection down "Wired connection 1"`
- 为br0配置静态IP(若宿主机需管理地址):`sudo nmcli connection modify br0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8" ipv4.method manual`
启用网桥并验证KVM可用性
启动后需确认桥接结构完整,且libvirt能识别该设备:
- 激活网桥连接:`sudo nmcli connection up br0`
- 检查桥状态:`ip link show master br0`(应列出eno1);`bridge link show`(确认port状态UP)
- 查看libvirt是否可见:`virsh net-list --all`,若未自动注册,可手动定义一个network XML指向br0
-
虚拟机XML中指定桥接模式:
<interface type='bridge'><source network='br0'/></interface>(注意:此处source类型为bridge,非network;若用network类型,则需先用virsh net-define注册br0为libvirt network)



















