Linux搭建软网桥实现虚拟机桥接的核心是让虚拟机通过内核级bridge直接接入物理网络,获得与宿主机同网段的独立IP;需先确认物理网卡及网络参数,再用nmcli创建并持久化br0网桥、绑定物理网卡、配置同网段地址,最后在KVM中指定bridge=br0,并验证双向连通性与外网访问。

Linux 搭建软网桥实现虚拟机网络桥接,核心是让虚拟机通过内核级虚拟交换机(bridge)直接接入物理网络,获得与宿主机同网段的独立 IP,从而像真实物理设备一样通信。关键不在于“装什么工具”,而在于“桥接谁、怎么配、怎么连”。
确认物理网卡和网络环境
先摸清宿主机当前用的是哪块网卡、IP 怎么分的:
- 运行 ip -br link show | grep UP 查看活跃网卡(如 enp0s3、ens33、wlp2s0)
- 运行 ip route | grep default 确认默认网关(如 192.168.1.1)
- 运行 nmcli dev show | grep IP4.ADDRESS 或 hostname -I 查看宿主机 IPv4 地址(如 192.168.1.105)
- 子网掩码通常为 255.255.255.0,对应 CIDR 表示为 /24
创建并启用持久化网桥(推荐方式)
以 CentOS/RHEL 或较新 Ubuntu(使用 NetworkManager)为例,用 nmcli 创建可开机自启的网桥:
- 停用原物理连接:sudo nmcli con down "Wired connection 1"(名称依实际而定)
- 新建网桥接口:sudo nmcli con add type bridge ifname br0
- 将物理网卡(如 enp0s3)绑定为从属接口:sudo nmcli con add type bridge-slave ifname enp0s3 master br0
- 配置 br0 的 IPv4 参数(静态或 DHCP):sudo nmcli con mod br0 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8" ipv4.method manual
- 启用网桥:sudo nmcli con up br0
完成后执行 ip a show br0 应看到已分配地址且状态为 UP;bridge link show br0 应显示 enp0s3 已加入。
让虚拟机走网桥(KVM/QEMU 或 Libvirt 场景)
网桥建好后,虚拟机需明确使用它——不是靠“桥接模式”按钮,而是指定源为 bridge=br0:
- 新建虚拟机时用 virt-install:--network bridge=br0,model=virtio
- 已有虚拟机可编辑 XML:<interface type='bridge'><source bridge='br0'/><model type='virtio'/></interface>
- 确保虚拟机内网卡获取到同网段 IP(如 DHCP 分配 192.168.1.107,或手动配 static)
验证与收尾要点
配置完成不代表万事大吉,这几步必须验证:
- 虚拟机内 ping 宿主机 IP → 通
- 宿主机 ping 虚拟机 IP → 通
- 虚拟机 ping 外网域名(如 ping -c 3 baidu.com)→ 通
- 检查防火墙:若不通,临时关闭 sudo systemctl stop firewalld 或 ufw disable
- 确认物理网卡已无 IP(ip addr show enp0s3 不应有 inet 条目),所有流量经 br0 转发


















