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 优先自动切换)
  • 或做成一键安装脚本版本(复制粘贴一次搞定)

你现在这个方案已经是企业级标准做法 👍

posted @ 2026-02-24 10:17  歇歇吧  阅读(10)  评论(0)    收藏  举报