Linux双网卡绑定关键在mode选择与配套配置:mode=1(active-backup)最稳定,无需交换机配合,主备切换快;mode=6(balance-alb)需驱动支持ethtool且须写BONDING_OPTS到ifcfg-bond0;mode=4(802.3ad)需交换机启用LACP并严格配对,否则bond0无法正常负载均衡。

Linux双网卡绑定不是“配了就能用”,关键看 mode 选对没、交换机配没配、驱动支不支持——错一个,bond0 起得来但流量不走、故障不切换、甚至丢包不断连。
mode=1(active-backup)最稳,但别指望负载均衡
这是唯一不需要交换机配合、99% 网卡都支持的模式。主网卡干活,备网卡全程静默监听链路状态,一旦 miimon=100 检测到主链路断开(比如拔网线),300ms 内自动切到备卡,业务几乎无感。
-
MASTER=bond0和SLAVE=yes必须写在物理网卡配置里(如ifcfg-eth0),不能只靠ifenslave命令临时加 - 网关只能配在
bond0上,物理网卡的GATEWAY字段必须删掉或设为none,否则路由冲突 - VMware 测试时务必用「断开网络连接」模拟故障,
ifdown eth0会绕过 bonding 的状态机,导致 failover 不触发
mode=6(balance-alb)能负载均衡,但驱动和 ethtool 得过关
它不依赖交换机聚合,输入输出都做负载分发,理论上吞吐翻倍。但前提是网卡驱动支持 ethtool 修改 MAC 地址(多数千兆 Intel 卡 OK,老 Realtek 或虚拟化网卡常失败)。
- 检查支持性:
ethtool eth0 | grep -i "perman" && ethtool -s eth0 wol d不报错才算基本过关 -
BONDING_OPTS="miimon=100 mode=6"必须直接写进ifcfg-bond0,CentOS 7+ 不再读/etc/modprobe.d/里的 alias 配置 - 如果
cat /proc/net/bonding/bond0显示两块卡都是Active,说明生效;若只有一块是Active,大概率是驱动不认mode=6,降级回mode=1更实在
mode=4(802.3ad / LACP)带宽翻倍,但交换机必须配且配对
这是真·链路聚合,需要交换机端口明确加入同一个 LAG 组,并启用 LACP 协议。服务器侧配错一点,bond0 就起不来,或者起得来但只有单卡跑满。
- 确认交换机已开启 LACP:
show etherchannel summary(Cisco)或对应厂商命令,看到UP和LACP标识才算通 - 服务器 side 必须用
mode=4+xmit_hash_policy=layer2+3(避免同源同目的流量全压在一块卡上) -
ifconfig bond0查看 MTU 是否和物理口一致,LACP 下 MTU 不一致会导致大包分片异常,表现为间歇性丢包
配置后必查的三个地方:/proc/net/bonding/bond0、ip link、syslog
很多人以为 ifconfig bond0 显示 UP 就完事了,其实最关键的诊断信息全藏在这三处。
-
cat /proc/net/bonding/bond0:看MII Status是不是都up,Primary Slave是哪块,当前Active的又是哪块 -
ip link show bond0:确认state UP且没有NO-CARRIER,同时检查master bond0是否出现在两个物理口的输出里 -
journalctl -u network --since "1 hour ago" | grep -i bond:常见错误如Device bond0 does not seem to be present(模块没加载)、Failed to enslave eth0(物理口还在 DHCP 或有 IP)都直接暴露在这里
真正麻烦的不是配置步骤多,而是 bonding 的状态机在后台静默运行——它不报错,但也不按你想的那样转发流量。盯住 /proc/net/bonding/bond0 里的实时状态,比反复重启 network 服务有用得多。


















