RHEL 10 bond/VLAN/bridge:nmcli 建得出来,但 slave 类型有坑
This content is not available in your language yet.
nmcli con add type bond|vlan|bridge 都能建出配置,但“配置存在”和“接口 UP”是两件事:bond 要 slave 先 up,bridge 的 slave 类型不对会一直 NO-CARRIER。本页在 393 上用 veth/dummy 做可清理的实测。
- 环境:PVE 393,RHEL 10.2;
- 设备:
veth0/veth1(bond)、dummy0(VLAN)、dummy1+veth2(bridge); - 测试后全部删除。
E3 记录:plans/content-expansion/evidence/rhel/rhel-bond-vlan/run.json(6 步,含 bond/VLAN/bridge 输出 sha256)。
- bond:先建
bond0,再把 slaveup,bond0才会 UP; - VLAN:
type vlan dev dummy0 id 100,ip -d link能看到vlan protocol 802.1Q id 100; - bridge:
dummy1作为bridge-slave不会激活,br0一直NO-CARRIER;换veth2后正常 forwarding。
sudo ip link add veth0 type veth peer name veth1sudo nmcli con add type bond ifname bond0 con-name bond0 \ mode active-backup ipv4.method manual ipv4.addresses 10.102.0.1/24sudo nmcli con add type bond-slave ifname veth0 master bond0sudo nmcli con add type bond-slave ifname veth1 master bond0sudo nmcli con up bond-slave-veth0sudo nmcli con up bond-slave-veth1sudo nmcli con up bond0$ ip -br a show bond0bond0 UP 10.102.0.1/24 ...$ sudo grep -E 'Bonding Mode|Active Slave|Slave Interface' /proc/net/bonding/bond0Bonding Mode: fault-tolerance (active-backup)Currently Active Slave: veth0Slave Interface: veth0Slave Interface: veth1只 con up bond0 而 slave 没 up,会看到 bond0 DOWN、Active Slave: None。
sudo nmcli con add type dummy ifname dummy0 con-name dummy0sudo nmcli con add type vlan ifname dummy0.100 con-name vlan100 \ dev dummy0 id 100 ipv4.method manual ipv4.addresses 10.100.0.1/24sudo nmcli con up vlan100$ ip -d link show dummy0.100 | head -210: dummy0.100@dummy0: <BROADCAST,NOARP,UP,LOWER_UP> ... vlan protocol 802.1Q id 100 <REORDER_HDR> ...VLAN 接口名 dummy0.100 只是命名习惯,真正生效的是 id 100。
bridge:dummy slave 不激活
Section titled “bridge:dummy slave 不激活”先建 bridge 和 dummy slave:
sudo nmcli con add type bridge ifname br0 con-name br0 \ ipv4.method manual ipv4.addresses 10.101.0.1/24sudo nmcli con add type dummy ifname dummy1 con-name dummy1sudo nmcli con add type bridge-slave ifname dummy1 master br0sudo nmcli con up br0结果:
$ ip -br a show br0br0 DOWN 10.101.0.1/24$ nmcli -f NAME,DEVICE,STATE con show | grep bridge-slavebridge-slave-dummy1 -- --bridge-slave-dummy1 没有 DEVICE/STATE,br0 一直 NO-CARRIER。换成 veth:
sudo ip link add veth2 type veth peer name veth3sudo ip link set veth2 upsudo ip link set veth3 upsudo nmcli con add type bridge-slave ifname veth2 master br0sudo nmcli con up bridge-slave-veth2sudo nmcli con up br0$ ip -br a show br0br0 UP 10.101.0.1/24 ...$ sudo bridge link show14: veth2@veth3: <...> mtu 1500 master br0 state forwarding priority 32 cost 100sudo nmcli con delete bond0 bond-slave-veth0 bond-slave-veth1 \ vlan100 dummy0 br0 bridge-slave-dummy1 bridge-slave-veth2 dummy1sudo ip link del veth0; sudo ip link del veth2sudo ip link del dummy0; sudo ip link del dummy1ip -br link | grep -E 'bond0|vlan100|br0|dummy|veth' || echo cleaned- bond slave 的 connection 先 up;
-
/proc/net/bonding/bond0有 Active Slave; - VLAN 的
id与ip -d link一致; - bridge slave 的 STATE 不是空;
-
bridge link show有 forwarding; - 实验设备/连接全部清理。
未实测与边界
Section titled “未实测与边界”- 未在真实双网卡上测试 bond(本次 veth);
- 未测试 LACP 802.3ad;
- 未测试 bridge 的 STP/VLAN filtering;
- 未测试 NetworkManager 重启后的持久化。
- RHEL NetworkManager keyfile — 连接落盘格式
- RHEL NetworkManager 双栈 — 地址/路由
- 官方:Configuring and managing networking