问题场景:
旧版的macOS Catalina连接vpn并且添加路由地址是可以正常的访问公司内网跟正常访问网络的,但是新版的macOS Monterey按照旧版的操作执行完以后会发现只能够访问公司的内网,但是无法正常访问网络,甚至ping www.qq.com都是ping不通的。
故障排查:
出现了故障先不要慌,我们先冷静分析一下有什么情况会导致只能上内网而不能上外网??
很显而易见网络是没有问题的,出现这种情况极大可能是默认网关或者是路由地址被替代了,所以我们着重从这两个点去排查。
- 第一步先查看未连接vpn时的默认路由,执行命令如下,正常情况会跟如下一样,wifi为en0,有线直连一般为en7
route -n get default
步骤2进行vpn连接后再次执行 route -n get default 命令查看当前默认的路由信息,这里就不截图了,不出意外的情况这里会被修改成ppp0。
经过上面的步骤你会发现,路由信息因为刚刚的vpn连接后已经被修改为ppp0了,这就是导致上不了网的原因。
解决方案
经过上面的排查已经得出结果,问题就出在这个默认路由上,下面直接上解决的方法。
-
先把网络偏好的排序设置好,这里是重点,一定要把vpn这个设置到第一位,点击最下面的···符号有网络偏好的排序设置。
我把解决的方案写成了脚本,根据个人情况修改便可以了。
#!/bin/sh
#获取非ppp*的默认路由,用以排除vpn路由
defInterface=`netstat -rn | grep 'default'|grep -v 'ppp' | awk '{print $4}'| awk 'NR==1{print}'`
echo 默认连接: ${defInterface}
#校验当前默认路由
verificationInterface(){
#判断当前默认路由是否为ppp*,为真则重置路由信息
route -n get default | grep 'interface' | awk '{print $2}'|grep ppp
if [ $? -eq 0 ];then
echo 执行重置interface
# 删除VPN路由
#password为你的root管理员密码
echo password | sudo -S route -n delete default
#添加默认路由
echo password | sudo -S route -n add -net 0.0.0.0 -interface ${defInterface}
#tips
echo 默认连接: ${defInterface}
fi
}
#执行校验函数
verificationInterface
执行完上面的脚本,再吃执行 route -n get default 命令查看你的默认路由修改回来没有,修改成功的话,这代表你的配置已经生效了。
本文教程到此结束,希望对你有帮助!