linux网络冗余需四层协同:物理层双路径隔离、接口层按需选bonding模式、路由层用策略路由实现故障转移、服务层以keepalived+vip保障入口高可用。

Linux 网络冗余不是加几块网卡就能自动生效的,关键在于分层设计和协同机制。它需要从物理链路、逻辑接口、路由决策到服务入口四个层面统一规划,缺一不可。
物理层:双路径隔离是冗余前提
必须确保两条网络路径在物理上真正独立——不同交换机、不同上联链路、不同供电回路。若两块网卡都连在同一台接入交换机,或共用同一根光纤主干,单点故障仍会导致全网中断。VPS环境虽受限于虚拟化层,但也应优先选择支持多vNIC且后端宿主机跨物理节点部署的服务商。
接口层:Bonding 模式要匹配实际需求
- 高可用优先选 mode=1(active-backup):主备切换零丢包,无需交换机配合,适合大多数业务服务器;
- 带宽敏感选 mode=4(802.3ad/LACP):需交换机侧同步启用 LACP,聚合后带宽叠加,但单网卡故障会降低总吞吐;
- 避免 mode=0(balance-rr)用于生产环境:轮询模式对交换机无特殊要求,但 TCP 流可能乱序,影响长连接稳定性。
路由层:策略路由实现链路级故障转移
仅靠 Bonding 无法应对网关或上游链路故障。需结合策略路由:
- 为每条物理链路配置独立默认网关(如 192.168.1.1 和 192.168.2.1);
- 创建两个自定义路由表(如 primary/backup),分别写入对应网关路由;
- 用
ip rule绑定源 IP 或标记流量到指定表,并通过ping monitor脚本实时探测网关可达性,动态增删规则。
服务层:VIP + Keepalived 实现入口级漂移
Bonding 和策略路由解决的是本机出向通信,而用户访问入口仍依赖单一 IP。此时需引入 VRRP:
- 至少两台服务器部署 Keepalived,共享一个虚拟 IP(VIP);
- 主节点健康时 VIP 绑定在其 bond0 接口,备用节点监听 ARP 请求;
- Keepalived 通过脚本检测本地网络连通性(如 ping 上游 DNS 或网关),失败则触发 MASTER 切换;
- 搭配 iptables SNAT 规则,确保返回流量经原路径,避免 asymmetric routing。
不复杂但容易忽略











