问题描述

工作需要,不在公司时需要连接单位的vpn才能工作,连上后内网能访问了,但是外网就无法访问了。
问题困扰了几天,做下记录。

解决方案一

网上查的,把vpn的优先顺序设为最顶,并且把”通过vpn连接发送所有流量“打勾上,反正我是没用
WX20200428-212738@2x.png

倒是发现了两个情况:
情况1:vpn的位置设为最高时,能访问内网,但无法访问外网
情况2:vpn的位置设在网卡和wifi之下,无法访问内网,但外网依旧正常访问

解决方案二

经过方案一的测试,突然想起在windows系统连接vpn有一个在远程网络上使用默认网关,如果不把这个勾去掉,就无法上外网,我想这不是和 情况1 一样么,所以确定了问题,就是默认网关的问题,只是macos系统并没有这一个选项,其实原理相同,只要修改一下网关就可以了

1、把”通过vpn连接发送所有流量“的勾去掉
WX20200428-215008@2x.png
2、把vpn的优先顺序放到wifi的下面
3、安装expect,这里不写详细安装方法,百度都能找到
4、新建文件vpn.command
5、修改下面的命令并复制粘贴到vpn.command

#!/bin/bash
myexp="/usr/bin/expect"
ipsh=`ifconfig ppp0 | awk '{print $2}' | sed -n '2p'`
$myexp<<eof22
spawn $myssh sudo route delete -net 192.168.110.0 -netmask 255.255.0.0 $ipsh
spawn $myssh sudo route -n add -net 192.168.110.0 -netmask 255.255.0.0 $ipsh
expect "Password:"
send "这里填电脑的密码\r"
expect eof
#interact
#EOF

需要修改的三处地方:
1、192.168.110.0需要改成需要进入的网段
2、电脑的密码
3、255.255.0.0有些是255.255。255.0,视情况定

保存后,先连上vpn,再运行vpn.command(右键使用终端运行),再上看看,内外网都可以访问了。