5.8协议错误

5.8协议错误

网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义,网络协议一旦错误就会让网络上的设备之间语言不通,导致无法正常进行信息交流。

网络协议故障主要由网络服务器、计算机、TCP/IP配置错误,或交换机、路由器、防火墙等设备配置错误引起。有些问题一旦出现,用一般的检查手段很难查找到问题的根源,需要借助Wireshark等捕包分析软件进行协议分析。

1.DNS设置错误无法访问域名网页

案例症状:办公楼有一终端计算机可以Ping通网络中的其他终端计算机IP地址,除网页以外,其他网络客户端程序均可正常通信。

解决过程:除了打开网页外其他网络服务都正常,说明网络连通没有问题,首先可以在正常的计算机上Ping一个网站的域名得到这个网站的IP地址,再回到故障终端计算机上分别Ping这个网站的域名和IP地址,如果出现域名无法Ping通,但IP地址可以Ping通的情况,此时只需要在IE浏览器里直接输入网站的IP地址就能够正常访问这个网站。通过这种方式可以断定故障是TCP/IP里的DNS服务器设置错误造成的,因为DNS服务器是用来解析网站域名的,它会将网站域名解析成网站的实际IP地址,一旦填写错误将无法正常解析域名,导致无法正常访问网站。只需要打开TCP/IP设置,将DNS服务器修改成正常的地址就可让网络恢复正常。

2.路由表配置错误导致无法通信

案例症状:服务器A和服务器B原本可正常通信,但在未修改服务器A任何配置的情况下重启了服务器后,导致服务器A和服务器B无法正常通信。

解决过程:首先查看服务器A和服务器B的网络配置,服务器A有3个网口配置如下:

[root@A]#ipconfig|egrep“Hwaddr|inet addr”

eth0 Link encap:Ethernet Hwaddr:00:0 C:29:CB:74:A9

Inet addr:192.168.26.131 Bcast:192.168.26.255 Mask:255.255.255.0

eth1 Link encap:Ethernet Hwaddr:00:0 C:29:CB:74:B3

Inet addr:192.168.174.131 Bcast:192.168.174.255 Mask:255.255.255.0

Eth2 Link encap:Ethernet Hwaddr:00:0 C:29:CB:74:BD

Inet addr:192.168.186.131 Bcast:192.168.186.255 Mask:255.255.255.0

[root@A]#route|grep default

default 192.168.26.2 255.255.255.0 UG 0 0 0 eth 0

服务器B只有一个网口,IP地址为192.168.182.131,子网掩码为255.255.255.0。

在正常情况下,假如服务器A有一个IP地址和服务器B在同一子网,就从这个IP直接发包给对方。假如没有一个IP和对方同子网,就通过默认网关互联。在这个环境中,服务器A的3个IP显然都与服务器B属于不同子网,那就应该通过默认网关了。但从服务器A上Ping网关,结果却是通的。难道是因为网关没有把包转发出去?或者是Ping请求已经被转发到服务器B了,但Ping回复在路上丢失?这个问题基本上无法判断,只能借助于Wireshark进行数据分析。

分别在服务器A上的eth 0、eth 1和eth 2上进行捕包。最先查看的是连接默认网关的eth 0,出乎意料的是,上面竟然一个相关网络包都没有。而在eth 1上抓的包却如图5.1所示。

图5.1 在服务器上eht 1口的捕包

服务器A正通过ARP广播查找B(192.168.182.131)的MAC地址,试图绕过默认网关直接与B通信。这说明服务器A上存在一项符合192.168.182.131的路由,促使服务器A通过eth 1直接与服务器B通信,经过分析可判定应该为路由有问题。输入route|egrep“Dest|168.182”,进行逐项检查路由表,果然发现有一项:

Destination Gateway Genmask Flags Metric Ref Use Iface

192.168.180.0 * 255.255.255.0 U 0 0 0 eht1

因为192.168.182.131属于192.168.182.0/255.255.255.0,所以就会走这条路由。由于不同子网所配的VLAN也不同,所以这些ARP请求根本到达不了服务器B。Ping包就更不用说了,它从来就没发出来过。删除了这条路由后,两台服务器的通信即可恢复正常。

此类故障如果不借助Wireshark进行捕包分析,问题的根源基本上是无从查起的。