Linux配置Bond模式4必须同时满足内核支持、交换机LACP启用和配置严格对齐,否则Aggregator ID显示N/A或State为standby;需验证bonding模块加载、mode=4可写、BONDING_OPTS含miimon=100/lacp_rate=fast/xmit_hash_policy=layer3+4、从属网卡清空IP并禁用NetworkManager,且Aggregator ID与Partner Key须匹配交换机配置。

Linux配置Bond模式4(即mode=4,802.3ad/LACP)必须满足“内核支持 + 交换机LACP启用 + 配置严格对齐”三者同时成立,缺一不可;否则cat /proc/net/bonding/bond0里会显示Aggregator ID: N/A或State: standby,流量根本不会聚合。
确认系统已加载bonding模块且支持mode=4
很多旧内核(如RHEL 7.2之前)虽带bonding模块,但默认不启用LACP协商逻辑。先验证:
-
modprobe bonding后执行lsmod | grep bonding,确保模块已载入 - 检查
/sys/class/net/bond0/bonding/mode是否允许写入802.3ad(不是只读) - RHEL/CentOS 7.9+、Ubuntu 18.04+ 默认支持;若用
uname -r查到是3.10.0-327或更老,需升级内核或打补丁
配置文件里BONDING_OPTS参数不能漏关键项
mode=4不是设了就通——它依赖LACP报文交互,BONDING_OPTS里必须显式指定协商细节,否则驱动降级为mode=0行为:
-
miimon=100:链路检测间隔,必须≤100ms(LACP超时默认为3秒,太长会导致切换迟钝) -
lacp_rate=fast:强制以1秒周期发LACPDU(默认slow是30秒,交换机收不到会拒绝聚合) -
xmit_hash_policy=layer3+4:跨网段/多端口服务必备,否则TCP流始终走同一物理口(layer2只看MAC,无法区分不同连接) - 不要写
mode=802.3ad——内核只认mode=4,写错会导致ifup bond0静默失败
从属网卡配置必须清空IP且禁用NetworkManager
只要ifcfg-enp1s0里残留IPADDR或BOOTPROTO=dhcp,systemctl restart network就会报错并跳过绑定;而NetworkManager会劫持接口状态,导致bond0始终State: down:
- 每个从属网卡配置中必须含:
BOOTPROTO=none、MASTER=bond0、SLAVE=yes、ONBOOT=yes - 执行
systemctl stop NetworkManager && systemctl disable NetworkManager(CentOS/RHEL系必须关) - Ubuntu 20.04+ 若用Netplan,不能混用
ifconfig风格配置,需统一写renderer: networkd并禁用NM
验证时重点看/aggregator和partner key是否匹配
运行cat /proc/net/bonding/bond0后,关键字段不是“Up”,而是这两行:
-
Aggregator ID: 1:表示本机已成功生成聚合组ID -
Partner Key: 1:必须与交换机show lacp neighbor输出的key值一致(常见错误:交换机配了channel-group 1 mode active但没开lacp system-priority,导致key为0) - 若看到
State: standby且Partner Key: 0,说明LACP握手失败——优先查交换机日志,而非Linux配置
真正跑通前,别急着改应用监听地址;mode=4的坑全在两端协商细节里,物理连通≠逻辑聚合。


















