公司总部有一台使用windows2003系统搭建的×××服务器,驻外分公司客户端利用×××拨号到服务器以访问总部内部工作网站。当客户端成功拨号到服务器后问题出现了:总部内部的站点可以访问了,但是外网却不能访问了。
   网上有说法说只要把×××拨号属性中的 “在远程网络上使用默认网关” 反选就可以解决问题,操作方法:×××拨号属性--网络--TCP/IP协议属性--高级.经过试验发现,使用这种方法拨号成功后Internet是可以访问了,总部网段内的站点地址却访问不了了。我们可以从下面的实例中来分析这个问题。这里总部内部工作站点IP地址为192.168.111.2。首先我们来分析一下没有×××拨号前一台客户端电脑的路由表(192.168.0.3为本地IP地址192.168.0.1为本地网关),在开始――运行――CMD中,输入route print,可以看到,默认网关为192.168.0.1。
再来看一下拨号到远程×××服务器之后的路由表。表中的169.254.119.118为本机从×××服务器获得的IP地址(可以用ipconfig命令来查看)。默认网关变成了169.254.113.109(×××服务器地址)。这时可以ping 通192.168.111.2。但是外网网址无法访问。仔细分析一下这张路由表,问题主要在第一行和第二行。 0.0.0.0(也就是所有网段)有两个路由,一个网关为169.254.113.109,跳计数为1,另一个网关为192.168.0.1,跳计数为31。跳计数低的路由优先,这样无论我们访问哪个网站都只能通过169.254.113.109这个网关了。为什么在默认网关变成了169.254.113.109之后就不能访问外网?也就是说外网的数据并不能通过169.254.113.109这个网关传到客户端,查询资料才发现原来是微软的安全机制禁止了Internet流量通过×××服务器到达客户端。
如果取消使用“在远程网络上使用默认网关”,拨通×××后又会是怎样呢?
让我们再次打开路由表,默认网关变回192.168.0.1,这时再ping 192.168.111.2,无法ping通。分析路由表,表中只剩下192.168.0.0和169.254.0.0这两个网段的路由信息。192.168.111.2 ping不通并不是因为现在的默认网关为192.168.0.1,而是因为路由表中没有了192.168.111.0这个网段的路由信息,所以192.168.111.2被路由到192.168.0.1这个默认网关上来了。192.168.0.1这个本地网关当然不能指明到达网段192.168.111.0的路径。
通过上面的三个路由表来分析,解决问题的思路就比较明了了。
方法一、
对于第三张路由表,我们可以针对192.168.111.0这个网段增加路由,让这个网段路由到169.254.113.109也就是×××服务器的地址。具体命令如下:
Route add 192.168.111.0 mask 255.255.255.0 169.254.113.109 metric 1
再来看路由表,已经增加了一条信息,这样当我们访问192.168.111.2就被路由到网关169.254.113.109上了。访问其它地址时则路由到默认网关192.168.0.1上。
Ping 192.168.111.2 ,通了,访问外网也没问题了。
方法二、
对于第二张路由表,我们要把默认网关改回192.168.0.1,方法是删除第一条路由信息。命令如下:
Route delete 0.0.0.0 mask 0.0.0.0 169.254.113.109
运行成功后发现外网可以访问了,但是192.168.111.2还是访问不了。别着急,我们再加一条命令:
Route add 192.168.111.0 mask 255.255.255.0 169.254.113.109 metric 1
当然,如果还有其它远程网段要访问,可以在上述两种方法上再加几条命令。
对比两种方法,其实只有一个目的,就是让总部内部网段路由到×××服务器网关上,而让其它的网段路由到本地网关。
其实有朋友说的只将“在远程网络上使用默认网关”反选而不动其它的设置也有成功的可能,那就是要访问的远程地址和×××服务器提供的网关地址在同一网段内。在现实过程中大家遇到的问题可能各不相同。
附: route命令还带有一个有用的参数[-p],和add命令一起使用,作用是向路由表中添加一条永久的静态路由,因为如果没有这个参数,route 命令在路由表中做的变动系统重启之后都会丢失。使用方法举例如下:
Route -p add 192.168.111.0 mask 255.255.255.0 169.254.161.133 metric 1