创建桥接网卡
环境:
- 系统:AlmaLinux 9.7
- 网卡:enp0s31f6
- KVM:qemu-kvm 9.1.0
目标:
在物理网卡 enp0s31f6 的前提下,创建 br0,并且“不破坏、不掉线”物理主机当前网络
下面是「不中断网络」的标准做法,生产环境可直接用的方案。
不破坏网络 = 不动 IP、不动网关、不动 DNS、不强制 down 网卡
正确模型:
enp0s31f6 (无 IP,仅 slave)
│
└── br0 (继承原 enp0s31f6 的 IP / 网关 / DNS)
关键点:
- ❌ enp0s31f6 不再配置 IP
- ✅ br0 接管原有网络配置
- ✅ 使用 NetworkManager 热切换(不中断)
这是“保险步骤”,防止误操作
nmcli device show enp0s31f6
GENERAL.DEVICE: enp0s31f6
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 4C:ED:FB:6B:D7:F7
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: enp0s31f6
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.101.200/24
IP4.GATEWAY: 192.168.101.1
IP4.ROUTE[1]: dst = 192.168.101.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.101.1, mt = 100
IP4.DNS[1]: 223.5.5.5
IP4.DNS[2]: 223.6.6.6
IP6.GATEWAY: --
重点记住:
- IP4.ADDRESS
- IP4.GATEWAY
- IP4.DNS
整个过程不会断网
nmcli con add type bridge ifname br0 con-name br0
nmcli con add type ethernet ifname enp0s31f6 master br0 con-name br0-slave-enp0s31f6
⚠️ 注意:此时 enp0s31f6 仍然在线,不会断网
用刚才记录的信息替换
nmcli con modify br0 \
ipv4.method manual \
ipv4.addresses 192.168.101.200/24 \
ipv4.gateway 192.168.101.1 \
ipv4.dns "223.5.5.5 223.6.6.6"
nmcli con modify br0 ipv6.method disabled
nmcli con modify br0-slave-enp0s31f6 ipv4.method disabled
nmcli con modify br0-slave-enp0s31f6 ipv6.method disabled
nmcli con up br0
nmcli con up br0-slave-enp0s31f6
NetworkManager 会:
- 把 IP 从 enp0s31f6 转移到 br0
- 内核 bridge 热生效
- 连接不中断
查看 connection
nmcli con show
删除 connection(只删 connection,不删设备):
nmcli con delete enp0s31f6
nmcli con modify br0 connection.autoconnect yes
nmcli con modify br0-slave-enp0s31f6 connection.autoconnect yes
提高优先级:
nmcli con modify br0 connection.autoconnect-priority 10
nmcli con modify br0-slave-enp0s31f6 connection.autoconnect-priority 5
查看状态
nmcli device status
正确结果:
DEVICE TYPE STATE CONNECTION
br0 bridge connected br0
enp0s31f6 ethernet connected br0-slave-enp0s31f6
查看IP
ip addr
- ✅ IP 在 br0
- ✅ enp0s31f6 没有 IP
用命令创建虚拟机时:
--network bridge=br0
在 Cockpit 中:
- 进入指定的虚拟机控制台
- 网络接口 -> 编辑
- 接口类型: Bridge to LAN
- 源: br0
- ❌ 直接 down enp0s31f6
- ❌ 先删原连接再建 bridge
- ❌ IP 同时存在 enp0s31f6 和 br0
- ❌ 忘记设置 autoconnect
- ❌ SSH 远程操作却没留回滚方案
nmcli con down br0
nmcli con up enp0s31f6
或重启 NM:
systemctl restart NetworkManager