最准的linux bonding状态检查方式是直接读取/proc/net/bonding/bond0,该文件由内核bonding驱动实时生成,包含bonding mode、mii status、active slave等关键字段,不依赖用户态工具;若文件不存在,需先确认bonding模块是否加载及bond0接口是否已启用。

直接看 /proc/net/bonding/ 是最准的
Linux 的 bonding 驱动会把所有聚合接口的实时状态写进 /proc/net/bonding/ 下的文件,比如 bond0 就对应 /proc/net/bonding/bond0。这个路径输出是内核原生数据,不依赖用户态工具或 NetworkManager 状态,只要 bonding 模块加载、bond 接口 up 了,就一定有内容。
执行:cat /proc/net/bonding/bond0
你会看到类似这样的关键字段:
-
Bonding Mode:显示实际生效的 mode(如802.3ad或active-backup) -
MII Status:每个 slave 接口的链路物理层状态(up/down) -
Link Failure Count:该 slave 历史断连次数,非零值说明曾出过链路抖动 -
Active Slave:当前真正转发流量的接口(mode=1 下尤其重要)
如果报错 No such file or directory,说明要么没加载 bonding 模块(lsmod | grep bonding),要么 bond 接口根本没启用(ip link show bond0 看是否存在且 state UP)。
ip link show bond0 能快速确认聚合接口是否存活
这个命令不关心内部 slave,只告诉你 bond0 这个逻辑设备本身的状态。它比 ifconfig 更可靠,因为 ifconfig 已被弃用,且对 bonding 接口支持不全。
重点看三行:
- 接口名后括号里的
state UP:表示内核已启用该 bond 设备 -
link/ether后的 MAC 地址:正常情况下应为某个 slave 的 MAC(mode=1)或由 bonding 自生成(mode=4) - 末尾的
link-layer bond:这是 bonding 接口的明确标识,普通以太网卡不会出现这个词
如果只看到 state DOWN,即使配置文件写对了,也说明 ifup bond0 或 nmcli connection up bond0 没成功执行,或者 slave 网卡还没 up。
用 ethtool bond0 查 LACP 协商细节
当使用 mode=4(802.3ad/LACP)时,ethtool 是唯一能告诉你“LACP 是否真通了”的工具。它会显示对端交换机是否回应、聚合组 ID 是否匹配、端口是否进入 Agg 状态。
运行:ethtool bond0
重点关注:
-
Bond mode:应为802.3ad,不是balance-xor或其他别名 -
Link partner detected:必须是yes,否则 LACP 握手失败 -
Slave Interface: eth0下的Link detected:和MII Status::两个都得是up - 没有 “LACPDU timeout” 或 “No LACPDU received” 类错误信息
注意:ethtool 对 mode=1 不显示 LACP 相关字段,别误以为它坏了——mode=1 根本不用 LACP。
nmcli dev 只反映 NetworkManager 管理视角
如果你用 nmcli 配置的 bond(比如 nmcli connection add type bond ...),那 nmcli dev 会列出 bond0 并标出 connected 状态。但它不验证底层 bonding 驱动是否真在工作。
常见误导点:
- 显示
connected,但cat /proc/net/bonding/bond0报错:说明 NM 认为连上了,其实内核 bonding 没起来(比如 slave 网卡配置漏了MASTER=bond0) - 显示
disconnected,但ip link show bond0是 UP:说明 NM 没接管这个接口(可能是手动用ifup启的,或配置里写了managed=no) -
nmcli dev不显示 slave 网卡状态,只显示它们是unmanaged或disconnected,不能代替/proc/net/bonding/
真正可靠的聚合状态,永远以 /proc/net/bonding/ 为准;其余命令只是辅助定位哪一层出了问题。











