网络通信 频道

保卫网络“枢纽”—路由器故障分析及排除

路由器是网络中进行网间连接的关键设备。作为不同网络之间互相连接的枢纽,路由器系统构成了基于TCP/IP的Internet的主体脉络,也可以说,路由器是整个网络构架的“枢纽”。
随着网络应用的逐渐普及,越来越多的企业网连入了Internet。而对当前的大多数网络来说,无论是实现网络互连还是访问Internet,路由器是不可或缺的。由于路由器的重要性,对它的管理就成了网管员的日常工作中重要的一部分,而路由器的故障分析和排除也是令许多网管员极为困扰的问题之一。
在本次专题中,我们集中了多位来自一线网络管理人员关于路由器故障诊断的心得体会,供各位网管员参考;也希望大家能把自己在日常管理工作中的经验与各位同行分享。来稿请寄:netadmin@ccu.com.cn

路由器常见故障及分析方法
何巍
路由器的组成

目前常见的路由器从结构上可以分为固定端口和模块化结构两种。固定端口通常被一些低端路由器采用,这类路由器的端口数量和类型都已经固定,通常端口数量较少,路由器的处理能力较低。这种结构的路由器价格低,比较适合于规模较小的网络使用,如小公司或大中型公司的分支机构。模块化的结构一般被中高端路由器所采用。它通常在机箱上预留槽位,用户可以根据自己的需要选配不同类型的接口卡,在高端路由器中处理器也做在板上,可以插在机箱的插槽中,这种板一般称为引擎,而机箱中除电源与风扇外只有作交换用的背板。这样用户不仅可以选配接口卡,还可以为路由器选配不同的引擎,从而定制具有不同处理能力的路由器。
不管路由器的物理结构如何,路由器的逻辑结构通常都是相似的,而这也正是对路由器进行维护与配置时所关心的。下面是与此有关的一些部分:
处理器
路由器的大脑。与计算机的CPU的功能相似,主要完成对整个设备控制功能。
DRAM
动态存储器。相当于PC中的内存。路由器工作时代码和数据存放的地方,一旦断电或系统重新启动,所有的内容将失去。
BootROM
只读存储器。这个存储器的内容是在出厂时编好的,主要是一些最基本启动代码。这里面的内容在出厂后就不能再改写。
NVRAM
一种电可擦写的存储器。往里写数据的速度较慢,但掉电后,里面的内容不会丢失,可以永久保存。通常存放系统软件,平常使用时不需要向里写数据。必要时(如系统软件升级),也可以对里面的数据进行更新。
Flash
与NVRAM类似,也是一种非易失性存储器,不过它通常用来保存配置文件。
系统软件
系统软件是路由器工作的软件平台(在CISCO的产品中称为IOS),它虽然没有具体的物理形态,但它在整个路由器系统的工作中起着至关重要的作用。许多问题都与它有关。
以上对路由器的有关部分作了一个简单的介绍,正确认识各个部分的功能,可以帮助我们了解路由器的工作原理,从而快速有效地确定故障的范围,减少盲目性。

路由器常见故障分类

在路由器出现的故障中,大体可以分为两类:一类是硬故障,一类是软故障。这里的分类方法并没有严格的标准,只是为了方便而已,在实践中应该具体问题具体分析。

硬故障
我们把路由器本身部件存在问题的情况归在这一类里。常见的硬故障通常表现在硬件上。通常有这么几种:
系统不能正常加电
表现为当打开路由器的电源开关时,路由器前面板的电源灯不亮,风扇不转。这时要重点检查电源系统。看供电插座是否有电,电压是否在规定的范围内。如果供电正常,应该检查电源线是否完好,接触是否牢靠,必要时可以换一根,如果还不行,可以判定问题应该出在路由器的电源上。可以看看路由器电源保险是否完好,如果烧了应该更换。如果还不行只好送修。
部件损坏
这类情况在硬件故障中是比较常见的一类。这里的部件往往是接口卡。表现为当把有问题部件插到路由器中时,系统其他部分都工作正常,但无法正确识别有问题的部件,这时往往是因为部件本身有问题。还有一种情况,就是部件可以被正确识别,但做完配置后(保证配置正确),接口就是不能正常工作,这时往往是因为存在物理故障。要确认以上这两种情况,最好用相同型号的好的部件替换怀疑有问题的部件,就可以确认问题是否存在。
系统软件损坏
这种故障似乎应该归入软件故障,但由于这种情况往往是路由器本身存在的问题,且与硬件紧密相关,我们不妨把它归类于此。以cisco的路由器为例,如果路由器开机后总是进入rmon状态,这时往往说明系统软件IOS存在问题,这时不妨就将IOS重新写一遍。
其它
这里所要提到的是这样一些情况,有时我们在对系统软件进行升级时,发现系统无论怎样也不能完成升级,这时不妨检查一下你要升级的软件的大小是否超过了你的路由器的NVRAM的容量。如果超过了,你是无论如何也升不了级的,这时应该先扩充NVRAM的容量然后再升级系统软件。这个问题容易被忽略。

软故障
功能无法实现
在有些时候,你要作某些特定的配置(如NAT),你反复检查,确认配置正确,可相应的功能就是实现不了,这时先不要急着怀疑设备有问题,最好先找一找系统软件的版本号,并查找相关的说明,看一看你所使用的版本的软件是否支持这个功能。因为路由器的系统软件往往有许多版本,每个版本支持不同的功能。如果你当前的软件版本不支持这个功能,那就应该找到相应的软件,先进行升级。
网络规划存在问题
有些时候,你的配置似乎没有问题,可路由器就是不能正常工作,或者工作不稳定,总出现一些莫名其妙的问题。这时不妨先不要急着反复调试,不如回过头来看看你的网络规划,看看这上面是不是有问题。比如是不是有重复使用的网段,网络掩码的计算是否正确等等,往往问题就迎刃而解了。

配置问题

这种问题是最常见的,就是你的配置的确存在问题。比如线路两端路由器的参数不匹配或参数错误等等,这种情况只要认真细致地查找,总可以解决,这里就不多说了。

网络和路由器基础

在国际标准化组织(ISO)制定的网络参考模型(OSI)中,网络被划分为七层,其中与网络互连有关的主要是下面的三层:物理层、数据链路层和网络层,这三层中都可以完成网络的相互连接。
集线器就是工作在物理层的设备,它只是简单地将网络中的信号进行放大和整形,使得信号的传输距离更远,从而扩大网络的覆盖范围。交换机是工作在第二层的设备,即数据链路层,它可以根据数据包的物理地址完成数据的转发,它不能识别逻辑地址。而路由器则是工作在网络第三层即网络层的设备。
路由器能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读”懂对方的数据,从而构成一个更大的网络。路由器利用网络层定义的“逻辑”上的网络地址(即IP地址)来区别不同的网络,实现网络的互连和隔离,从而保持各个网络的独立性,这样可以组成具有许多网络(子网)互连的大型的网络。由于是在网络层的互连,路由器可方便地连接不同类型的网络,只要网络层运行的是IP协议,通过路由器就可互连起来。
路由器(Router)是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时,可通过路由器来完成。因此,路由器具有判断网络地址和选择路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其它路由器的信息,属网络层的一种互联设备。它不关心各子网使用的硬件设备,但要求运行与网络层协议相一致的软件。路由器分本地路由器和远程路由器,本地路由器是用来连接网络传输介质的,如光纤、同轴电缆、双绞线;远程路由器是用来连接远程传输介质,并要求相应的设备,如电话线要配调制解调器,无线要通过无线接收机、发射机。一般说来,异种网络互联与多个子网互联都应采用路由器来完成。
路由器有两大典型功能,即数据信道功能和控制功能。数据信道功能包括转发决定、背板转发以及输出链路调度等,一般由特定的硬件来完成;控制功能一般用软件来实现,包括与相邻路由器之间的信息交换、系统配置、系统管理等。
路由器的主要工作就是为经过路由器的每个数据帧寻找一条非常好的传输路径,并将该数据有效地传送到目的站点。由此可见,选择非常好的路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据—路径表(Routing Table),供路由选择;时使用。路径表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路径表可以是由系统管理员固定设置好的,也可以由系统动态修改;可以由路由器自动调整,也可以由主机控制。路径表有两类:
1.静态路径表
由系统管理员事先设置好固定的路径表称之为静态(static)路径表,一般是在系统安装时就根据网络的配置情况预先设定的,它不会随未来网络结构的改变而改变。
2.动态路径表
动态(Dynamic)路径表是路由器根据网络系统的运行情况而自动调整的路径表。路由器根据路由选择协议(Routing Protocol)提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的非常好的路径。

通过Ping排除路由器故障
杨磊
在路由器的故障分析中,Ping命令是一个常见而实用的网络管理工具,用这种工具可以测试端到端的连通性,即检查源端到目的端网络是否通畅。Ping的原理很简单,就是从源端向目的端发出一定数量的网络包,然后从目的端返回这些包的响应,如果在一定的时间内源端收到响应,则程序返回从包发出到收到的时间间隔,根据时间间隔就可以统计网络的延迟。如果网络包的响应在一定时间间隔内没有收到,则程序认为包丢失,返回请求超时的结果。我们经常让Ping一次发一定数量的包,然后检查收到相应的包的数量,则可统计出端到端网络的丢包率,而丢包率是检验网络质量的重要参数。
在路由器上Ping返回符号的含义如下表所示:
符号           描述
 ! 收到一个响应。
 . 在等待时,网络服务器超时。
 U 目标无法到达,受到错误的PDU。
 Q 源消失(目标设备太忙)。
 M 数据无法分割。
 ? 包类型未知。
 & 报的有效期过了。
在路由器上无法Ping通一个地址的原因有很多种,譬如线路故障,对方路由器的接口没有起来,路由器的路由表中没有该地址的路由信息等等都会造成网络无法Ping通。

实例一:
网络结构如(图1)示。

图1

Router1#Ping 34.0.0.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 34.0.0.4, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
在Router1上无法Ping通Router4的接口,通过使用DEBUG命令来获得更多的信息,便于进一步的分析:
Router1#debug ip packet
IP packet debugging is on
Router1#Ping 34.0.0.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 34.0.0.4, timeout is 2 seconds:
5d21h: IP: s=12.0.0.1 (local), d=34.0.0.4, Len 100, unroutable.
5d21h: IP: s=12.0.0.1 (local), d=34.0.0.4, Len 100, unroutable.
……
Success rate is 0 percent (0/5)
我们看到 “unroutable”的消息,表明在Router1的路由表中不存在该地址的路由信息,Router1不知道该地址向何处转发,现增加一条缺省路由到Router1中:
Router1#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#ip route 0.0.0.0 0.0.0.0 Serial0/0
然后,再在Router1上使用Ping:
Router1#Ping 34.0.0.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 34.0.0.4, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
6d03h: IP: s=12.0.0.1 (local), d=34.0.0.4 (Serial0/0), Len 100, sending
6d03h: ICMP type=8, code=0
6d03h: IP: s=12.0.0.2 (Serial0/0), d=12.0.0.1 (Serial0/0), Len 56, rcvd 3
6d03h: ICMP type=3, code=1
……
再看看在Router2上收到了什么信息:
Router2#
21:56:04: IP: s=12.0.0.1 (Serial1), d=34.0.0.4, Len 100, unroutable
21:56:04: ICMP type=8, code=0
21:56:04: IP: s=12.0.0.2 (local), d=12.0.0.1 (Serial1), Len 56, sending
21:56:04: ICMP type=3, code=1
……
从上面的信息可以看出Router1已经能正确地发送包到Router2,但好象Router2并不知道如何转发地址34.0.0.4,所以Router2发送了“unreachable”的消息给Router1。因此分别给Router2和Router3加上动态路由协议RIP:
Router2#
router rip
network 12.0.0.0
network 23.0.0.0
Router3#
router rip
network 23.0.0.0
network 34.0.0.0
然后,在Router1上Ping Router4的接口:
Router1#Ping 34.0.0.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 34.0.0.4, timeout is 2 seconds:
5d21h: IP: s=12.0.0.1 (local), d=34.0.0.4 (Serial0/0), Len 100, sending.
5d21h: IP: s=12.0.0.1 (local), d=34.0.0.4 (Serial0/0), Len 100, sending.
……
Success rate is 0 percent (0/5)
现在情况看起来好点,Router1能发包到Router4,只是收不到任何从Router4返回的信息。看来Router4上也有问题:
Router4#
6d23h: IP: s=12.0.0.1 (Serial0/0), d=34.0.0.4 (Serial0/0), Len 100, rcvd 3
6d23h: IP: s=34.0.0.4 (local), d=12.0.0.1, Len 100, unroutable
……
Router4收到了ICMP的包,但由于没有到12.0.0.1的路由信息,因此无法响应12.0.0.1所发过来的包。在Router4上增加一条缺省路由:
Router4(config)#ip route 0.0.0.0 0.0.0.0 Serial0/0
这样问题得到了解决:
Router1#Ping 34.0.0.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 34.0.0.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/35/36 ms

实例二:
网络结构如(图2)示:

图2
Router1上增加了一个LAN的接口:
Router1(config)#interface e0/1
Router1(config-if)#ip address
Router1(config-if)#ip address 20.0.0.1 255.255.255.0
结果LAN上的一台PC机能Ping通Router1,但却无法Ping通Router2,而在Router1上却能Ping通Router2。
Router1#Ping 12.0.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 12.0.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/7/9 ms
Router1#
5d23h: IP: s=12.0.0.1 (local), d=12.0.0.2 (Serial0/0), Len 100, sending
5d23h: IP: s=12.0.0.2 (Serial0/0), d=12.0.0.1 (Serial0/0), Len 100, rcvd 3
在路由器上使用普通Ping时,其源IP地址为路由器上Ping包所出去的接口IP地址,在路由器上能通过使用扩展的Ping命令来更改缺省的源IP地址。现在在router1上通过使用扩展的Ping命令来模拟从LAN上发包到Router2:
Router1#Ping
Protocol [ip]:
Target IP address: 12.0.0.2
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 20.0.0.1
Type of service [0]:
Set DF bit in IP header? [no]:          

Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 12.0.0.2, timeout is 2 seconds:
5d23h: IP: s=20.0.0.1 (local), d=12.0.0.2 (Serial0/0), Len 100, sending.
……
Success rate is 0 percent (0/5)
从上面的信息看,当源IP地址为20.0.0.1的时候, Router1能发包到Router2,只是无法收到Router2的响应包。解决的办法很简单,只有在Router2上增加一条路由到20.0.0.0就可以了。Ping成功的基本原则就是被Ping设备也必须知道如何发送回包到发起Ping的源地址。从Router1能Ping通Router2是因为默认下是把包出口的接口的IP地址作为源地址。但由于原先Router2并不知道新的LAN,所以当源地址为新的LAN的时候,就不知道如何发送回包到新的LAN。
从以上两个实例中可以看出来,在Debug命令的帮助下,我们也能通过Ping命令来发现和解决网络中的一些比较复杂的故障,而并不只是把它简单的作为测试网络是否通的工具而已。特别是路由器中的扩展的Ping命令所具有的可以任意设定源IP地址的特性,在实际使用当中更是能给我们在判断网络故障等方面带来很多的方便。

察看路由器端口状态解决故障
付飞
大家做网络工程可能会经常遇到种种关于路由器的问题,但是通常路由器除了看配置外,更常用的办法是通过路由器端口状态看网络故障。下面是笔者的一些经验总结,希望对大家有用。
看路由器的状态,最主要的是看路由器的serial状态和portocol状态。当我们在路由器的特权模式下#show interface interface-number后,出现如下状态:

1、Serial interface-number is down,line protocol is down
可能出现的问题:路由器未加电;LINE未与CSU/DSU联接;硬件错误。
解决方法:检查电源;确认所用电缆及串口是否正确;换到别的串口上。

2、Serial inface-number is up,line protocol is down(DTE)
可能出现的问题:本地或远程路由器配置丢失;远程路由器未加电;线路故障,开关故障;串口的发送时钟在CSU/DSU上未设置;CSU/DSU故障;本地或远程路由器硬件故障。
解决方法:将MODEM、CSU或DSU设置为“LOOPBACK”状态,用“SHOW INT Serial interface-number”命令确认LINE PROTOCOL是否UP,如果UP,证明是电信局故障或远程路由器已经SHUTDOWN;检查电缆所连接的串口是否正确,用“SHOW CONTROLLERS”确认哪根电缆连接哪个串口;键入“DEBUG SERIAL INTERFACE”,如果LINE PROTOCOL还没有COME UP,或键入的命令显示激活的端口数没有增加,证明路由器硬件错误,更换路由器端口;如果LINE PROTOCOL UP,并且激活的端口数增加,证明故障不在本地的路由器上;更换路由器端口。

3、Serial interface-number is up,line protocol is down(DCE)
可能出现的问题:路由器端口配置中的CLOCKRATE丢失;DTE设备未启动;远程的CSU/DSU有故障;电缆连接错误或有故障;路由器硬件错误。
解决方法:将CLOCKRATE加到路由器端口配置中;将DTE设备设置为SCTE模式;确认所用电缆是否正确;如果LINE PROTOCOL仍然DOWN,请更换路由器端口。

路由器的IOS快速恢复
张亚宁
我们首先来了解一下路由器上的flash。flash可以形象地比作我们常用的PC机的硬盘,但远没有硬盘的容量大,主要用处是保存IOS软件,维持路由器的正常工作。若路由器安装了flash,它便是用来引导路由器的IOS软件的默认位置。只要flash的容量足够大,便可以保存多个IOS映象文件,以提供多重启动。flash主要安装在主机的SIMM槽上,或是一块PCMAIC卡。
在路由器的使用和配置过程中,有时因操作失误或系统故障,致使路由器IOS操作系统的丢失,导致路由器无法进入正常工作。
当路由器的IOS操作系统丢失后,路由器便无法进入正常的工作状态,但你也不必紧张和恐慌,下面以Cisco 26系列路由器为例,介绍如何快速地恢复路由器的IOS操作系统。可以找一台PC机和相应的电缆。当然了,PC上应该有相应的fttp软件和你所需要的IOS映象文件。
不过开始恢复IOS之前你要注意几个问题:在连接运行tftp server的PC 机至路由器时,必需使用路由器的第一个以太口。在使用连接电缆时,一定要用交叉线,因这种情况属DTE与DCE之间的连接。tftp server的地址可以随意定义,但必须与路由器定义的地址在同一网段上。
好了,如果你的准备工作做好了。现在就可以开始恢复了:
rommon1>ip _address=192.168.0.2
rommon2>ip_subnet_mask=255.255.255.0
rommon3>default_gateway=192.168.0.2
rommon4>tftp_server=192.168.0.1
rommon5>tftp_file=c2600-I-mz   (IOS文件名)

ip _address=192.168.0.2
ip_subnet_mask=255.255.255.0
default_gateway=192.168.0.2
tftp_server=192.168.0.1
tftp_file=c2600-I-mz

Invoke this command for disaster recovery only.
WARNING:all existing data in all partitions on flash will be lost!
Do you wish to comtinue ?y/n:[n]:
键入y开始下载IOS软件。

升级路由器IOS版本
大象
笔者在山西做工程的时候,遇到了一个这样的问题:为了节省保证证券公司内网的安全,我在路由器上做了NAT,但是却总是不能成功。笔者从硬件、线路检测都没有问题,却怎么也找不到原因在那儿,最后笔者上了Cisco网站,才查到了其中的原因:要使路由器支持NAT,那么路由器的IOS的版本必须是11.1版本以上的,原来是笔者的路由器的IOS版本太低。
下面就介绍笔者其中升级过程,希望对大家有些帮助。
注意:在升级过程中,PC机、路由器切勿掉电!
1、 在PC机上启动TFTP Server程序。
2、 在PC机上启动超级终端程序,用CISCO路由器随机配发的终端电缆将路由器的console口和PC机的串口连接。
3、 用一根绞接的双绞线将路由器的以太网端口和PC机的以太网卡连接。
4、 将路由器的以太网端口的IP地址和PC机的以太网卡的IP地址定义在同一个子网内,保证路由器和PC机能够互相ping通。
5、备份将要升级的CISCO路由器IOS文件。首先进入特权模式,执行
Router# copy flash tftp
6、升级路由器IOS文件。执行
Router# copy tftp flash
系统会提出几个问题,基本上一路按回车即可。之后路由器将自动启动。
7、查看升级是否成功:
Router# sh ver
Cisco Internetwork Operating System Software
IOS (tm) 3000 Software (IGS-I-L), Version 11.0(22), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-1998 by cisco Systems, Inc.
Compiled Tue 08-Dec-98 05:20 by jaturner
Image text-base: 0x0301E7AC, data-base: 0x00001000

文章转载地址:http://www.365master.com/kt_article_show.php?article_id=82&categ_code=10151002

0
相关文章