macos路由配置需区分临时与永久:route命令用于即时生效但重启丢失的调试,networksetup实现开机自动加载;先用netstat -rn或route -n get default查看当前路由及网关,再按需增删静态路由,多路由表需绑定接口到rdid并初始化。

配置 macOS 的网络流量路由表,关键在于分清“临时生效”和“永久保存”两种场景,并根据实际需求选择对应工具。route 命令适合快速测试或应急调整,而 networksetup 才是让路由开机自动加载的可靠方式。
先看清当前路由路径
所有操作前务必确认现状,避免误删或冲突:
- 运行 netstat -rn 查看完整 IPv4 路由表,重点关注 Destination 列中的
default行,其 Gateway 就是当前默认网关,Netif 显示走哪块网卡(如 en0、en1) - 想快速定位默认网关,可用更简洁的命令:route -n get default,输出直接显示网关 IP 和接口名
- 若需筛选特定条目,例如只看带网关的路由:netstat -nr | awk '$5 ~ /UG/ {print}';查某内网段(如 10.200.):netstat -nr | grep "10\.200\."
临时添加或删除静态路由
用 route 添加的路由立即生效,但重启后消失,适合调试或短期使用:
- 添加网段路由(如去往 10.200.30.0/24,下一跳为 10.10.10.1):sudo route -n add -net 10.200.30.0/24 10.10.10.1
- 添加直连网段(不经过网关,直接从 en1 发出):sudo route -n add -net 172.16.0.0/16 -interface en1
- 删除某条路由:sudo route -n delete -net 10.200.30.0/24 或 sudo route -n delete -host 192.168.99.55
- 注意:不能修改已有条目,只能先删再加;若提示 “network is unreachable”,通常因下一跳不可达或对应网卡未启用
让路由开机自动加载
靠 route 加的路由不会留存,要长期生效,推荐使用 networksetup:
- 先查清网络服务名称:networksetup -listallnetworkservices,输出类似 Wi-Fi、Ethernet、USB 10/100/1000 LAN 等——这些才是配置时要用的名称(不是 en0/en1)
- 为名为 “Ethernet” 的服务添加到 10.188.12.0/24 的路由(子网掩码 255.255.255.0,网关 192.168.8.254):sudo networksetup -setadditionalroutes "Ethernet" 10.188.12.0 255.255.255.0 192.168.8.254
- 该设置写入系统网络配置,随服务启动自动生效,无需脚本或额外守护进程
进阶:多路由表与策略路由
当需要隔离流量或实现策略路由(如指定某类流量走特定出口),macOS 支持多路由域:
- 先绑定接口到路由域 ID(如给 en0 分配 rdid 100):sudo ifconfig en0 rdid 100
- 向该路由域添加静态路由:sudo route -n -T 100 add -net 10.200.30.0/24 10.10.10.1
- 验证路由域是否激活:sudo route -n -T 100 show -inet;若报 “no such process”,需先加一条临时路由触发初始化,再删掉
- 持久化需配合 launchd,创建 plist 文件在系统就绪时执行 route 命令











