技术文章2026 年 5 月 4 日约 2.8 分钟

KVM 网络配置:Linux Bridge 与虚拟机互通

使用 Linux Bridge 将 KVM 虚拟机接入物理网络,并说明桥接、NAT 和 VLAN 的选择。

libvirt 默认的 default 网络是 NAT:虚拟机共享宿主机的 IP 上网,外部访问不到。开发环境够用,但生产环境通常要让虚拟机直接出现在局域网里,这时候就要用 Linux Bridge。这篇文章把三种模式的区别和配置讲透。

#三种模式怎么选

  • NAT(default 网络):虚拟机和宿主机之间做地址转换。优点:零配置、安全隔离;缺点:外部连不进来,需要再配端口转发,且性能有损耗。适合测试、隔离环境。
  • Linux Bridge:在宿主机上做一个二层交换机,虚拟机网卡直接桥到物理网卡上,虚拟机拿到的是局域网 IP,外部可以直接访问。生产环境的最常见选择。
  • macvtap:桥接的轻量变体,性能好,但宿主机和虚拟机之间不能直接通信(这是它最大的坑),且依赖物理网卡支持。不常用。

#用 NetworkManager 建桥

RHEL/Rocky 上 NetworkManager 是网络管家,用 nmcli 建桥最稳:

bash
# 查看当前网卡
nmcli device status

# 创建桥 br0
sudo nmcli connection add type bridge ifname br0 con-name br0

# 把物理网卡 eno1 挂到桥下(eno1 不再有独立 IP)
sudo nmcli connection add type ethernet ifname eno1 master br0 con-name eno1-bridge

# 给桥配 IP(原来的静态 IP 挪到这里)
sudo nmcli connection modify br0 ipv4.method manual ipv4.addresses 192.168.1.10/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1

sudo nmcli connection up br0
ip -br link show br0

物理网卡 eno1 被桥接管后,它自己不再有 IP,IP 落在 br0 上。宿主机和虚拟机都挂在同一个二层,虚拟机配置同网段 IP 即可互通。

改动前务必保证有带外通道:远程服务器一旦把网卡配置搞坏,SSH 直接断。所以:保留第二个会话、把配置写在脚本里随时能回滚、或者用控制台 VNC。我见过太多人远程配桥把自己锁在服务器外。

#虚拟机接桥:XML 或 virt-install

xml
<interface type='bridge'>
  <source bridge='br0'/>
  <model type='virtio'/>
</interface>

用 virt-install 创建时直接指定:

bash
sudo virt-install --name web01 ... --network bridge=br0,model=virtio ...

已有虚拟机修改网络(离线操作):

bash
virsh shutdown web01
virsh edit web01        # 把 <interface type='network'> 改成 bridge + br0
virsh start web01

#验证与排障

bash
# 桥是否正常
ip -br link show br0
bridge link show

# 宿主机 ↔ 虚拟机互通
ping <vm-ip>

# 虚拟机是否能出外网(网关转发是否正常)
ssh <vm-ip> 'ping -c1 223.5.5.5'

# 跨 VLAN:如果物理交换机上要打 tag
# br0 下建 VLAN 子接口再桥接(NetworkManager 里 type=vlan)

常见问题:

  • 虚拟机起不来,报 bridge br0: no such device:桥没建好或 NetworkManager 没生效,先 nmcli connection show br0。
  • 桥建好了但虚拟机 DHCP 拿不到 IP:物理交换机端口可能开了 port-security 或只允许单 MAC;或者 DHCP 服务器不认识新 MAC。
  • 宿主机 ping 不通虚拟机、虚拟机却能出网:检查防火墙(firewalld)里 FORWARD 链,桥接流量默认可能被拦。

#一点经验

Linux Bridge 的方案里,物理网卡本身不设 IP、IP 全在桥上,这是和「双网卡叠加」最大的区别,很多人卡在这里。另外生产环境如果有多网卡/多 VLAN,建议每类流量(管理、存储、业务)一个独立桥,别全塞进一个 br0——隔离和排障都会轻松很多。

写于 2026 年 5 月 4 日

栏目
技术文章
约
2.8 分钟
字数
1.8K
阅读
207

本文为原创记录,转载请注明出处。如果这篇替你省了时间,欢迎留言说说你踩到的坑。

同题 · related

留言 · remarks

00 条

还没有留言,来说点什么吧。

KVM 网络配置:Linux Bridge 与虚拟机互通 · LXH·BLOG