注意
网络有优先级服务顺序,开启L2TP VPN后发现无效,内网还是访问不了,但是设置L2TP为第一个服务顺序的话就可以访问。可是这样的话,如果内网不具备访问互联网的功能的话,就会导致我们电脑也不会有网,只能访问内网。每次需要访问互联网的时候就需要关闭VPN,来来回回切换就会体验很不好。
开工设置
本文代码来自:Github
先设置一下
设置 -> 网络 -> 目标VPN -> 高级 -> 取消勾选通过VPN连接发送所有流量
黑名单模式
在mac终端中:
sudo vi /etc/ppp/ip-up
添加以下内容:
#!/bin/sh export PATH="/bin:/sbin:/usr/sbin:/usr/bin" OLDGW=`netstat -nr | grep 'ppp0' | grep 'UH ' | sed 's/ \([0-9.]*\).*/\1/g'` if [ ! -e /tmp/pptp_oldgw ]; then echo "${OLDGW}" > /tmp/pptp_oldgw fi dscacheutil -flushcache route add 192.168.8.0/16 "${OLDGW}" # 更改这里的ip段
sudo vi /etc/ppp/ip-down
添加以下内容:
#!/bin/sh export PATH="/bin:/sbin:/usr/sbin:/usr/bin" if [ ! -e /tmp/pptp_oldgw ]; then exit 0 fi OLDGW=`cat /tmp/pptp_oldgw` route delete 106.75.0.0/16 ${OLDGW} # 更改这里的ip段 rm /tmp/pptp_oldgw
完结
重启电脑,重新链接vpn。
注意事项
- 如果刚开始已勾选通过VPN连接发送所有流量,建议重新创建vpn,我测试下取消勾选不会生效
- 需要追加规则直接在两个脚本内追加ip,然后重连即可
- 出现问题检查流程:
改完规则是否重连VPN
netstat -nr
,检查脚本内的路由规则是否已添加
ls -l /etc/ppp
,检查脚本文件是否可执行