核心是配置active-backup(mode=1)主备模式:仅一网卡工作,故障时秒级切换;须设miimon=100检测链路、arp_interval配合网关探测,并严格按先up slave再up bond0顺序启用。

配置 Linux 虚拟接口冗余,核心是让系统在主链路失效时自动启用备用链路,不中断通信。关键不在“多配几个 IP”,而在于明确谁主谁备、如何探测故障、切换是否可靠。下面从实际可操作角度讲清逻辑和要点。
主备模式选 active-backup(mode=1)最稳妥
这是专为冗余设计的内核 bonding 模式:同一时间只有一张物理网卡转发流量,另一张静默待命。它不要求交换机支持 LACP,兼容性好,切换行为确定性强。其他模式如 balance-rr 或 802.3ad 更侧重带宽叠加,故障恢复逻辑复杂,不适合纯冗余诉求。
- 必须显式指定 mode=active-backup,不能省略或写错
- 主备角色由内核自动选举(通常先 up 的 slave 成为主),也可用
primary参数手动指定 - 默认使用 MII 链路检测(物理层通断),建议配合
miimon=100(每 100ms 检查一次)提升响应速度
故障探测不能只靠“网线拔了”——要分层验证
真实环境中,网线没断但上层不通很常见(如交换机端口 down、ARP 响应失败、路由黑洞)。因此需组合多种检测机制:
-
MII Status:检查物理链路信号(
ethtool eth0中的 Link detected: yes/no),快但只能发现断线 -
ARP 监测:向网关发 ARP 请求并等待应答,能发现“链路通但网络不通”的情况;启用方式:
bonding_opts="mode=1 miimon=100 arp_interval=1000 arp_ip_target=192.168.1.1" - 注意:ARP 目标必须是直连网关,且该地址需在 bond 接口子网内,否则监测无效
切换过程不是“瞬间完成”,而是有状态确认环节
当主网卡被判定失效,bond 驱动会执行三步动作:停用原主接口 → 启用备用接口 → 刷新 MAC 和 ARP 表。这个过程通常在 1–3 秒内完成,但依赖于检测间隔设置:
- 若仅用
miimon=100,最坏情况需 200ms 才发现故障,再加状态同步时间,总延迟约 300–500ms - 若同时启用
arp_interval=1000,则故障识别可能延长到 1 秒以上,但更可靠 - 验证是否真切换成功,不能只看
ip a,要查cat /proc/net/bonding/bond0中的 “Primary Slave” 和 “MII Status” 字段
避免常见配置陷阱
很多配置失败不是命令写错,而是忽略了上下文约束:
- 所有 slave 连接必须通过
nmcli connection add type bond-slave创建,用modify添加不会被 NetworkManager 认作成员 - bond 主连接的 IPv4 参数(addresses、gateway、dns)必须一次性设全,缺 gateway 会导致激活失败
- 启用顺序必须是:先 up 两个 slave 连接,再 up bond0;反过来会导致 bond0 激活时找不到可用 slave
- 重启后若 bond0 未自动启动,检查
connection.autoconnect yes是否已设,并执行nmcli connection reload
不复杂但容易忽略











