博文

目前显示的是 一月, 2026的博文

macOS 系统 L2TP 拨号后自动加路由的实现方式

  正文:   很多人发现 macOS 用系统自带 L2TP 拨号后,会自动出现一条指向内网的路由,但忘了当初是怎么做到的。我这边排查了一次,答案其实很直接:是 pppd 的 ip-up 脚本在连接成功后执行的。   核心机制   macOS 的 L2TP 连接由 pppd 负责建立。当 VPN 成功拨号后, pppd 会自动调用 /etc/ppp/ip-up 。如果这个脚本里写了 route add ,系统就会把路由加进去。   我机器上的脚本内容是:   #!/bin/sh   echo "[$(date)] VPN connected on $1, peer IP is $5" >> /tmp/vpn_route.log   /sbin/route add -net 192.168.0.0/16 "$5" >> /tmp/vpn_route.log 2>&1   解释一下:   - $5 是 VPN 对端(peer)的 IP。   - /sbin/route add -net 192.168.0.0/16 "$5" 这行就是“自动加路由”的来源。   - 脚本顺带把日志写到 /tmp/vpn_route.log ,方便排查。   如何确认   连接 VPN 前后跑一次:   netstat -rn   如果看到类似:   192.168.0/16   <peer-ip>   UGSc   ppp0   就说明路由是通过 ppp0 接口加进去的。   断开后清理   如果没有 /etc/ppp/ip-down ,断开时不会主动删路由。但一般 ppp0 消失后路由会被系统清理。想更彻底,可以自己写一个 ip-down 脚本做删除。   结论   macOS 系统 L2TP 的“自动加路由”不是隐藏配置,而是 pppd 的标准机制: 连接成功后执行 /etc/ppp/ip-up ,由脚本决定是否加路由 。只要记住这个入口,就能完全掌控 VPN 拨号后的路由...