主备模式(mode=1)是最稳妥的双网卡绑定方案,仅一网卡工作、另一待命,故障时秒级切换且无需交换机配合;配置需设BONDING_OPTS="mode=1 miimon=100"、MASTER/SLAVE标识及禁用NetworkManager。

Linux双网卡绑定(Bonding)的主备模式(mode=1,active-backup)是保障业务连续性最稳妥的选择。它不依赖交换机配置,故障切换快,且避免了多路径引发的数据包乱序或MAC冲突问题,特别适合数据库、关键Web服务或虚拟化宿主机等对稳定性要求极高的场景。
主备模式的核心机制
主备模式下,bond0对外只呈现一个IP和一个MAC地址;同一时间仅一块物理网卡(如ens33)处于活动状态并处理全部流量,另一块(如ens37)保持静默待命。当活动网卡链路中断(通过miimon每100ms检测),备用网卡立即接管,继承原MAC与IP,上层业务几乎无感知。
- 无需交换机做任何聚合配置,兼容所有品牌交换机甚至直连设备
- 所有流量走单路径,杜绝TCP乱序、ARP响应延迟、二层转发异常等问题
- 支持指定PRIMARY网卡,确保每次启动都由固定网卡作为主用,避免随机切换带来的短暂ARP刷新延迟
配置步骤(以CentOS/RHEL 7/8为例)
所有配置文件位于/etc/sysconfig/network-scripts/目录下,需root权限操作。
- 创建bond0主接口:编辑ifcfg-bond0,内容含静态IP、子网掩码,并显式声明模式与监控参数:
DEVICE=bond0
BOOTPROTO=static
IPADDR=192.168.10.50
NETMASK=255.255.255.0
GATEWAY=192.168.10.1
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
BONDING_OPTS="mode=1 miimon=100 updelay=200 downdelay=200" - 配置从属网卡:分别编辑ifcfg-ens33和ifcfg-ens37,两份文件均设为:
DEVICE=ens33
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
PRIMARY=ens33(仅在主网卡配置中添加该行) - 关闭NetworkManager干扰(关键):
systemctl stop NetworkManager && systemctl disable NetworkManager
否则其会覆盖bonding配置,导致绑定失败或重启后失效 - 重启网络服务生效:
systemctl restart network 或分步执行 ifdown bond0 && ifup bond0
验证与排错要点
配置完成后,必须确认三点:
- 运行 cat /proc/net/bonding/bond0 查看输出:Active: ens33、MII Status: up,且Backup: ens37 显示为“up”状态
- 执行 ip link show bond0 和 ip addr show bond0,确认bond0已UP并持有正确IP
- 手动模拟故障测试切换:拔掉ens33网线,1–2秒内应看到bond0的MAC未变、IP仍通,且/proc/net/bonding/bond0中Active切换为ens37
为什么不用其他模式?
mode=0(轮询)虽能叠加带宽,但强制要求交换机开启802.3ad/LACP,且单TCP流可能跨网卡发包,易受乱序影响;mode=4(LACP)性能最优,但依赖交换机支持,部署门槛高;mode=6(ALB)虽免交换机,但接收负载均衡依赖ARP重写,在某些防火墙/NAT环境下可能被拦截。主备模式牺牲带宽冗余,换来的是确定性、可预测性和最小运维成本——这对生产环境往往更珍贵。


















