Linux上KVM虚拟机直连物理网络必须手动创建Linux网桥(如br0)并绑定物理网卡,禁用virbr0;因virbr0是NAT网桥、不连物理网卡、仅提供192.168.122.x私网地址且含SNAT规则,无法实现外网直连,误配会导致宿主机断网或虚拟机不可达。

Linux 上 KVM 虚拟机要直连物理网络,**必须手动创建 Linux 网桥(如 br0)并绑定物理网卡,不能复用 libvirt 默认的 virbr0**。配错一步,虚拟机就上不了网,宿主机还可能 SSH 断连。
为什么 virbr0 不能当桥接用
virbr0 是 libvirt 自动创建的 NAT 网桥,自带 dnsmasq 和 iptables SNAT 规则,只提供 192.168.122.x 私网地址。它不连接任何物理网卡,根本不是桥接——外网无法直连虚拟机,宿主机也拿不到真实局域网 IP。
常见误操作及后果:
- 直接给
virbr0添加物理口(如brctl addif virbr0 ens33):报错Device or resource busy或导致宿主机丢包 - 修改
virbr0的 IP 并设为192.168.1.100:路由混乱,SSH 会突然中断 - 查证方式:
brctl show输出中,virbr0下没有物理接口名(如ens33或enp0s3)
手动建桥三步不能少(ip + brctl 方式)
这是最底层、最可控的方式,适合脚本部署或快速验证。注意顺序和依赖:
- 先清空物理网卡 IP:
ip addr flush dev ens33(否则addif会失败) - 再建桥并启用:
ip link add name br0 type bridge→ip link set br0 up - 把物理口加进去:
ip link set ens33 master br0→ip link set ens33 up - 最后给
br0配 IP(宿主机管理用):ip addr add 192.168.1.100/24 dev br0 - 关键遗漏点:物理网卡(
ens33)自身不能再配 IP,否则与br0冲突;配置文件中要删掉IPADDR、GATEWAY,只留BRIDGE=br0和ONBOOT=yes
RHEL/CentOS 用 nmcli 更稳,但顺序不能错
NetworkManager 在桌面或混合环境中更可靠,但若旧连接没删干净,它会反复抢回物理口控制权,导致桥接失效。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 先删旧连接:
nmcli con delete ens33(不是down,是彻底删除) - 再建桥主连接:
nmcli con add type bridge con-name br0 ifname br0 - 配桥参数(DHCP 示例):
nmcli con modify br0 ipv4.method auto - 加从属口:
nmcli con add type bridge-slave con-name br0-slave-ens33 ifname ens33 master br0 - 启用:
nmcli con up br0 - 验证:
nmcli device show br0应显示GENERAL.STATE: activated,且bridge-slave-ens33状态为 connected
虚拟机启动时指定桥接,别漏了 <source bridge='br0'/>
libvirt XML 配置里,网卡段必须明确指向你新建的桥,而不是默认的 virbr0。否则即使桥建好了,虚拟机还是走 NAT。
示例片段(编辑 virsh edit vm01):
<interface type='bridge'> <source bridge='br0'/> <model type='virtio'/> </interface>
常见错误:
- 写成
<source network='default'/>:仍走virbr0 - 忘记重启虚拟机:
virsh destroy vm01 && virsh start vm01,热插拔网卡不生效 - 虚拟机内没配同网段 IP(如宿主机是
192.168.1.100/24,虚拟机就得设192.168.1.101/24并指定网关)
最易被忽略的是物理网卡是否真的“脱离”了 IP 管理——哪怕只剩一个 inet6 fe80::/64,也可能干扰桥接转发。执行 ip -br addr show ens33,确认输出里只有 UP 状态,没有 inet 行。

















