问题描述
工作需要,不在公司时需要连接单位的vpn才能工作,连上后内网能访问了,但是外网就无法访问了。
问题困扰了几天,做下记录。
解决方案一
网上查的,把vpn的优先顺序设为最顶,并且把”通过vpn连接发送所有流量“打勾上,反正我是没用 
倒是发现了两个情况:
情况1:vpn的位置设为最高时,能访问内网,但无法访问外网
情况2:vpn的位置设在网卡和wifi之下,无法访问内网,但外网依旧正常访问
解决方案二
经过方案一的测试,突然想起在windows系统连接vpn有一个在远程网络上使用默认网关,如果不把这个勾去掉,就无法上外网,我想这不是和 情况1 一样么,所以确定了问题,就是默认网关的问题,只是macos系统并没有这一个选项,其实原理相同,只要修改一下网关就可以了
1、把”通过vpn连接发送所有流量“的勾去掉
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(右键使用终端运行),再上看看,内外网都可以访问了。


其实不用装什么软件,这是路由选路的问题,在命令行下加入一条明细路由,把需要走vpn的网段指向VPN网关就行了。wifi优先,通过VPN发送所有流量也不用勾选
比如我想连公司的 192.168.100.1 'sudo route add 192.168.100.0/24 X.X.X.X' x.x.x.x是连上VPN的网关。 这样即能连内网也能上外网。
请问下 这个怎么不下载软件设置啊,我现在能连接上vpn但是所有网络都不能用了,公司的网络也不能用
解决了吗我也这个问题折磨死了
没有
现在连网线用
你好,安装expect的这一步还需要安装tcl吗?我在安装tcl的时候make报错了,想请问是怎么解决的
我也是make报错
要,因为expect是依赖tcl的
谢谢博主,我的问题估计是系统问题,无法成功安装tcl
解决,谢谢。。。