Linux双网卡绑定需先加载bonding模块并确认内核支持的mode,再据需求选mode=1(主备高可用)、mode=4(LACP需交换机配合)或mode=6(ALB免交换机但依赖ethtool速率上报)。

你需要让Linux服务器同时利用两块物理网卡提升吞吐或避免单点故障,而不是只靠一块网卡硬扛流量或等待它突然宕机导致业务中断。这要求你明确区分“要带宽”还是“要活命”,再选对应模式——配错mode,bond0可能根本起不来,或者起得来却压根不走第二块网卡。
确认内核支持并加载bonding模块
先检查系统是否已加载bonding驱动:lsmod | grep bonding。若无输出,说明模块未加载,后续所有配置都无效。
手动加载:modprobe bonding。这一步必须成功,否则下一步配置bond0会失败。
查看当前内核支持哪些mode:modinfo bonding | grep -A 5 "supported modes"。重点关注mode=4是否标注requires LACP support、mode=6是否注明requires ethtool link speed reporting——【这两处决定你能不能用LACP或ALB】。
写入开机自动加载:echo "bonding" >> /etc/modules(Debian/Ubuntu)或echo "bonding" > /etc/sysconfig/modules/bonding.modules(RHEL/CentOS),并chmod 755该文件。
配置mode=1主备高可用(最稳首选)
适用场景:数据库、核心API服务等不能容忍网络中断的系统,对带宽无额外要求。
第一步:创建bond0主配置文件:vi /etc/sysconfig/network-scripts/ifcfg-bond0,写入以下内容:
DEVICE=bond0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
ONBOOT=yes
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
第二步:编辑两块物理网卡配置,例如ens33和ens37。分别执行:vi /etc/sysconfig/network-scripts/ifcfg-ens33,内容为:
DEVICE=ens33
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
第三步:确保其中一块设为主网卡,避免切换时ARP响应延迟。在ifcfg-bond0中追加PRIMARY=ens33(或你指定的主接口名)。
第四步:重启网络服务:systemctl restart network(RHEL/CentOS)或sudo ifdown bond0 && sudo ifup bond0(部分发行版需手动启停)。
配置mode=4 802.3ad/LACP聚合(真增带宽)
方法一:交换机已启用LACP且端口配置一致
修改BONDING_OPTS为:"mode=4 miimon=100 lacp_rate=1 xmit_hash_policy=layer3+4"。lacp_rate=1表示快速协商(每1秒),xmit_hash_policy=layer3+4能更好分散不同连接的流量。
方法二:验证交换机侧是否匹配
拔掉一根网线后,立刻执行cat /proc/net/bonding/bond0。若看到Aggregator ID: N/A或State: down,不是Linux配错了,而是交换机端没开LACP、或聚合组ID不一致、或速率/双工不匹配——【此时Linux配置再对也起不来】。
方法三:强制指定聚合组
在BONDING_OPTS中加入ad_actor_sys_prio=65535 ad_user_port_key=1,确保与交换机配置完全一致。这个值必须双方相同,否则LACP握手失败。
配置mode=6 balance-alb免交换机负载(收发双向)
这一步操作起来很简单,直接把BONDING_OPTS改成"mode=6 miimon=100"即可,无需交换机配合。
但注意:该模式依赖网卡驱动通过ethtool准确上报链路速率。如果用的是VMware虚拟网卡、某些旧型号Realtek或某些云平台弹性网卡,ethtool eth0速度可能恒为0,导致流量全部压到一块卡上——【此时看似绑了,实则单卡跑满,另一张闲置】。
验证方式:运行ethtool bond0看Speed是否显示为两卡之和;再执行cat /proc/net/bonding/bond0,观察两个Slave Interface的MII Status是否都为up,且Receive distribution字段有数值变化。
执行nmcli connection reload && nmcli connection up bond0强制重载连接(NetworkManager启用时必须走此路径,否则配置不生效)。


















