打印本文 关闭窗口 | ||||||||||||||||||||||
路由器一般故障与特殊故障的解决 | ||||||||||||||||||||||
作者:陈鹏 文章来源:eNet 点击数 更新时间:2009/9/11 23:28:07 文章录入:陈鹏 责任编辑:陈鹏 | ||||||||||||||||||||||
|
||||||||||||||||||||||
路由器相比于集线器和交换机而言,对大家来说可能会有点陌生。因为很多小型局域网使用代理服务器或者软件路由,很少使用专用的硬件路由器。但随着局域网的快速发展,路由器在局域网中的应用也逐渐增加,各种路由器故障也随之接踵而来。 从前面的介绍我们了解到路由器也和计算机一样由硬件和软件组成,当然问题可以出现在硬件也可以在软件上。也许是因为很多管理员对路由器不熟悉或了解不深入的原因,有很大一部分故障都出现在软件上。笔者总结了以下几种故障分类,方便各位读者排障。 1)硬件故障 路由器的硬件包括RAM/DRAM、NVRAM、FLASH、ROM、CPU、各种端口以及主板和电源。硬件故障一般可以从LED指示灯上看出。比如:电源模块上有一个绿色的PWR(或POWER)状态指示灯。当这个指示灯亮着时,表示电源工作正常。接口模块上的ONLINE和OFFLINE指示灯以及TX、RX指示灯。Rx指示灯为绿色表示端口正在接收数据包;如果为橙色,则表示正在接收流控制的数据包。Tx指示灯为绿色表示端口正在发送数据包;如果为橙色,则表示正在发送流控制的数据包。不同的路由器有不同的指示灯表示不同的意义,所以你最好先看说明书。 硬件故障有时也可以从启动日志中查出或者在配置过程中看出。由于路由器在启动时首先会进行硬件加电自检,运行ROM中的硬件检测程序,检测各组件能否正常工作。在完成硬件检测后,才开始软件的初始化工作。如果路由器在启动时能够检测到硬件存在故障,会在系统的启动日志中会记录下来,以便后查。如果在配置路由器时,当你进入某个端口配置时,系统一直报错,那就有可能是端口的问题了。 此外还要做好路由器运行环境的建设,比如:防雷接地以及稳定的供电电源、室内温度、室内湿度、防电磁干扰、防静电等,消除各种可能的故障隐患。 2)系统丢失 这里是指IOS(Internetwork Operating System),它就是路由器的一切配置运行的基础——操作系统。它保存在FLASH中,有时因操作失误或其他不可预料的原因(如:突然断电),致使FLASH中的IOS丢失,导致路由器无法正常启动。 出现此情况时,还可以使用保存在ROM中的备份操作系统软件,这个备份IOS通常比FLASH中的IOS版本低一点,但足以让路由器启动和工作。为了让路由器正常工作,必须重新下载新的IOS到FLASH中。如果FLASH的空间足够大,还可以保存多个IOS软件,并可以选择使用哪个版本的系统。为了能够在发生此类故障后迅速恢复,最好先把IOS软件保存在安全的服务器中,以便急需。 3)系统缺陷 像WINDOWS系统经常受各种病毒的侵扰而死机一样,IOS的系统缺陷也会致使路由器瘫痪,比如:红色代码就曾使某些著名品牌的路由器重启。IOS也有安全上的缺陷,如果不及时升级,不怀好意的人会把你的路由器作为他攻击目标。随着路由器的发展,现在有的路由器有自动防御攻击的功能,比如:抵御DOS攻击,防止密码猜测等。 IOS的系统缺陷一般不是通过补丁程序来修补,而是替换为全新的IOS。一旦发现系统BUG,路由器厂商会及时在网站上公布BUG、受影响的系统和相应的新的IOS软件,您必须选择适合你的路由器型号的版本。思科公司曾称,他们将使用“零故障”的高端路由器软件,它能够消除由电路或人为因素造成的数据或信息丢失故障,即使有错误发生,数据包仍然能够转发下去,从而能够预防网络出现故障,这样就会减少网管的负担。 4)密码丢失 路由器中的密码有两个地方需要设置。从前面的介绍可以知道访问路由器时有两个基本的访问模式:用户模式和管理模式。为安全起见,在进入这两个模式时均需要设置密码。虽然大家都知道密码是管理员的拥有最大权限的钥匙,但还是有人会把它给忘了。甚至有人设置的密码太简单以至于被黑客恶意进入并修改了密码。其实,只要我们细心一点,这些低级错误都是可以避免的。 万一密码丢失,别怕,因为路由器提供了密码恢复方法。路由器除了两个基本访问模式(用户模式和管理模式)外,还有一种RXBOOT模式,在这个模式下可以很方便的恢复路由器密码。当然只有计算机通过CONSOLE口建立超级终端连接后才能进入。还有些路由器在面板上提供了更方便的RESET键,只要复位几次,即可恢复原始密码。
5)配置文件丢失 这也是一个经常发生的故障。我们首先来看一下路由器的启动过程: (1)系统硬件加电自检。运行ROM中的硬件检测程序,检测各组件能否正常工作。完成硬件检测后,便进入下一步。 (2)运行ROM中的BootStrap引导程序。 (3)寻找并载入IOS系统文件 (4)IOS装载完毕,系统首先在NVRAM中搜索保存的Startup-Config文件,进行系统的配置。如果NVRAM中存在Startup-Config文件,则将该文件调入RAM中并逐条执行。随后依据配置文件中的命令进行接口地址设置、路由处理等工作。如果不能成功引导Startup-Config文件,系统则进入Setup模式,以人机对话方式进行路由器的初始配置。 也就是说如果启动配置文件丢失,系统不能对路由器进行具体配置,无法完成所需的功能。若要恢复配置文件,必须先连接到路由器上,通过TFTP方式将计算机上的备份配置复制到NVRAM上。所以我们每次修改过路由器的配置后,都要做好备份工作。 6)配置错误 任何一个管理员在初学路由器时,都会出现各种意想不到的配置错误,比如:路由协议配置错误、IP地址和掩码错误、ACL(访问控制列表)错误、修改配置后没有保存等等、。比如:访问控制列表错误就是一个典型的配置错误。ACL是一张应用于路由器某个接口的一组命令列表,这个列表告诉路由器哪种数据包应该接收,哪种必须禁止,从而达到数据过滤的效果,这是一个有效控制网络安全的手段。这个列表的书写涉及到源地址、目标地址、端口号这几个参数。ACL是顺序执行的,而且在所有ACL的最后会有一个默认的、不可见的“deny any”语句,即禁止任何通信。所以在定义某个ACL时,至少有一个PERMIT语句,否则这个访问列表是没有意义的。初学者往往会忽略这一点而导致网络不通,还有可能会写错ACL中使用的端口号,ACL语句的顺序不恰当,或者通配符(WILDCARD,可能会和掩码混淆)不正确,接口应用错误(OUT和IN混淆)等等。 这些配置上的错误是不可避免的,关键是我们能否在这些一次又一次的错误中学会正确的配置。所以说一个好的管理员一定是喜欢学习、喜欢研究的。 7)外部因素 这是指除路由器之外的因素导致疑似路由器故障。比如:客户端计算机的网卡故障、线缆接头不正确、线缆串扰等原因可能会发生数据碰撞、网络流量增大、路由器负载增加,网络变慢甚至瘫痪。如果拨号路由器的WAN口线路发生故障,就会导致不能拨号。 以上的几种分类也许还有不太全面的地方,在实际的应用过程中,还会碰到各种意想不到的问题。笔者从平时的工作中得出了一些经验,望与大家分享。 路由器相比于交换机和集线器而言,它有强大的系统检测和日志记录功能。大部分的故障都有详尽的描述,通过日志很方便的查找到故障原因。 首先,排查路由器之外的故障,并检查路由器的外部表象,可有效的辨别硬件故障所在。比如:是否有客户端计算机的故障,是否有外部线路上的故障,是否下联的交换机有故障,是否有接头上的故障,电源模块、端口模块等插槽的LED指示灯是否有故障指示,风扇是否旋转,端口的连接是否正确等等。虽然这些外部指示灯有时不能提供具体的故障原因,但它能够为我们快速的发现故障提供直接线索。比如:有一个路由器的风扇不能工作了,首先检查电源线是否和提供电源的电源模块是否正确连接,并检查电源指示灯。如果是绿色,说明风扇有电源连接,则风扇模块可能没有正确安装或已经损坏;如果是红色,说明至少有一个风扇发生故障,可先检查风扇是否被卡住。如果排除了风扇被卡住的情况,问题还存在的话,请更换风扇;如果指示灯不亮,则是电源被关闭。 其次,检查系统和启动日志。使用路由器提供的专用线缆,将计算机的串口连接到路由器的CONSOLE端口上。如果启动路由器,便可在超级终端上清楚的看到路由器的启动过程,在硬件自检过程中,如果发现错误会在终端上显示错误提示信息,并记录在启动日志中。如果路由器能够找到IOS文件,并成功的引导,则说明IOS没有问题。如果在FLASH中没有找到IOS软件,则需要重新下载IOS到FLASH中。从路由器的启动过程可以看出,IOS引导完毕后,便将Startup-Config文件调入内存。如果不能成功从NVRAM中找到启动配置文件,也需要重新下载。对于IOS和启动配置文件丢失的情况,我们可以在紧急情况下,进入启动模式(这是一个常用于故障处理的模式),使用TFTP协议从计算机(此机的网卡必须使用交叉线连接到路由器的以太网管理端口上)上启动和调入配置文件,临时救急。 再次,检查配置文件。配置文件有两个存在方式:启动配置文件和活动配置文件。前者是指保存在NVRAM上的启动文件。路由器启动后便调入此文件,进行路由器的具体配置,关机后不会丢失。活动配置文件是指在路由器的内存中正在运行的配置文件,关机或重启后,即会丢失。如果路由器刚刚启动,两者是一样的。如果管理员对路由器的配置进行了修改,并在内存中激活,这时两者是不一样的。为了方便管理员检查,有的系统还提供了专门的命令。比如,在Enterasys XP-Edition中,可以使用“diff startup”命令,快速查找出活动配置文件和启动配置文件的区别。很多初学者,常常忘记把修改后的活动配置文件保存入启动配置文件,当路由器下次启动后没有启用修改后的配置仍然使用原来的配置文件,以至于怀疑路由器出现某种故障。 然后,检查配置内容。这是路由器故障检查的重中之重,因为路由器的各种功能的实现都是由配置文件中一条一条的命令来实现的。比如:接口地址的配置、路由协议的配置、ACL的配置、SNMP的配置、日志的配置、QOS的配置、RMON的配置、NAT地址转换、端口的开关等等。如果在配置中出现语法错误的语句,路由器会在初始化时显示错误提示,在CLI(Command Line Interface命令行接口)中配置时,也有错误提示,并都会记录在系统日志中。配置过程中,因为有的语句必须放在某些语句的后面,所以要注意某些语句的顺序,同时还要注意注释语句的使用。 最后,检查硬件。在以上的步骤中确定了某一方面的故障后,如果发现是硬件故障,则需要拆机更换硬件部件。不过这一过程一般不需要你亲自动手,往往是供应商或厂商的工程师来实施的。 还有,我们遇到自己无能为力的故障时,除了凭借自己的经验、产品说明书、厂商网站以外,要迅速的想到你的产品供应商,并与之联系,以帮助问题的快速解决。如果时间拖得越长,就会超出产品包修、包换的期限。
路由器一般故障的解决方法 故障一:病毒引起路由器过载 此次故障发生地的拓扑结构是这样的:使用一台EnterasysSSR8000作为边界路由器,同时也用它把校园内部划分为8个虚网,每个虚网各有一个堆叠的二层交换机作为台式机和笔记本的接入设备,主干为千兆,百兆到桌面。 那天,我接到一个同事的求助电话,说他的机器不能上网了。这个同事的主机所在的虚网和网络中心不在同一个虚网中。听同事介绍说5分钟前还好的(能够上网),现在不知道为什么就不好上网了。而且他的机器(安装的系统为WindowsXP)最近没有安装什么新的程序,没有移动过电脑,也没有拔过网线。 首先,排查网络客户端的错误配置。进入MSDOS方式使用IPCONFIG命令检查主机的IP地址配置: C:>ipconfig Windows IP Configuration Ethernet adapter 本地连接: Connection-specific DNS Suffix . : IP Address. . . . . . . . . . . . : 210.16.2.30 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . 210.16.2.1 上面显示的配置是正确的,然后ping自己的IP地址 C:> ping 210.16.2.30 Reply from 210.16.2.30: bytes=32 time<1ms TTL=128 Reply from 210.16.2.30: bytes=32 time<1ms TTL=128 这说明IP地址是生效的,网卡工作正常。 再使用PING命令,测试从本机到网关的连接情况: C:> ping 210.16.2.1 –t Reply from 210.16.2.1: bytes=32 time<1ms TTL=128 Reply from 210.16.2.1: bytes=32 time<1ms TTL=128 …… 从主机向网关发送的数据包,全部都得到了回应,线路是连通的。打开浏览器,也能够正常上网,一点儿都没问题。现在的网络是正常的!?正在怀疑的时候,发现网络又不通了!发现ping出的数据包未能到达网关。奇怪,刚才还好的,怎么现在又不通了呢?难道是网卡或者系统有问题?谁知过了一会儿,发现又通了。幸亏那天带了笔记本,于是我把台式机上的网线插到我的电脑上,配置好IP地址后ping网关,也出现时断时续的情况。断开的现象大概持续了50秒钟,然后又恢复正常。这回可以基本排除主机的问题了,因为两台不相干主机同时出现同样此类问题的几率几乎为零。鉴于此现象,我首先排除了连接线缆的故障,因为连接的线缆不可能出现这种时断时续的情况,故障最有可能会出在线缆的另一端——二层交换机上。于是来到这栋楼的设备间,查看交换机的状态,这是一个由两台交换机的堆叠,其中一台交换机上有一个上联的千兆端口。我把笔记本接到交换机的其中一个端口上,再ping网关。还是同样的故障,而且还发现每过4分钟到10分钟,网络就会断一次,并且40到50秒后又恢复正常。经过观察发现:没有发现端口指示灯的异常情况,说明交换机的各个端口均正常。难道真是交换机的内部系统出现故障了?算了,索性把交换机重启一下。谁知重启后,故障依旧。可能交换机真的出了问题,我正想是否要把堆叠模块换到另外一个交换机上的时候,我的手机响了,又一个同事告诉我他的机器也出现相同的故障现象。而这个同事的主机在另外一个虚网中,同时出现相同的时通时断情况,那极有可能是连接这两个虚网的路由器出了问题。 这回问题集中到路由器上了。我急忙回到网络中心,从路由器的外部指示灯上看,没什么异常现象。在我的网管机上ping路由器的地址(我的网管机是直接连在路由器的百兆模块上的),也是时通时断。我又继续观察了一段时间,发现每过4分钟到10分钟,路由器所有模块的指示灯都会同时熄灭,接着控制模块上的“HBT”灯闪烁,然后“OK”灯亮起,最后所有模块的指示灯均显示Online。我解释一下,“HBT”灯闪烁表示路由器正在启动,也就是说正在自动重启,而且40秒左右的网络断开时间正好是路由器的重启所需的时间。现在问题的查找工作已经结束,肯定是路由器出了故障。具体是什么问题,还需要进一步的检测。 趁着路由器正常工作的时候,把笔记本的COM口使用路由器的专用CONSOLE线连接起来,建立超级终端。在管理模式下使用命令“system show bootlog”查看系统的启动记录,发现各个模块的加载均属正常。造成路由器重启的原因,最大的可能就是CPU的利用率达到100%。使用“system show cpu-utilization”命令查看CPU的使用率: SSR# system show cpu-utilization CPU Utilization (5 seconds): 50% (60 seconds): 60%(前者是指5秒钟内CPU平均使用率为50%, 后者是60秒钟内CPU平均使用率为60%) 果然,连续使用此命令后得知CPU利用率正在逐渐上升,当达到95%的时候路由器便自动重启。看来路由器的负载太大了,因为平时正常情况下,CPU的使用率仅为1%—6%左右。当网络使用高峰期的时候CPU的利用率会稍微高一点。但到底是什么让路由器过载呢?幸好以前曾经给路由器设置过日志记录,并把日志发送到一个日志服务器上。但是打开这台服务器所记录的日志并未能找到有用的线索。因为当路由器负载过大时,它已经不能往日志服务器上发送日志了,我只能用“system show syslog buffer”命令来查看当前系统缓存中的日志记录: SSR# system show syslog buffer 2003-09-10 09:28:32 %ACL_LOG-I-DENY, ACL [out] on "uplink" ICMP 210.16.3.82 -> 210.55.37.72 2003-09-10 09:28:32 %ACL_LOG-I-PERMIT, ACL [out] on "uplink" ICMP 210.16.3.82 -> 61.136.65.13 2003-09-10 09:28:32 %ACL_LOG-I-DENY, ACL [out] on "uplink" ICMP 210.16.3.82 -> 202.227.100.65 2003-09-10 09:28:32 %ACL_LOG-I-DENY, ACL [out] on "uplink" ICMP 210.16.3.82 -> 193.210.224.202 2003-09-10 09:28:32 %ACL_LOG-I-DENY, ACL [out] on "uplink" ICMP 210.16.3.82 -> 218.32.21.101 ……………… 很明显,“210.16.3.82”这台在使用ICMP协议向其他主机发起攻击,据此判断,这台主机要么是中毒,要么是被黑客利用了。鉴于当时的情况分析,可能是网络中存在中了“冲击波杀手”病毒的主机。该病毒使用类型为echo的ICMP报文来ping根据自身算法得出的ip地址段,以此检测这些地址段中存活的主机,并发送大量载荷为“aa”,填充长度92字节的icmp报文,从而导致网络堵塞。而且病毒一旦发现存活的主机,便试图使用135端口的rpc漏洞和80端口的webdav漏洞进行溢出攻击。溢出成功后会监听69(TFTP专业端口,用于文件下载)端口和666-765(通常是707端口)范围中的一个随机端口等待目标主机回连。 根据该病毒的传播机理,立刻在路由器上设置访问控制列表(ACL),以阻塞UDP协议的69端口(用于文件下载)、TCP的端口135(微软的DCOM RPC端口)和ICMP协议(用于发现活动主机)。具体的ACL配置如下: ! --- block ICMP acl deny-virus deny icmp any any ! --- block TFTP acl deny-virus deny udp any any any 69 ! --- block W32.Blaster related protocols acl deny-virus deny tcp any any any 135 acl deny-virus permit tcp any any any any acl deny-virus permit udp any any any any 最后再把deny-virus这个ACL应用到上联接口(uplink)上: acl deny-virus apply interface uplink input output 这样就可以把“冲击波杀手”从网络的出口处堵截住。为了防止已经感染“冲击波杀手”的主机在校内各个虚网之间传播,还得把这个ACL应用到校内各虚网的接口上。这时使用再“system show cpu-utilization”查看CPU的使用率,它又恢复到正常状态,等待了一段时间后,再没有出现重启现象。 由于路由器不能自动丢弃这种病毒发出的攻击数据包,而导致了路由器重启。为了彻底解决问题,还得升级路由器的IOS(可以使用“system show version”来查看当前使用的IOS的版本)。记得两年前在“红色代码”病毒盛行的时候,也出现过路由器因过载而不断重启的现象,升级IOS以后就恢复正常了。于是立刻和设备供应商取得联系并获得最新的IOS映像文件。至此,路由器故障全部解决。 从这场故障处理中,我们可以得到这样的教训:时刻关注网络上事态的发展,并作出相应的解决方案,而且付诸实施。教育网用户可以在http://www.ccert.edu.cn网站上订阅安全公告服务,一旦有新的漏洞出现,CCERT安全响应小组会自动发送邮件给你。当时暑假期间得知“冲击波”后,由于及时在路由器上做了设置,所以“冲击波”病毒没有在网内泛滥,但随后的“冲击波杀手”没有及时设置相应的ACL,所以才导致这次的网络瘫痪。实际上,在这次的“冲击波”和“冲击波杀手”的袭击中,很多城域网也因此陷入瘫痪。这些经历一次又一次的警告我们:时刻关注网络安全,及时积极的应对。
故障二:ICMP Redirect 这是个什么问题呢?首先给大家描述一下。虽然路由器在运行时没有出现明显的异常现象,但是却经常看到这样的日志: Jul 09 15:54:21 %ACL_LOG-I-PERMIT, ACL [out] on "uplink" ICMP 209.24.79.200 -> 219.157.38.52 Jul 09 15:54:21 %ACL_LOG-I-PERMIT, ACL [out] on "uplink" ICMP 209.24.79.200 -> 219.167.139.16 Jul 09 15:54:21 %ACL_LOG-I-PERMIT, ACL [out] on "uplink" ICMP 209.24.79.200 -> 61.132.1.43 Jul 09 15:54:23 %ACL_LOG-I-PERMIT, ACL [out] on "uplink" ICMP 209.24.79.200 -> 24.232.18.109 Jul 09 15:54:23 %ACL_LOG-I-PERMIT, ACL [out] on "uplink" ICMP 209.24.79.200 -> 211.146.112.211 ……………………. 其中“209.24.79.200”是路由器的上联接口地址,我不知道为什么会出现这么多从路由器发到这些没有规律的IP的ICMP数据包。查查这些IP,有的来自国内各省,有的来自日本,有的来自美国、阿根廷、新加坡,毫无规律。难道是有人在攻击路由器?或者是内部有肉机被人用来攻击?而且奇怪的是只有出去的数据包的记录,却没有记录进入的数据包? 说起ICMP,大家肯定是熟悉不过的了。最常见的ping命令就是使用ICMP的。ICMP的全称是Internet Control Message Protocol(网间报文控制协议),它是IP不可分割的一部分,用来提供错误报告。一旦发现各种错误类型就将其返回原主机,基于ICMP的攻击方法也多种多样。到底是什么原因导致生成这样的日志?让我带大家一起来查一查。 我校的拓扑结构是一个简单的星型结构,中心节点就是一台三层交换式路由器(Enterasys 公司的SSR8000)。其中一个端口上联到CERNET,其他端口都是内部连接,且为内部网络基于端口划分了多个VLAN。为了查看该信息是否从网络内部发出,又给内部VLAN的各个接口设置了日志,还是没有相关的ICMP记录(原先的日志只是记录上联接口的数据)。排除了内部计算机发出ICMP数据包的可能,那问题就可能出现在上联接口上,而日志记录只能记录到协议层的信息,不能记录更深层次的数据包。如何查看上联接口的数据包呢,比较方便的方法就是使用端口镜像功能,利用连接在镜像端口上的计算机来抓取和分析数据包。 首先下载数据包分析软件WINDUMP(下载地址:http://windump.polito.it)。在A计算机上,安装之,然后连接到将要镜像的RJ45端口上。再在B计算机上,也安装WINDUMP,并连接到当前的VLAN1(网关:222.222.222.1,掩码:255.255.255.0)中。 一切准备就绪后,接着就是开始端口镜像。使用计算机B登录到路由器,进入配置模式,输入以下命令: SSR(config)# port mirroring dst-ports et.1.3 src-ports gi.4.1 上面的命令把上联端口(gi.4.1)镜像到目标端口(et.1.3),目标端口就是计算机A连接的端口。在计算机A上,进入DOS提示符,转到WINDUMP所在的目录,输入命令: C:\> WINDUMP –N windump30alpha: listening on \Device\NPF_{911DB410-C01E-49E8-B524-50132C6A56A8} ……… 15:57:17.516203 IP 222.222.222.17.80 > 221.215.142.50.1264: . 46721:48181(1460) ack 0 win 16336 (DF) 15:57:17.516337 IP 222.222.222.17.80 > 221.215.142.50.1264: . 48181:49641(1460) ack 0 win 16336 (DF) 15:57:17.518043 IP 220.198.22.202.3196 > 222.222.222.99.8882: . 137236:138676(1440) ack 260501 win 64800 (DF) 15:57:17.518162 IP 218.79.246.212.64627 > 222.222.222.191.16881: S 2898301189:2898301189(0) win 64240 (DF) 15:57:17.518558 IP 209.24.79.200> 218.79.246.212: icmp 36: host 222.222.222.191 unreachable (DF) ……….. (上面的记录已做过筛选。第一句的参数“-N”表示IP地址或者端口号转换为主机名或端口名,第二句表示windump开始在所选网卡上监听,第三句开始就是WINDUMP记录的信息。) 同样在计算机B上也运行WINDUMP: C:\> WINDUMP –N windump30alpha: listening on \Device\NPF_{911DB410-C01E-49E8-B524-50132C6A56B4} ………… 15:57:54.695935 arp who-has 222.222.222.191 tell 222.222.222.1 15:57:55.191475 arp who-has 222.222.222.136 tell 222.222.222.1 15:57:57.033354 arp who-has 222.222.222.210 tell 222.222.222.1 15:57:57.039057 arp who-has 222.222.222.69 tell 222.222.222.1 …………(已作筛选) 查看路由器上的日志,我任意找到其中一条关于ICMP的记录: Jul 09 15:51:50 %ACL_LOG-I-PERMIT, ACL [out] on "uplink" ICMP 210.29.42.70 -> 218.79.246.212 经查,在计算机A上采集的数据中,有几条记录(最后两条)包含“218.79.246.212”的IP和此记录匹配。从这两句的记录来看,第一行表明从218.79.246.212的tcp端口64627向222.222.222.191的16881端口发送报文。S标志表明设置了SYN标志,报文的流序号是2898301189,没有数据,有效的接收窗口是4096字节,最大段大小(max-segment-size)的选项,请求设置mss为1452字节。很明显,这是一个请求报文。而第二句表明路由器给218.79.246.212返回了一个“unreachable(主机不可达)”ICMP 信息。这说明在这个网段中没有找到IP地址为“222.222.222.191”的计算机。 原来,当路由器接收到一个不知道IP地址(也就是说,路由器不知道目标路由)的数据包时,它会尝试发送ARP广播来解析,如果有目标主机回应这个ARP广播,则路由器会把数据包转发给目标主机。如果路由器没有接收到回应,它将会为接下来的4个数据包发送ARP请求,如果当第6个数据包到达时,还没有解析出目标主机的MAC地址,默认情况下,路由器将会在接下来的20秒钟内丢弃第6个以及后续的数据包,并且返回“主机不可达”的ICMP信息给源主机。 从计算机B的记录中的第一句也可以得到证明,路由器向该网段中发出一个ARP查询,查找IP为“222.222.222.191”的计算机,结果没有计算机相应,路由器则认为该网段中没有目标主机,所以返回一个ICMP信息给源计算机说明目标主机不可到达,以通知源主机这里存在问题,同时丢弃原始数据包。 至此问题已经明朗,原来路由器记录的ICMP都是路由器发送给源地址的“Destination Unreachable”信息。那么为什么这些外面的IP地址会找校内的计算机呢?从采集的数据分析不难发现,这些外部主机主要是找内部的固定的三个计算机。经过历史日志的检查,可以发现这三台计算机的主要相同的记录: 07:52:19 Jul 09 07:50:02 %ACL_LOG-I-PERMIT, ACL [out] on "uplink" TCP 222.222.222.136:3159 -> 61.173.209.101:6881 08:00:15 Jul 09 07:53:50 %ACL_LOG-I-DENY, ACL [out] on "uplink" TCP 222.222.222.12:3194 -> 219.121.133.197:6883 08:00:15 Jul 09 07:57:59 %ACL_LOG-I-DENY, ACL [out] on "uplink" TCP 222.222.222.220:3196 -> 210.238.6.177:6881 这三台主机连接目标主机的端口固定在6881到6889之间,而这些端口正是现在比较流行的BT下载的常用端口。难怪以前没有出现过此类日志,直到最近BT流行时,才出现的。主要原因是,这些主机使用BT下载时,在BT服务器上留下了记录,以便其他的主机到这些主机上下载资源,而当这些主机关机后,路由器就告诉它们找不到这些主机了。 由于日志服务所记录的是第三层以上的信息,而路由器接收到的数据包在第二层上就被丢弃了,所以没有在日志中记录这些输入的异常数据包。为了减少路由器的日志量,在配置模式下使用“ip disable icmp-messages destination-unreachables”来禁止此类信息的转发。 这两个故障均由ICMP引发,而且从某种角度上讲都不是系统配置上的问题,而是由于外部因素引起的。此类故障需要我们经过一定的分析才能查出原因,再作相应的配置才能排除故障。
路由器典型故障的解决办法 故障一:IOS丢失 首先用路由器的专用CONSOLE线缆把笔记本的COM端口和路由器的CONSOLE端口连接起来,在笔记本上启用超级终端与路由器建立连接。接通路由器的电源后,便可以在超级终端上看到如下的加载信息: Processor: R5000 rev 2.1 [0x2321], 198 MHz, (bus: 66 MHz), 64 MB DRAM I-Cache 32 KB, linesize 32. D-Cache 32 KB, linesize 32 L2-Cache 512 KB, linesize 32, cache enable Mounting 8MB Linear external flash card …Done initializing system …….Failure Autoboot in 2 seconds – press ESC to abort and enter prom. 最后一句表明,系统初始化失败。在看到“Autoboot in 2 seconds – press ESC to abort and enter prom.”后,随即按下“ESC”键,进入启动模式。 在默认情况下,路由器启动时引导FLASH卡中的IOS系统映像文件,如果该IOS文件丢失,系统便初始化失败。要成功引导系统,必须重新下载系统映像文件。我们可以使用下面的步骤以恢复丢失的IOS: 将笔记本电脑的IP地址和路由器以太网管理端口的地址设置为同一个子网。比如:把你的笔记本电脑设置IP为10.10.10.2,掩码为255.255.255.0。并且用交叉线把电脑的网卡和SSR的en0相连。 在笔记本上安装TFTP服务软件。 这个软件实际上就是在计算机上开始打开了69端口来接受传入的数据,或通过此端口把数据传出。它可以安装在WIN9X也可以装在WINDOWS2000或者WINDOWSXP上。然后把路由器的IOS系统映像文件放在TFTP的默认路径下。 设置路由器上en0的IP地址为10.10.10.1,掩码为255.255.255.0(在启动模式下设置)。 SSR-BOOT> set netaddr 10.10.10.1(设置路由器的IP地址) SSR-BOOT> set bootaddr 10.10.10.2(设置启动的TFTP服务器的地址) SSR-BOOT> set netmask 255.255.255.0(设置子网掩码) 设置完毕后,使用PING命令测试路由器和笔记本的连通性。如果能够正确连通,则使用以下命令: SSR-BOOT> boot ssrimage(“ssrimage”就是放在TFTP服务器根目录下的映像文件名) SSR-BOOT> reboot(使路由器重启) 路由器启动完后,进入管理模式,把系统映像文件复制到flash卡上。这个命令的格式是这样的: System image add 例如: SSR# system image add 10.10.10.2 ssr8305 Downloading image ‘ssr8305’ from host ‘10.10.10.2’(正在下载) To local image ssr8305 (takes about 3 minutes) Kernel:100% Image checksum validated.(检查映像文件) Image added.(下载成功) “10.10.10.2”是电脑的IP地址,“ssr3200”是存放在TFTP SERVER根目录下的系统映像文件名。在“kernel:”之后会出现进度指示:从0%一直变化到100%。下载完毕后,进行自动校验,判断是否正确。 至此,系统映像文件已经下载完毕,键入system image list 来查看PCMCIA FLASH卡上的系统映像文件列表,如果您的PCMCIA卡的容量大的话,可以存放2个系统映像。然后使用system image choose 命令来选择那个系统映像作为SSR下次启动时的系统。 例如: SSR# system image list Images currently available: Ssr8304 Ssr8305 SSR# system image choose ssr8305 Making image ssr8305 the active image for next reboot 这个操作,您不需要激活,新的系统映像要在下次重启之后才会被使用。选择该系统映像后,下次用system image list显示系统映像文件列表时,则会在此文件后显示“[selected for next boot]”。 当路由器启动时,在超级终端上如果看到下面的信息就表明IOS加载成功了: ……………… using link: bootsource link pointed at file:/pc-flash/boot/xp9050/ source: file:/pc-flash/boot/xp9050/ Loaded version file Loading kernel (base 0x80001000, size 50592) (base 0x8000d5a0, size 3995697) 100% -Image checksum validated 此类故障的发生率比较高,故管理员一定要学会,虽然不同品牌的路由器所使用的具体命令不尽相同,但基本步骤或原理是类似的。
故障二:启动配置文件丢失 在路由器启动时,如果IOS加载成功,但不能对路由器的各个模块、各个接口不能初始化,则说明没能在NVRAM上成功的找到启动配置文件。启动配置文件丢失后,路由器可以正常启动,但是不能对路由器的各个模块进行具体配置。启动配置文件的重新下载也是通过TFTP进行。 和IOS丢失的处理方法一样建立笔记本和路由器之间的连接,并在笔记本上启动TFTP服务。登录路由器,进入管理模式后,先设置en0端口的IP地址。 SSR(config)# interface add ip en0 address-netmask 10.10.10.1/255.255.255.0 “Interface add ip”这个命令是为现有的接口配置第二个地址,因为en0这个管理接口是系统默认已经建好的回环接口。 此处的“en0”表示的网络接口就是控制模块那个“10/100M Mgmt”以太网管理端口,在配置模式下,使用“COPY”命令复制配置文件。 SSR# copy tft-server to startup (在管理模式下) TFTP server ? 10.10.10.2 (输入TFTP服务器的地址) Source filename? Ssr-20030327 (输入保存在TFTP服务器根目录下配置文件的文件名) Are you sure you want to overwrite the Startup configuration [no]? y ################################## %TFTP-I-XFERRATE, Received 17263 bytes in 0.0 seconds %CONFIG-W-STARTNOTACT, Warning-startup configuration commands are not active, use 'copy startup to active' to make them active. (系统提示如果要把配置文件激活,请使用命令“copy startup to active”。也可以重启路由器。) SSR# copy startup to active …………………………………… (系统正在删除当前的活动配置,完毕后将重新加载恢复的配置文件) 把TFTP服务器上的配置文件复制到SSR上,除了使用“copy tftp-server to startup”命令之外,还可以使用“copy tftp-server to active”命令把配置文件复制到SSR的内存中。系统立即删除原来内存中的活动配置,并加载新的配置。例如: SSR# copy tftp-server to active TFTP server? 10.10.10.1 Source filename? ssr-20030327 Are you sure you want to erase the active configuration [no]? y ################################## %TFTP-I-XFERRATE, Received 17263 bytes in 0.0 seconds …………………………………… (系统正在删除当前的活动配置,完毕后将重新加载新的配置) 但最后还得使用“copy active to startup”把活动配置文件复制到启动配置文件。这样才能在下次启动时,载入恢复的启动配置文件。 故障三:密码丢失 对于有的人来说,这是一个最令人头疼的问题。为了安全起见,很多人在设置密码时,设计了很长很复杂的密码。可是时间一长,密码就忘掉了。 由于密码是存贮在启动配置文件上的,只要系统不读取启动配置文件,密码也就没有了。从这个原理考虑,首先不能让SSR读取启动配置文件。我们可以按以下步骤做: 用专用CONSOLE线把PC连接到SSR的CONSOLE口。并打开超级终端,连接到SSR。 重启SSR。 当看到超级终端上显示“Autoboot in 2 seconds – press ESC to abort and enter prom.”时,立即按下ESC键。(这个消息很快会消失,你事先要准备好按ESC键) 系统进入BootPROM模式(启动模式)后,使用命令cp命令把启动配置文件备份为startup.sav(这个文件名可以自己任意取),以作备用。 SSR-BOOT> cp /int-flash/cfg/startup /int-flash/cfg/startup.sav 在上面的cp命令中有两个参数,第一个参数“/int-flash/cfg/startup”是源文件,第二个参数是目标文件。) 然后删除startup文件(这是系统默认的启动配置文件名称)。 SSR-BOOT> rm /int-flash/cfg/startup 重启SSR。 SSR-BOOT> reboot 重启后,进入用户模式,再用enable命令进入管理模式。把备份配置文件startup.sav复制到当前暂存器(scratchpad,这是在活动配置文件激活之前暂时存储配置文件的地方)中。 SSR> enable SSR# copy startup.sav to scratchpad 输入config命令,进入配置模式。 SSR# config SSR(config)# 输入show命令(查看配置文件的内容)。并找到“system set hashed-password login ….”和“system set hashed-password login ….”两条命令,并记住它们前面的行号。然后使用negate语句删除这两条命令。 SSR(config)# negate 120 scratchpad (删除暂存器中的命令,而不是活动配置文件中的命令,所以一定要在negate语句后加上“scratchpad”。) 再用save active命令把暂存器中的配置文件保存到当前活动配置中。 SSR(config)# save active 接下来,再设置密码: SSR(config)# system set password login <密码字符串> SSR(config)# system set password enable <密码字符串> 需要说明的是在“system set password”命令中,如果密码字符串为空,则意味着取消当前活动配置文件中的密码,而且此处的密码字符串是明码显示的。 密码设置完后,不要急于保存到启动配置文件中。首先测试你刚才设置的密码是否正确有效,在PC上建立TELNET连接,登录到路由器输入刚才设置的密码,以验证密码是否正确。 在通过口令测试无误后,再用“save startup”把当前活动配置保存到启动配置文件中。 SSR(config)# save startup 在启动配置文件中的密码是加密形式,可以“system show startup”查看。例如: SSR(config)# show 23: system set hashed-password login fdikHj ej98432fdu954jfdjur89340329jjmvd9ud7k 24: system set hashed-password enable kejKiu irjwi304kj27ylm4jej9fdjrel394jrke98hjjkj 这类的典型故障无需过多的分析,因为故障现象或者启动日志已经明确的告诉了我们故障所在,主要是学会如何解决这些故障。
路由器特殊故障的解决方法 故障一:FLASH故障 这是路由器FLASH所发生的故障,此次故障主要是由电源引起的。我的一个朋友所在的学校刚刚建立校园网还不到半年,就出现了这种严重的故障。听了朋友诉苦之后,才了解到:网络中心机房的电力线路经常发生故障,每隔三到四天就会停一次电。也就是说在这半年之内,大约发生了50多次停电。由于是中小型局域网,中午和晚上没有人值班而且停电大多发生在下午下班后或者中午午休时,所以当时没有值班人员。即使UPS有2小时在线,也无济于事。最后一次事故就是发生在某天的中午,当管理员下午上班时,发现所有的机器全部停止运作。肯定是停电了,重新接通电源后,服务器能够正常启动。但是打开路由器(Enterasys的SSR8000)时,不能启动了。 根据我们介绍的分析步骤,先检查路由器的外部各种故障指示。发现控制模块上的ERR指示灯一直闪烁,说明故障可能出现在控制模块上。但具体是物理故障还是软件上的问题呢?要连接到路由器上才会知道。 首先用路由器的专用CONSOLE线缆把笔记本的COM端口和路由器的CONSOLE端口连接起来,在笔记本上启用超级终端与路由器建立连接。打开路由器的电源后,便可以在超级终端上看到如下的加载信息: Processor: R5000 rev 2.1 [0x2321], 198 MHz, (bus: 66 MHz), 64 MB DRAM I-Cache 32 KB, linesize 32. D-Cache 32 KB, linesize 32 L2-Cache 512 KB, linesize 32, cache enable Mounting 8MB Linear external flash card . . . Failure Autoboot in 2 seconds - press ESC to abort and enter prom 从上面的第四行信息得知加载FLASH卡时失败,正如我们通过面板上的指示灯所得的判断结果一样。 下一步,按ESC键进入启动模式。这是一个可编程的只读(PROM, Programmable Read-only memory Mode)模式。这个模式主要用来做故障处理。 为了不耽误网络的运行,我们可以使用前面介绍的方法先让路由器从TFTP服务器启动,以临时启用路由器。 因为不能确定FLASH卡究竟是硬件损坏,还是软件上的错误。故在启动模式下尝试从软件上恢复FLASH卡: SSR-BOOT> pcumount (卸载PCMCIA flash卡上原来的虚拟文件系统) SSR-BOOT> erasepcvfs (擦除原来的虚拟文件系统) SSR-BOOT> pcmount –i (装载虚拟文件系统) 幸亏上面的操作没有错误提示,因为这说明FLASH没有发生物理损坏,只是文件系统发生损坏,导致未能正常加载FLASH卡。这个文件系统就像WINDOS中的FAT32、NTFS一样。 至此PCMCIA flash卡已经恢复,但没有系统映像文件。接下来的工作就是让路由器从TFTP服务器启动。路由器正确重启后,用system image add命令把TFTP服务器上的映像文件复制到FLASH卡上。 虽然路由器故障已被解决,但是后续的工作——电力线路调整还得进行。这次故障其实是完全可以避免的,值得反思的是学校在建网之前为什么就不能够把相应的配套设施建设好呢?如果说建网之前没有经验的话,那为什么建网之后还不能及时建设好?此类配套设施不仅是这里的电力供应,还有设备的避雷系统,机房的防盗系统等等。如果此类配套设施没有及时到位,出现的问题和带来的损失有可能会更加严重。 故障二:Boot PROM缺陷 Boot PROM是用来引导系统的启动,SSR使用它来做系统的初始化,比如:加载文件系统等工作。它安装在控制模块的内部存储器NVRAM上。此类故障在平时工作中很少碰到。更新BootPROM可以改进路由器的运行,提高运行效率,降低故障率。它我们还是以SSR为例,用以下的步骤来更新。 首先还是用system show version 命令来查看Boot PROM的版本。例如上一小节中的显示结果,其中“Boot Prom Version : prom-1.1.0.5”就是指Boot Prom的版本。 用和上小节同样的方法把电脑和SSR相连,并且启动TFTP server程序,并且把Boot Prom的映像文件放在TFTP软件的TFTP SERVER 根目录下。 用system promimage upgrade 命令来更新Boot Prom,例如: SSR# system promimage upgrade 10.10.10.2 prom2(TFTP服务器即电脑的地址为“10.10.10.2”,但必须先设置路由器的IP地址为“10.10.10.1”,子网掩码为“255.255.255.0”,设置方法可以参考上一节的介绍) Downloading image ‘prom2’ from host ‘10.10.10.2’ To local image prom2 (takes about 3 minutes) Kernel:100% Image checksum validated Image added. 最后用system show version命令来查看Boot Prom的版本,就知道是否被更新了。 此类故障和硬件的关系较大,在处理之前需要小心行事,万一发生意外可能对硬件带来某些其他伤害。如果自己没有把握,建议您尽快与产品供应商联系。
【责任编辑 王凡】 |
||||||||||||||||||||||
打印本文 关闭窗口 |