本节书摘来自异步社区《ccnp tshoot 300-135认证考试指南》一书中的第2章,第2.3节利用cisco ios验证和定义故障问题,作者 【加】raymond lacoste , 【美】kevin wallace,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.3 利用cisco ios验证和定义故障问题
ccnp tshoot 300-135认证考试指南
接到故障工单后的首要任务就是验证并定义故障问题,利用一些相对简单的任务即可确认所报告的故障问题,并且在大多数情况下有助于聚焦故障排查工作。cisco ios内置了三款易于使用的工具(ping、telnet和traceroute),可以帮助验证网络连接性并明确定义故障问题。本节将讨论利用ping、telnet和traceroute等工具验证故障问题并聚焦故障排查工作的方式。
关键
检测网络连接性的最常用命令就是ping。第1章曾经说过,ping测试成功表示osi的第一层、第二层、第三层工作均正常,因而可以将排障重心集中到更高的osi层,反之,如果ping测试不成功,那么就可以将排障重心集中到较低的osi层。
基本的ping命令可以向指定目的地发送icmp(internet control message protocol,internet控制消息协议)echo(回送)消息,从指定目的地收到每一条echo reply(回送应答)消息后,都会在输出结果中显示一个感叹号(如例2-21所示)。
例2-21 基本的ping命令

请注意,本例中的所有ping测试均失败了,这是因为设置的超时时间为0秒,也就是说,路由器根本不做任何等待来发现ping测试是否失败就发出下一条icmp echo消息。需要记住的是,此时关心的并不是ping测试是否失败,而是以人工方式为测试工作制造负荷。
有时可能会怀疑接口的mtu(maximum transmission unit,最大传送单元)值不是默认值,这种情况常见于q-in-q隧道、gre(generic routing encapsulation,通用路由封装)隧道以及pppoe(point-to-point protocol over ethernet,以太网上的点对点)接口。为了验证猜测,可以利用ping命令的df-bit和size选项指定所要发送的数据报大小,并让icmp echo消息流经该接口,其中,选项df-bit的作用是让路由器在需要对数据报进行分段时丢弃该数据报,而不是分段该数据报。
例2-23给出了不分段比特置位之后的ping命令运行情况。请注意ping响应中的字母m,表示需要对报文进行分段但由于设置了不分段比特而无法执行分段操作,那么就可以断定源与目的地之间的mtu是非标准值(也就是说mtu小于1500字节)。
t
ping命令能够有效检测三层(即网络层)连接性问题,而telnet命令则能够有效检测四层(即传输层)和七层(即应用层)故障。虽然telnet默认使用tcp端口23,但也可以指定其他端口号,以查看目的ip地址是否运行了特定的四层服务,这一点对于从三层开始排障(这是因为ping操作成功,表明三层工作正常)的分而治之法非常有用,同样,对于自底而上法也非常有用(因为也已经证实了三层工作正常)。此时,就可以使用telnet来测试传输层是否正常。
举例来说,请注意例2-25中的telnet 192.168.1.50 80命令,该命令的作用是让路由器r1试图使用端口80(即http端口)与192.168.1.50建立tcp连接,响应结果open表明192.168.1.50确实在端口80上运行了服务。
例2-25 利用telnet测试传输层(成功)
traceroute命令可以为故障检测与排除工作提供非常有价值的信息,首先可以验证连接性,如果路由跟踪成功,那么就能验证三层连接性,这也是ping命令所能做到的。第二个有价值的信息就是跟踪操作在网络中经历的路径,这是ping命令所不能提供的信息,因此,如果ping 10.4.4.4命令失败,那么就可以运行traceroute 10.4.4.4命令以确定ping失败的位置。例2-27显示了向ip地址为10.4.4.4的路由器发起路由跟踪操作成功的输出结果。
如果在traceroute输出结果中看到重复的ip地址(如10.1.2.2、10.1.3.2、10.1.2.2、10.1.3.2、10.1.2.2、10.1.3.2),那么就表明存在路由环路。