bonding mode是Linux网卡绑定中定义流量分发与故障切换行为的核心参数,共7种(mode=0~6),如mode=1为主备切换、mode=4需交换机LACP协商成功、mode=0要求交换机端口聚合,否则引发ARP混乱或链路不可用。

什么是bonding mode?别直接抄mode=1
Linux bonding支持7种模式(mode=0到mode=6),每种行为完全不同,不能只写mode=1就完事。比如mode=1(active-backup)只用主网卡,故障时才切;而mode=4(802.3ad)要求交换机必须开启LACP,否则bond接口起不来,且所有从网卡状态会显示DOWN——这不是配置失败,是协议协商未通过。
常见误用场景:
- 在普通家用路由器后配
mode=4,结果bond0始终无IP、cat /proc/net/bonding/bond0里显示LACP status: None - 用
mode=0(balance-rr)但没做交换机端口聚合,导致ARP响应混乱、连接断续 - 生产环境选
mode=5(balance-tlb)却忘了确认内核是否支持(CentOS 7.6+默认支持,但老内核可能缺模块)
怎么加载bonding模块并确认可用
CentOS 7默认不自动加载bonding模块,必须显式启用,否则modprobe bonding后仍可能报Module bonding not found。
执行以下操作:
- 运行
lsmod | grep bonding,无输出说明未加载 - 手动加载:
modprobe bonding,再检查lsmod | grep bonding是否出现 - 永久生效:写入
/etc/modprobe.d/bonding.conf,内容为alias bond0 bonding(注意不是install bonding /bin/true那种禁用写法) - 验证模块参数支持:
modinfo bonding | grep -A 5 "mode",确认列出的mode值范围(CentOS 7.9内核通常支持0–6)
配置文件里哪些字段绝对不能错
/etc/sysconfig/network-scripts/ifcfg-bond0和两个从接口(如ifcfg-em1、ifcfg-em2)的字段必须严格匹配,否则systemctl restart network会静默失败,ip link show看不到bond0。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
关键字段对照:
-
bond0中必须含:DEVICE=bond0、TYPE=Bond(不是Ethernet)、BONDING_MASTER=yes、BONDING_OPTS="mode=1 miimon=100"(miimon单位是毫秒,低于100可能误判链路抖动) - 从接口中必须含:
MASTER=bond0、SLAVE=yes、BOOTPROTO=none(不是static或dhcp)、ONBOOT=yes - 所有接口的
DEVICE名必须与实际ip link show输出一致(如ens33而非eth0),大小写敏感
启动后怎么快速验证是否真生效
别只看ip addr show bond0有IP就以为成功——很多情况bond0能获取IP,但从接口仍处于NO-CARRIER或LOWER_UP但无流量。
必须检查三处:
- 运行
cat /proc/net/bonding/bond0,确认Aggregator ID存在(mode=4)、或Currently Active Slave非空(mode=1)、或Slave Interface两行都标Up - 执行
ethtool bond0,看Speed是否为两倍单网卡(mode=0/2/4下应体现聚合带宽) - 拔掉一根网线,等3秒后立刻跑
ping -c 3 192.168.1.1,若不通,说明miimon设太大或arp_ip_target没配(mode=1下建议加arp_ip_target=192.168.1.1提升故障检测速度)
最常被忽略的是:bond接口UP不代表链路真正聚合,/proc/net/bonding/里的细节才是唯一可信依据。

















