macOS纯以太网多网关备份本质是链路聚合或服务顺序切换,非传统热备:仅支持同类型有线以太网接口(如en0、en2)参与聚合或主备,Wi-Fi/USB网卡(未识别为独立enX)、虚拟接口均不支持;聚合提供带宽叠加与单链路故障自动恢复,服务顺序切换依赖链路层检测后10–30秒路由表被动更新。

macOS 在纯以太网环境下配置多网关备份路径,本质不是“同时用两个默认网关”,而是通过链路聚合(Bond)实现带宽叠加与单点故障自动恢复,或借助服务顺序+路由表被动更新完成主备切换。它不支持传统热备网关(如 VRRP/HSRP),也没有主动心跳检测机制。
只允许同类型有线以太网接口参与聚合或主备
Wi-Fi、USB 网卡(未被识别为独立 enX)、蓝牙 PAN、虚拟接口(utun、bridge0)都不能加入聚合组,也不能和有线口混搭做主备。系统只认真实物理以太网设备(如 en0、en2、en3),且需满足:
- 接口在
networksetup -listallhardwareports中明确标注为 “Ethernet” - USB-C/雷电扩展坞所接网卡芯片需被 macOS 原生支持(如 ASIX AX88179、Realtek RTL8153),否则可能仅显示为单一接口
用链路聚合实现真冗余(推荐)
这是最接近“多网关备份路径”的原生方案——逻辑上只有一个 IP 和一个默认网关,但底层流量分散到多个物理链路,任一链路中断不影响业务。
- 打开「系统设置 > 网络 > 管理虚拟接口 > 新建链路聚合」
- 勾选两个及以上 enX 有线接口(例如 en2 和 en3)
- 模式选「负载均衡(轮询)」或「LACP(802.3ad)」
- 若选 LACP,交换机端必须开启对应聚合组并启用 LACP 协议;若选负载均衡,则无需交换机配合,但单边断连时可能出现短暂丢包(约 1–3 秒)
靠服务顺序实现主备切换(被动)
这不是协议级切换,而是系统发现首选接口链路层失联(carrier loss)后,约 10–30 秒内删掉其默认路由,再启用次优接口的默认路由。
- 进入「系统设置 > 网络 > 详细信息 > 服务顺序」
- 将主用以太网(如 “以太网”)拖到顶部,备用以太网(如 “USB 10/100/1000 LAN”)放在其下
- 两个接口必须各自配置有效 IP(DHCP 或静态),不能全设 DHCP 后指望系统智能判断
- 拔线后观察
netstat -rn | grep '^default',确认默认网关是否迁移;ping -c 5 1.1.1.1前几包丢弃属正常
手动加静态路由绕过默认网关限制
如果你需要让特定内网流量走某条路径、公网流量走另一条,就得脱离默认路由逻辑:
- 先查清各接口网关:
route -n get default分别在不同接口启用时执行 - 删除冲突的默认路由:
sudo route delete default - 添加精确内网路由(如去 10.50.0.0/16 走 en2):
sudo route -n add -net 10.50.0.0/16 10.20.1.1 - 让该路由开机生效:
sudo networksetup -setadditionalroutes "Ethernet" 10.50.0.0 255.255.0.0 10.20.1.1
注意干扰项
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
- iCloud 隧道、Wi-Fi 助理、企业安全客户端(如深信服)可能注入虚拟网卡或修改代理,掩盖真实路由问题
- 检查是否有 utun/pflog/vnic 接口:
ifconfig | grep "^[a-z]" | grep -E "(utun|pflog|vnic)" - 关闭「系统设置 > 网络 > 当前服务 > 代理」里的 PAC、HTTP/HTTPS 代理
不复杂但容易忽略










