TCP/IP故障诊断:

TCP/IP:本地主机不能访问远端主机... 2

TCP/IP:从错误的端口或者协议学习到路由... 4

水平分割... 5

TCP/IP:动态路由在一个端口上不工作... 5

TCP/IP:性能较差... 6

RIP:路由丢失... 6

主机和路由器子网掩码不匹配... 8

 

TCP/IP常见故障排除

这个章节讲述了与特定协议相关的TCP/IP连接和性能方面的故障排除信息。

在这章中的这一节,主要是考虑同RIPBIGPOSPF BGPBHSRP相关的TCP/IP问题和路由问题。每一节描述了特定的症状,以及解决方法。

TCP/IP:本地主机不能访问远端主机

TCP/IP:从错误的端口或者协议学习到路由

水平分割

TCP/IP:动态路由在一个端口上不工作

TCP/IP:使用特定的应用连接主机失败

TCP/IP:转发BOOTP以及其它UDP广播有问题

TCP/IP:性能较差

RIP:路由丢失

主机和路由器子网掩码不匹配

OSPF:路由器不能建立邻接关系

OSPF:路由丢失

BIGP:路由器不能建立邻接关系

BIGP:路由丢失

BIGP:路由器SIA问题

BIGP以及Active/Passive模式

BGP:路由丢失

BGP:路由器不发布路由

HSRP:主机不能到达远端网络

在下面的章节中描述的这些症状将可能会在实际的使用中经常遇到,属于常见的TCP/IP问题。然而,在讨论主机问题的时候,可能会涉及到UNIX终端系统。同样的问题会涉及到非UNIX的主机,但是这里将不作讨论了。

TCP/IP:本地主机不能访问远端主机

现象描述:在一个网络上的主机不能够同在远端网络上的主机进行通信。这个两个网络是有一个或者多个路由分割开来的中可能包括WAN或者其它链接。在路由器上运行了一个或者多个路由协议

 

可能造成这个故障的原因和解决方法列表:

可能原因

判断方法和解决方案

没有配置缺省路由或者缺省路由配置出错

如果在UNIX主机上,没有运行ROUTED程序,那么主机需要配置一条缺省路由

步骤⒈ 判断当前主机是否配置了缺省路由,可以使用这条UNIX命令:

unix%netstat –rn

检查命令的输出中是否存在缺省路由。

步骤⒉ 如果缺省路由的配置不正确,或者根本就没有配置缺省路由,那么就需要通过下面的命令来为UNIX配置一条缺省路由:

unix%route add default address 1

这里address是一个主机能够到达的缺省网关的ip地址,1表示主机到达这个网关仅仅需要一个hop。(有可能你需要重新启动主机来使这个配置生效。

如果你使用的不是UNIX主机,只需要对上面的命令进行稍微的改动就可以了。

在某些路由器上没有配置路由

步骤⒈ 使用traceroute命令来查找有问题的路由器,定位路由器;

步骤⒉ 当你定位了有问题的路由器之后,采用命令show ip route来察看当前的路由表,看在路由表中是否存在到达需要的网络的路由信息

步骤⒊ 如果在show ip route的输出中,没有需要的路由信息,那么可以通过show running-config命令来看一看当前路由器的配置情况

步骤⒋ 查看路由器的配置,看路由器是否配置了动态路由协议

例如,如果网络启动了RIP,需要在路由器也配置

router rip

network 150.150.0.0

步骤⒌ 如果在路由器上没有启动相应的路由协议进程,那么使用router命令来启动动态路由

步骤⒍ 在路由器配置模式中,配置network命令以便将路由进程同特定的端口相联系起来。

例如,在网络202.96.209.0和网络150.150.0.0上启动RIP,需要配置下面的命令:

D-Link(config)#router rip

D-Link(config_rip)#network 202.96.209.0

D-Link(config_rip)#network 150.150.0.0

TCP/IP:从错误的端口或者协议学习到路由

现象描述:在路由表中的路由,是通过错误的端口或者协议学习到的。例如,应该通过一个端口学习到的路由,在路由表中显示的结果发现,是通过另外一个端口路由的。这个问题可能发生在运行多个路由协议的路由器上。

 

可能造成这个故障的原因和解决方法列表:

可能原因

判断方法和解决方案

水平分割被禁止了

步骤⒈ 使用show running-config命令来看一看当前路由器的配置情况

步骤⒉ 确信在路由器的各个端口上水平分割是打开的。在端口上缺省情况下,是没有水平分割的,如果禁止了水平分割,那么在show running-config的时候将看到的:

no ip rip split-horizon

步骤⒊ 如果在端口上水平分割被禁止了,需要配置命令ip rip split-horizon端口命令来启用水平分割(对于RIP协议)。

例如,在串行端口0/0上,需要配置:

D-Linkconfig#interface serial 0/0

D-Linkconfig-s0/0#ip rip split-horizon

水平分割

有时,在一个多点的环境下,可能希望将水平分割禁止了。然而,这样将会导致路由会从错误的端口或者协议学习到的

例如,在下面的环境中,如果路由器C配置不正确,路由器B就可能会错误地收到来自路由器COSPF网络中的路由。

RIP路由信息是通过路由器B从路由器A学习到的,在路由器B上通过redistribute来再分配到RIP域中的。RIP的路由更新,将会在路由器C和路由器B之间发送。如果在路由器C上禁止了水平分割,那么来自路由器BOSPF的路由,就会被路由器C再次发送到路由器B上,如果这些路由中,存在着这样的路由――OSPF的管理距离比RIP路由的管理距离大,那么就会发现路由是从错误的端口或者协议学习到的。

这样就要求在路由器Cs0/0端口上,启用水平分割。然而,在一些情况下,在这个端口上又必须要禁止水平分割(在点到多点的网络上)。这里有一种解决的方法是,在路由器B上配置路由的过滤。例如:

rtb(config)#router rip

rtb(config-rip)#filter * in rip_filter

rtb(config-rip)#exit

rtb(config)#ip access-list standard rip_filter

rtb(config_std_nacl)#deny 202.96.209.0 255.255.255.0

……

rtb(config_std_nacl)#permit any

rtb(config_std_nacl)#exit

这里,filter将过滤通过deny命令指定的路由(包括网络{202.96.209.0255.255.255.0},以及其它不希望生成的RIP路由),这样就阻止了在路由器B上生成经过路由器C到达OSPF网络的路由。最后,需要通过命令permit来确保在路由器B上仍然能够生成其它RIP的路由。

TCP/IP:动态路由在一个端口上不工作

现象描述:在路由器上,添加了一个新的端口,并在上面配置了动态路由,但是它并没有工作。

 

可能造成这个故障的原因和解决方法列表

可能原因

判断方法和解决方案

端口的协议或者LAN协议为down

使用show interface命令来看一看端口是否为“administratively down”;

如果是,在端口上使用no shutdown命令,来使端口启用;

再次使用show interface命令来看一看端口的协议是否为UP

如果依旧为DOWN,那么检查一下链路层的配置和硬件的连接。

second地址上配置了动态路由

在动态路由(RIPBIGPOSPF)中,只能够在端口的主地址上配置动态路由,在second地址上是不会运行动态路由的。

例如:

interface ehternet 0/0

ip address 192.168.20.56 255.255.255.0

!

interface ehternet 0/1

ip address 192.168.30.56 255.255.255.0 second

!

router ospf 100

network 192.168.0.0 255.255.0.0 area 192

!

在上面的例子中,只有在端口ehternet 0/0才会运行OSPF,在ehternet 0/1上是不会启动OSPF的。

没有配置network命令。

使用show running-config命令看一看当前的配置情况;

确信每个端口对应的network命令被正确的配置了;

例如,在一个端口上的地址为192.168.10.3/24,在另外一个端口上的IP地址为130.130.56.12/16,如果需要使用RIP,那么在路由器上需要配置下面的命令:

D-Link(config)#router rip

D-Link(config_rip)#network 192.168.10.0

D-Link(config_rip)#network 130.130.0.0

TCP/IP:性能较差

现象描述一个或者多个网络上的主机的性能很差,速度很慢。到达服务器的链接花费了大量的时间。

 

可能造成这个故障的原因和解决方法列表

可能原因

判断方法和解决方案

DNS client上没有配置resolv.conf文件

检查主机上的/etc/resolv.conf文件。如果没有配置这个文件,那么主机将可能需要等到发送server的一个请求超时后,才会发送第二个server发送请求,最后在使用它的主机列表。这个过程将需要很长的时间。

DNS没有启动地址解析。

如果DNS服务器没有配置去启动地址解析,来自主机的请求将会被超时。而且这个过程将需要很长的时间。

DNS服务器的主机表不完整。

如果在DNS服务器山的主机表是不完成的,地址解析将会失败,导致了超时,因而有延迟。

 

RIP:路由丢失

现象描述在路由表中,不存在应该具有的路由。在一个网络上的主机,不能访问在另外一个网络上的主机,并生成了“host or destination unreachable”的信息。

这个问题发生在运行RIP的网络上。

 

可能造成这个故障的原因和解决方法列表

可能原因

判断方法和解决方案

没有配置network命令或者配置了错误的network

使用show running-config命令看一看当前的配置情况;

确信为每个端口配置了正确的network命令;

例如,在一个端口上的地址为192.168.10.3/24,在另外一个端口上的IP地址为130.130.56.12/16,如果需要使用RIP,那么在路由器上需要配置下面的命令:

D-Link(config)#router rip

D-Link(config_rip)#network 192.168.10.0

D-Link(config_rip)#network 130.130.0.0

没有配置好路由过滤

show running-config命令看一看当前的配置情况;

filter infilter out命令都进行了正确的配置;

filter in定义了对收到的路由信息进行过滤的处理;filter out定义了对发送的路由信息进行过滤。

信息是通过access-list来进行过滤的。

如果在路由器上配置了filter命令,可以使用no filter来删除这些命令;

例如,在路由器上配置了对输入过滤的access list rip_filter,为了能够删除它,需要配置:

D-Link(config_rip)#no filter * in rip_filter

删除了所有的filter配置后,等待重新生成路由器;

通过show ip route重新观察路由表,观察需要的路由是否已经出现在路由表中;

如果在路由表中,路由正确的出现了,那么可能是由于filter中引用的access-list导致了需要的路由被过滤;

为了找到问题,逐个添加被删除的access-list,直到需要的路由再次被过滤;

使用show runnint-config命令,确信有问题的access list的确过滤了需要的路由;重新正确地配置access list

子网掩码不匹配

问题发生在一个网络的两个或者三个不同路由器的接口上,对一个网络有不同掩码长度的配置。

在怀疑有问题的路由器上使用show running-config命令看一看当前网络中的每个路由器的配置情况;

使用show ip interface命令来检查每个端口的掩码长度配置。如果在一个网络上的各个路由器的端口配置的掩码长度不一致就有问题;

发现了掩码长度不一致后,可以使用ip address命令来修改端口的地址配置,使掩码长度一致;

没有正确的redistribute路由

这个问题是由于路由的redistribute造成的。

在怀疑有问题的路由器上使用show running-config命令来看一看当前路由器的配置情况; 是否配置正确的redistribute

例如,RIP redistribute静态路由,可以通过下面的命令:

D-Link(config-rip)#redistribute static

检查希望redistribute的路由是否为active的路由;

主机和路由器子网掩码不匹配

在有类的IP网络中,在同一个主网络上,每个路由器和主机都应该具有相同的子网掩码。如果在掩码长度问题上不一致,报文将不会被正确的路由。

在下表中,显示了一个UNIX的主机和一个路由器,如果具有不同的子网掩码,将对一个IP地址做出不同的解释。

路由信息

主机

路由器

目的IP地址

192.31.7.49

192.31.7.49

子网掩码

255.255.255.240

255.255.255.224

地址解释

Subnet address 48, host 1

Subnet address 32, host 17

在主机上将会将IP地址192.31.7.49解释成为在网络192.31.7.48上的主机1;然而,在路由器上由于具有不同的掩码,将会被解释成为在网络192.31.7.32上的主机17。由于网络的拓扑和路由器的配置不同,到达这个地址的报文将会通过错误的端口,被发送到错误的目的网络,或者是被丢弃了。