注意
网络有优先级服务顺序,开启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,检查脚本文件是否可执行
