很多公司都架设了自己的VPN 网络,对公司内移动办公的用户提供接入。但是大多数情况下很多用户发现只要连接上VPN,原本正常的网络浏览、QQ等访问Internet的通讯都被断掉了,而本地局域网的访问(跨网段的)也不行了。
  很长时间以来笔者一直以为这个故障是VPN网络的通病,没办法解决。有一次一位外省的朋友到我司公干,他们公司用的是天融信的VPN软件,结果发现他连上后其他网段的访问也都很正常。
  笔者很纳闷,于是仔细研究,最终在显示路由表的时候发现了区别(在命令提示符窗口下键入:route print,连上VPN的路由表如图)。
  一般的VPN连接上之后,系统会自动加载一条“8个0”的路由条目,将默认网关指向VPN网络的网关,Metric为1。即目的网络:0.0.0.0,掩码:0.0.0.0。代表所有网络地址,也就是说所有目的网络没有在具体路由条目中指明去向,且不在本网段内的通讯都要转发到指定的默认网关去,然后再由网关来择路转发。
  而Metric为路由条目的度量值,与优先级成反比。可以看出这时所有非本网段的访问都被转发到VPN网关上,而不是原来的本地网关。原有8个0的默认路由的Metric被改为 2。在路由条目中目的地址相同的情况下,这个度量值越小则相应的优先级越高,这时只有前面那条Metric为1的路由有效,而本地网关失效了,这样访问Internet当然有困难了。
  在图中可以看到,第一条Gateway(网关)为172.16.1.1的路由是本地网络的默认路由,Metric被改成2了。而多添加了第二条8个0的默认路由是VPN连接的路由,Metric值为1。这时我们只要对第二条路由做修改,让只有目的为192.168.0.0/24这个网段的包发到VPN的网关上去,而其他访问仍然走本地网关即可。
  那么我们要先删除掉第二条路由,命令为:route delete 0.0.0.0 mask 0.0.0.0 192.168.0.3;然后添加一条新的路由条目,命令为:route add 192.168.1.0 mask 255.255.255.0 192.168.0.3。这样原有的本地默认路由将重新起作用,至此故障解决。
  注:route命令是用来管理系统路由表的。一个路由条目一般由“目的或目标(Destination)”、“网络掩码(Netmask)”以及“网关(Gateway)”组成。显示路由表的命令是route print;添加一个静态路由命令是route add 目标 掩码 网关。另外,如果不加-p参数,则新建路由不会保存,重启后即消失。删除一个路由条目的命令是“route add 目标 掩码 网关”;改变一个路由的命令为“route change 目标 掩码 网关”。