Linux下用Bridge让虚拟机联网,是将虚拟网卡与物理网卡桥接到同一内核级虚拟交换机br0,使虚拟机与宿主机同处一个二层网络,直接获取局域网IP并互通。

在 Linux 环境下用 Bridge 让虚拟机联网,核心是让虚拟机的虚拟网卡(如 vnet0、tun0 或 QEMU 的 tap 设备)接入一个内核级虚拟交换机(即 bridge),再把物理网卡(如 enp0s3)也桥接到同一设备上。这样虚拟机就和宿主机处于同一二层网络,能直接获取局域网 IP、访问外网、被其他设备访问——效果等同于插了一根网线到物理交换机。
确认并加载 bridge 内核支持
Bridge 功能由内核模块 bridge 提供,多数现代发行版已默认启用,但仍建议检查:
- 运行
lsmod | grep bridge,若无输出则需手动加载:sudo modprobe bridge - 确保
brctl或ip link工具可用:apt install bridge-utils(Debian/Ubuntu)或yum install bridge-utils(RHEL/CentOS)
创建并配置持久化网桥(推荐生产环境)
临时命令(如 ip link add br0 type bridge)重启即失效,实际部署应写入系统网络配置。以主流方式为例:
-
Debian/Ubuntu(使用 /etc/network/interfaces):注释掉原物理接口(如
enp0s3)的iface enp0s3 inet dhcp段,添加:
auto br0
iface br0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
bridge_ports enp0s3
bridge_stp off
bridge_fd 0
bridge_maxwait 0
-
Ubuntu 18.04+(使用 Netplan):编辑
/etc/netplan/01-network-manager-all.yaml,内容类似:
network:
version: 2
renderer: networkd
bridges:
br0:
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
parameters:
stp: false
forward-delay: 0
interfaces: [enp0s3]
- 保存后执行
sudo netplan apply(Netplan)或sudo systemctl restart networking(interfaces)生效
虚拟机侧适配桥接模式
不同虚拟化平台设置略有差异,但本质都是将虚拟网卡“挂到 br0 上”:
-
QEMU/KVM(virt-manager):编辑虚拟机网络,选择“桥接设备”,源名称填
br0,设备模型保持默认(如virtio) -
VirtualBox:设置 → 网络 → 适配器1 → 连接方式选“桥接网卡”,界面名称选
br0(非物理网卡名) -
VMware Workstation:虚拟网络编辑器中新建“桥接模式”网络,并指定绑定至
br0;虚拟机设置中选择该网络
启动虚拟机后,在其内部配置 IP(DHCP 或静态),确保与宿主机在同一子网(如 192.168.1.x/24),即可互通。
验证与排错要点
常见问题往往出在链路层连通性或地址冲突:
- 运行
bridge link或brctl show,确认物理网卡和虚拟网卡(如vnet0)都出现在br0的 port 列表中 - 检查物理网卡是否已清空 IP:
ip addr show enp0s3应无inet地址(IP 已交给br0) - 在虚拟机里执行
ip link和ip addr,确认网卡 UP 且有合法 IP;用ping 192.168.1.100(宿主机 br0 地址)测试二层连通 - 若无法上网,检查宿主机是否禁用了 IP 转发(
sysctl net.ipv4.ip_forward应为 1),但桥接模式通常无需开启转发——它工作在二层


















