May 10, 2015 · VPN PPTP Windows

连接VPN同时可以访问互联网

上一篇介绍了如何建立PPTP VPN。VPN主要是为了出差人员安全访问企业内部网络而设计的,当我们连上VPN后往往便无法访问互联网了。这是什么原因造成的呢?有没有一个两全其美的办法可以让我们可以在连接VPN后还可以继续聊天上网?

答案是肯定的。这里先引入一个概念“路由表”。 做IT的朋友特别是做网工的朋友可能接触过网络设备的“路由表”,其实windows也是有一个“路由表”的,只有一些特殊场合我们才会用到所以大家没有那么熟悉,恰恰今天我们要实现的功能可以通过它来实现。

关于windows路由表介绍我引用了网络上一篇文章:Windows路由表详解

先来看看未连接VPN前的路由表 windows_route_1

再看看连接VPN后的路由表 windows_route_2

两两比较之后我们很容易发现其中的区别:

通过分析我们知道了问题是出在路由表上,那么解决方法也明朗了:

具体命令和说明如下:
以下指令均在命令提示符中输入
route add 10.10.0.0 mask 255.255.0.0 10.10.10.254 //假定公司内网为10.10.0.0,先添加此路由是为了避免待会删除默认路由时造成内网访问中断
route delete 0.0.0.0 mask 10.10.100.234 //删除当前默认路由,因为它是走的VPN接口
route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 //添加新的默认路由,下一跳为你的NAT网关(路由器IP)

上面讲的情况主要是适用于出差人员访问公司内网的场合,当然个人用户使用VPN大部分是为了科学上网,这时我们仅需根据自己的实际情况作出小幅调整即可。 考虑到需要科学上网的网站相对较少,所以默认路由的下一条设为你的NAT网关(路由器IP),再此基础上添加需要科学访问的IP的下一跳地址为VPN接口的路由,如route add 8.8.8.8 mask 255.255.255.255 10.10.10.254。

批量导入路由请参阅:https://code.google.com/p/chnroutes/issues/detail?id=60

以上修改路由表操作均在重启电脑后还原成默认,所以放心折腾吧(大不了就是重启电脑重新再来)。如果你对路由表比较熟悉不想重启电脑后消失自定义路由,且添加的路由条目固定可以使用持久化参数-p,如route -p add 0.0.0.0 mask 0.0.0.0 192.168.1.1。

讲了这么多,其实我们就是利用了windows路由表让它访问不同的网络时选择不同的出口,核心概念是“路由”,它定义了从源地址到目的地址该走哪条路。