故障现象
我们的网吧是通过ADSL共享上网的:因为刚开始营上的时候电脑并不多,所以就选择使用Windows自带的Internet连接共享(ICS)。笔者在服务器上安装的是Windows2000Server,客户机安装的都是Windows98。安装后网络一切正常,但是使用一段时间后忽然发现一问题,那就是客户机只能打开一部分网站,比如只能打开www.cbook.com.cn,但就是打不开新浪等网站。
具体配置如下:
服务器:Windows2000 Server
IP:192.168.0.1
另一网卡接ADSL适配器自动获取IP地址。
客户机:Windows98
IP地址指定为192.168.0.2~20的任意地址
网关为:192.168.0.1
DNS:202.106.196.115和202.106.0.20
客户机可以正常使用QQ。假如使用ping命令来测试那些打不开的网站,发现能解析地址,但是状态是时通时断,掉包很严重。
诊断过程
既然有的网站能上去,而且还能用QQ之类的软件,这就说明网络硬件方面应该没什么问题,最值得怀疑的是用Ping命令得出的结果。既然能解析地址,但是为什么时通时断?而且其他的网站很正常?当然,还是先检查了一下网卡和网线:结果是一切正常。
于是,我们又怀疑是防火墙的问题。但是取消防火墙后故障依旧。
后来,笔者想到了使用的代理方式(ICS),最后发现就是这个原因造成了上述的情况。于是采取修改注册表的方式来解决问题:
(1)在Windows 9x下面可以通过将MaxMTU修改为1450来避免这种情况的发生,改注册表就可以了 (当然也可以通过一些工具软件来完成):HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\子键下面建立字符串键名为MaxMTU,键值为1450(十进制)。
(2)在Windows NT 4.0下面更改MaxMTU的方法:在HKEY_OCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\中建立MTU键名,类型是REG_DWord,键值为1450(十进制)
(3)在windows 2000下面更改MaxMTU的方法:在HKEY_OCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\lnterfaces最后,重新启动电脑。这时就可以正常地测览那些本来不能够正常打开的网页了。
排除心得
通过ADSL代理上网,可能会出现有些站点无法登录的情况,这主要是由于MS的Windows系列传送的TCP包请求的segment太大,超出PPPoE的frame所能够接受的范围,导致PPPoE传送"don't fragment"的ICMP而不是"must fragment",最终导致网站没有响应。这种情况称为Black Hole Router,解决办法就是通过注册表的修改来解决问题,不过一定要记得先备份注册表。