macOS 添加路由重启自动失效,以下插上有线自动生效
系统同时有两条默认路由,分别走 en7(你的有线网,192.168.5.59 所在接口)和 en0(可能是 Wi-Fi 或其他接口)。让配置的这些静态路由sudo route -n add -net 192.168.6.0/24 192.168.5.254 sudo route -n add -net 192.168.5.0/24 192.168.5.254 sudo route -n add -net 192.168.42.0/24 192.168.5.254 sudo route -n add -net 192.168.43.0/24 192.168.5.254 sudo route -n add -net 192.168.40.0/24 192.168.5.254 sudo route -n add -net 192.168.72.0/24 192.168.5.254 走en7,百度等走en0
macOS 的这些 route add 是重启后失效的,以下插上有线自动生效:
很好 👍 我给你一套 插上有线(en7)自动下发静态路由 的标准 macOS 方案。
思路是:
用 macOS 自带的
launchd监听网络变化
只要 en7 获得 IP,就自动重建那些 192.168.x 路由
稳定、官方、无需第三方软件。
✅ 第一步:创建自动路由脚本
创建脚本文件:
sudo nano /usr/local/bin/en7-routes.sh
粘贴下面内容:
#!/bin/bash
# 等待网卡拿到 IP
sleep 3
# 检查 en7 是否有 IP
IP=$(ipconfig getifaddr en7 2>/dev/null)
if [ -n "$IP" ]; then
/sbin/route -n delete -net 192.168.6.0/24 2>/dev/null
/sbin/route -n delete -net 192.168.40.0/24 2>/dev/null
/sbin/route -n delete -net 192.168.42.0/24 2>/dev/null
/sbin/route -n delete -net 192.168.43.0/24 2>/dev/null
/sbin/route -n delete -net 192.168.72.0/24 2>/dev/null
/sbin/route -n add -net 192.168.6.0/24 192.168.5.254 -ifscope en7
/sbin/route -n add -net 192.168.40.0/24 192.168.5.254 -ifscope en7
/sbin/route -n add -net 192.168.42.0/24 192.168.5.254 -ifscope en7
/sbin/route -n add -net 192.168.43.0/24 192.168.5.254 -ifscope en7
/sbin/route -n add -net 192.168.72.0/24 192.168.5.254 -ifscope en7
fi
保存退出。
然后给执行权限:
sudo chmod +x /usr/local/bin/en7-routes.sh
✅ 第二步:创建 launchd 自动触发器
创建 plist 文件:
sudo nano /Library/LaunchDaemons/com.en7.routes.plist
粘贴:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.en7.routes</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/en7-routes.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WatchPaths</key>
<array>
<string>/Library/Preferences/SystemConfiguration</string>
</array>
</dict>
</plist>
保存退出。
✅ 第三步:加载服务
sudo launchctl load /Library/LaunchDaemons/com.en7.routes.plist
立即测试:
sudo launchctl start com.en7.routes
🎯 工作原理
当发生这些情况时会自动执行:
- 插网线
- 拔网线
- DHCP 重新获取地址
- 开机
- 网络设置变化
它会检测 en7 是否有 IP:
- 有 → 自动下发静态路由
- 没有 → 不做任何事
✅ 测试方法
1️⃣ 拔掉网线
2️⃣ 插上网线
3️⃣ 等 3 秒
4️⃣ 执行:
netstat -nr | grep 192.168
应该自动出现:
UGScI en7
🚀 最终效果
| 场景 | 结果 |
|---|---|
| 插上有线 | 自动下发内网路由 |
| 拔掉有线 | 路由失效(但不影响 Wi-Fi) |
| 重启电脑 | 自动恢复 |
⚠ 如果你以后网卡编号变了
比如 en7 变成 en5,需要改脚本里的 en7。
可以用:
ifconfig
查看当前有线接口编号。
如果你愿意,我可以再给你一个:
- “智能双线策略脚本”(有线优先 or Wi-Fi 优先自动切换)
- 或做成一键安装脚本版本(复制粘贴一次搞定)
你现在这个方案已经是企业级标准做法 👍

浙公网安备 33010602011771号