Linux双网卡Bonding需按mode权衡高可用与负载均衡:mode=1保连通、mode=4需LACP支持、mode=6免交换机配合;配置须稳定网卡命名、禁用从卡IP、验证链路及聚合状态。

先确认硬件与内核支持
确保两块网卡型号相近、驱动稳定,且内核已内置bonding模块(主流发行版默认启用)。运行以下命令验证:
- modprobe bonding —— 尝试加载模块(无报错即支持)
- lsmod | grep bonding —— 查看是否已载入
- cat /boot/config-$(uname -r) | grep CONFIG_BONDING —— 确认编译选项为m(模块)或y(内置)
选对模式:高可用与负载均衡的取舍逻辑
不同mode天然倾向不同目标,不能“一刀切”:
- mode=1(active-backup):仅主网卡发包,备卡待命;主卡断开后秒级切换MAC+IP。✅ 高可用强、免交换机配置;❌ 无带宽叠加、无负载分担。
- mode=4(802.3ad/LACP):收发双向负载均衡 + 故障隔离。✅ 真正的带宽聚合与容错;⚠️ 必须交换机启用LACP,且所有端口速率/双工/聚合组配置严格一致。
-
mode=6(balance-alb):发送按速率分配,接收靠ARP协商重定向。✅ 免交换机配合、收发都分摊、自带高可用;⚠️ 要求网卡支持
ethtool -s设置速率,部分老旧网卡不兼容。
若交换机不支持LACP,mode=6是最平衡的选择;若追求最大吞吐且可控交换机环境,mode=4是首选;仅需保连通、不求提速,mode=1最稳妥。
关键配置细节避坑
Bonding失效常因细节疏漏,而非逻辑错误:
-
网卡命名必须稳定:避免
eth0/eth1随启动变化。在netplan或ifcfg中用MAC地址绑定设备名(如match: {macaddress: aa:bb:cc:dd:ee:ff})。 -
从网卡不能配IP:所有IP、路由、DNS只设在
bond0上;物理网卡配置中需设dhcp4: false、optional: true并禁用NM接管(renderer: networkd+managed: false)。 -
链路状态要真实UP:用
ethtool enp3s0确认Link detected: yes,且交换机端口未被shutdown或VLAN隔离。 -
mode=4时检查交换机LACP状态:在交换机上执行
show lacp neighbor或等效命令,确认聚合组处于Current状态,而非Port Down或Standby。
验证是否生效
配置完成后,不止看接口是否存在,更要验证行为是否符合预期:
-
查绑定状态:
cat /proc/net/bonding/bond0,确认MII Status: up、Slave Interface列表完整、Currently active slave有且仅一个(mode=1)或多个(mode=4/6)。 -
测高可用:拔掉主网线,观察
ip link show bond0是否仍state UP,ping网关是否中断<3秒。 -
测负载均衡(mode=4/6):
watch -n1 'cat /proc/net/dev | grep -E "(en|bond)"',大流量传输时观察各物理网卡TX字节数是否同步增长。


















