Linux中配置桥接网卡给KVM虚拟化使用,核心是创建数据链路层网桥(如br0)并绑定物理网卡,使虚拟机与宿主机同网段、获独立IP、直连局域网;必须禁用默认NAT网桥virbr0,推荐用nmcli持久化配置:先建桥br0并配静态IP,再将物理网卡设为slave,最后在虚拟机XML中指定。

Linux 中配置桥接网卡给虚拟化(如 KVM/QEMU、libvirt 或容器)使用,核心是创建一个工作在数据链路层的网桥(bridge),把物理网卡“挂”上去,再让虚拟机或容器的虚拟网卡接入该网桥。这样虚拟设备就和宿主机处于同一局域网段,能直接获取独立 IP、访问外网、被其他设备访问。
确认系统环境与工具
现代主流发行版(RHEL8+/CentOS Stream/Fedora/Ubuntu 20.04+)默认使用 NetworkManager 管理网络,推荐用 nmcli 配置,安全、可回滚、不易中断网络。若系统未启用 NetworkManager(如某些最小化安装或服务器场景),可改用 iproute2 + systemd-networkd 或传统 bridge-utils,但操作风险更高。
- 检查 NetworkManager 是否运行:
systemctl is-active NetworkManager - 查看物理网卡名:
ip -br link | grep UP(常见如 eno1、ens33、enp0s3) - 确保物理网卡当前未被其他连接占用(如 “Wired connection 1”)
用 nmcli 创建持久化桥接(推荐)
以物理网卡 eno1 为例,创建名为 br0 的桥接接口,并分配静态 IP(也可设为 DHCP):
- 新建桥接连接:
sudo nmcli con add type bridge ifname br0 con-name br0 - 设置 IPv4 地址(例如静态):
sudo nmcli con mod br0 ipv4.addresses 192.168.1.100/24
同时设网关:sudo nmcli con mod br0 ipv4.gateway 192.168.1.1
禁用 DHCP:sudo nmcli con mod br0 ipv4.method manual - 将物理网卡绑定为桥接从属:
sudo nmcli con add type bridge-slave ifname eno1 master br0 - 停用原物理网卡连接(如有):
sudo nmcli con down "Wired connection 1" - 激活新桥接:
sudo nmcli con up br0
完成后,ip a 应显示 br0 持有 IP,eno1 状态为 DOWN 或 MASTER,且无独立 IP。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
为虚拟机配置桥接网络(libvirt/KVM)
桥接接口建好后,在虚拟机定义中指定使用它即可。无需额外安装组件,libvirt 原生支持:
- 编辑虚拟机 XML:
virsh edit vm-name - 找到
段,改为:
保存退出,重启虚拟机。KVM 会自动将虚拟网卡接入 br0,虚拟机启动后可像物理机一样通过 DHCP 获取 IP 或配置静态地址(需与宿主机同网段)。
注意事项与常见问题
桥接不是万能的,实际使用中需注意几个关键点:
- 无线网卡慎用桥接:多数 Wi-Fi 驱动不支持二层桥接,容易导致断连或无法获取 IP;建议仅用于有线网卡
- DNS 和路由继承:桥接后虚拟机走的是物理网络的 DHCP 分配(含 DNS、网关),无需在宿主机上开启转发或 iptables NAT
-
防火墙放行:若启用了 firewalld 或 ufw,确保
br0所在 zone 允许相关流量(如 public zone 默认已开放) - 避免 IP 冲突:宿主机和虚拟机不能配置相同 IP;静态分配时请预留地址池(如路由器 DHCP 范围设为 192.168.1.10–192.168.1.99,宿主机用 .100,虚拟机用 .101+.)










