网络故障排除之Traceroute命令详解

news2024/11/19 11:30:01

bb11e0c944b2434fba5b45a2473f3485.jpg


 

概要

遇到网络故障的时候,你一般会最先使用哪条命令进行排障?

除了Ping,还有Traceroute、Show、Telnet又或是Clear、Debug等等。

今天安排的,是Traceroute排障命令详解,给你分享3个经典排障案例哈


一. Traceroute原理和功能

 

Traceroute是为了探测源节点到目的节点之间数据报文所经过的路径。

利用IP报文的TTL域在每经过一个路由器的转发后减一,当TTL=0时则向源节点报告TTL超时这个的特性。

Traceroute首先发送一个TTL为1的Icmp request报文,因此第一跳发送回一个ICMP错误消息以指明此数据报不能被发送(因为TTL超时)。

之后Traceroute再发送一个TTL为2的报文,同样第二跳返回TTL超时,这个过程不断进行,直到到达目的地。

此时,由于数据报中使用了无效的端口号(缺省为33434),目的主机会返回一个ICMP的目的地不可达消息,表明该Traceroute操作结束。

Traceroute记录下每一个ICMP TTL超时消息的源地址,从而提供给用户报文到达目的地所经过的网关IP地址。

Traceroute 命令用于测试数据报文从发送主机到目的地所经过的网关。

主要用于检查网络连接是否可达,以及分析网络什么地方发生了故障。

 

二. 不同平台的Traceroute命令

 

 1. RGNOS平台的Traceroute命令 

举个例子,在锐捷RG系列路由器上,Traceroute命令的格式如下:

Traceroute host 『destination』

例如:查看到目的主机10.15.50.1 中间所经过的网关。

RG# traceroute 10.15.50.1
 Type esc/CTRL^c/CTRL^z/q to abort.
traceroute 192.168.0.1 ...... 
1 10.110.40.1            1 4 ms  5 ms  5 ms
 2 10.110.0.64            10 ms  5 ms  5 ms
 3 10.110.7.254          10 ms  5 ms  5 ms
 4 10.3.0.177              175 ms  160 ms  145 ms
 5 129.9.181.254        185 ms  210 ms  260 ms
 6 10.15.50.1              230 ms  185 ms  220 ms
Trace complete successfully.

2. Windows平台的Tracert 命令 

在PC机上或Windwos为平台的服务器上,Tracert命令的格式如下:

tracert [ -d ] [ -h maximum_hops ] [ -j host-list ] [ -w timeout ] host

-d :不解析主机名。

-h:指定最大TTL大小。

-j:设定松散源地址路由列表。

-w:用于设置UDP报文的超时时间,单位毫秒;例如:查看到目的主机10.15.50.1 中间所经过的前两个网关。

:\>tracert -h 2 10.15.50.1
Tracing route to 10.15.50.1 over a maximum of 2 hops:
  1     3 ms     2 ms     2 ms  10.110.40.1
  2     5 ms     3 ms     2 ms  10.110.0.64
Trace complete.

 

三. 使用Traceroute命令进行故障排除

 

排障案例①  使用Traceroute命令定位不当的网络配置点 

1、现象描述:

组网情况如下图所示:

2b744efc380648339ba370c8dcb17d84.png

 某校园网中,RouterB和RouterC同属于一个运行RIPv2路由协议的网络,主机4.0.0.2访问数据库服务器5.0.0.2,用户抱怨访问性能差。

2、相关信息:

在主机上ping  5.0.0.2显示如下:

C:\Documents and Settings\c>ping -n 10 -l 1000 5.0.0.2

Pinging 5.0.0.2 with 1000 bytes of data:
Reply from 5.0.0.2: bytes=1000 time=552ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=5735ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=551ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=5734ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=549ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=5634ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=555ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=5738ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=455ms TTL=250
Reply from 5.0.0.2: bytes=1000 time=5811ms TTL=250

3、原因分析:

上面的Ping显示出一个规律,奇数报文的返回时长短,而偶数报文返回时长很长(是奇数报文的10倍多)。

可以初步判断奇数报文和偶数报文是通过不同的路径传输的。

现在我们需要使用Traceroute命令来追踪这不同的路径。在RouterC上,Traceroute远端RouterA的以太网接口5.0.0.1。

RouterC(config)#traceroute
Target IP address or host: 5.0.0.1
Maximum number of hops to search for target [30]:10
Repeat count for each echo[3]:8
Wait timeout milliseconds for each reply [2000]:

Type esc/CTRL^c/CTRL^z/q to abort.
traceroute 5.0.0.1 ......
1    6 ms  4 ms  4 ms  4 ms  4 ms  4 ms  4 ms  4 ms   4.0.0.1
  。。。。。。(中间省略)
5  20 ms  16 ms  15 ms  16 ms  16 ms  16 ms  16 ms  16 ms  3.0.0.2
6  30 ms  278 ms  25 ms  279 ms  25 ms  278 ms  25 ms  277 ms  5.0.0.1
RouterC(config)#

从上面的显示可看到,直至3.0.0.2,UDP探测报文的返回时长都基本一。

而到5.0.0.1时,则发生明显变化,呈现奇数报文时长短,偶数报文时长长的现象。

于是判断,问题发生在RouterB和RouterA之间。

通过询问该段网络的管理员,得知这两路由器间有一主一备两串行链路,主链路为2.048Mbps(s0口之间),备份链路为128Kbps(s1口之间)。

网络管理员在此两路由器间配置了静态路由。

RouterB上如下配置:

RouterB(config)# ip route 5.0.0.0 255.0.0.0 1.0.0.2
RouterB(config)# ip route 5.0.0.0 255.0.0.0 2.0.0.2

RouterA上如下配置:

outerA(config)# ip route 0.0.0.0 0.0.0.0 1.0.0.1
RouterA(config)# ip route 0.0.0.0 0.0.0.0 2.0.0.1

于是问题就清楚了。

例如RouterB,由于管理员配置时没有给出静态路由的优先级,这两条路由项的管理距离就同为缺省值1。

然后就同时出现在路由表中,实现的是负载分担,而不能达到主备的目的。

4、处理过程:

可以有两种处理方法。

一个是,继续使用静态路由,进行配置更改 RouterB上进行如下更改:

RouterB(config)# ip route 5.0.0.0 255.0.0.0 1.0.0.2 (主链路仍使用缺省1)

RouterB(config)# ip route 5.0.0.0 255.0.0.0 2.0.0.2 100(备份链路的降低至100)

RouterA上进行如下更改:

RouterA(config)# ip route 0.0.0.0 0.0.0.0 1.0.0.1
RouterA(config)# ip route 0.0.0.0 0.0.0.0 2.0.0.1 100

这样,只有当主链路发生故障,备份链路的路由项才会出线在路由表中,从而接替主链路完成报文转发,实现主备目的。

第二个是,在两路由器上运行动态路由协议,如OSPF,但不要运行RIP协议(因为RIP协议是仅以hop作为Metric的)。

5、建议和总结:

本案例的目的不是为了解释网络配置问题,而是用来展示Ping命令和Traceroute命令的相互配合来找到网络问题的发生点。

尤其在一个大的组网环境中,维护人员可能无法沿着路径逐机排查,此时,能够迅速定位出发生问题的线路或路由器就非常重要了。

 

 排障案例②  使用Traceroute命令发现路由环路 

 

1、现象描述:

组网情况如下图所示:

e854b8780aa44535ae12e1dbbd5db5a3.png

 三台路由器均配置静态路由,完成后,登录到RouterA上Ping主机4.0.0.2,发现不通。

2、相关信息:

RouterA# ping  4.0.0.2Sending 5, 100-byte ICMP Echos to 4.0.0.2,
timeout is 2000 milliseconds.
.....

Success rate is 0 percent (0/5)
RouterA# traceroute 4.0.0.2
 Type esc/CTRL^c/CTRL^z/q to abort.
traceroute 4.0.0.2 ......
1  6 ms  4 ms  4 ms   1.0.0.1(RouterB)
 2  8 ms  8 ms  8 ms   1.0.0.2(RouterA)
 3  12 ms  12 ms  12 ms 1.0.0.1(RouterB)
 4  16 ms  16 ms  16 ms 1.0.0.2(RouterA)
 。。。。。。

3、原因分析:

从上面的Traceroute命令的显示可以立即发现,在RouterA和RouterB间产生了路由环路。

由于是配置的是静态路由,基本可以断定是RouterA或RouterB的静态路由配置错误。 

检查RouterA的路由表,配置的是缺省静态路由:ip route 0.0.0.0 0.0.0.0 1.0.0.1,没有问题。

检查RouterB的路由表,配置到4.0.0.0网络的静态路由为:ip route 4.0.0.0 255.0.0.0 1.0.0.2――下一跳配置的是1.0.0.2,而不是3.0.0.1。这正是错误所在。

4、处理过程:

修改RouterB的配置如下:

RouterB(config)# no ip route 4.0.0.0 255.0.0.0 1.0.0.2
RouterB(config)# ip route 4.0.0.0 255.0.0.0 3.0.0.1

故障排除。

5、建议和总结:

Traceroute命令能够很容易发现路由环路等潜在问题。

当路由器A认为路由器B知道到达目的地的路径,而路由器B也认为路由器A知道目的地时,就是路由环路发生了。

使用Ping命令只能知道接收端出现超时错误,而Traceroute能够立即发现环路所在――如果Traceroute命令两次或者多次显示同样的接口。

当通过Traceroute发现路由环路后,如果配置为:

 

  • 静态路由:几乎可以肯定是手工配置有问题,如本案例所示。

  • OSPF协议:可能是地址聚合产生的问题。

  • 多路由协议:可能是路由引入产生的问题。

 

好了 今天的分享到这里了,如果你觉得对你有所帮助,欢迎点赞收藏转发,感谢🙏

---END---

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT 最佳实践指南之:写出清晰的指示

Write clear instructions 写出清晰的指示 GPTs can’t read your mind. If outputs are too long, ask for brief replies. If outputs are too simple, ask for expert-level writing. If you dislike the format, demonstrate the format you’d like to see. The less GPTs…

如何使网站快速拥有登录注册功能

如何使网站快速拥有登录注册功能 一、产品介绍二、开始使用1、如何判断用户是否登录?2、如何让用户登录?举个例子: 3、登录成功后如何拿到用户数据?4、如何维护用户的登录态? 二、注意点 前端必备工具(免费图床、API、chatAI等)推荐网站LuckyCola: h…

机器学习——支持向量机(数学基础推导篇【未完】)

在一个周日下午,夏天的雨稀里哗啦地下着 我躺在床上,捧着ipad看支持向量机 睡了好几个觉…支持向量机太好睡了 拉格朗日乘数法太好睡了 几何函数太好睡了 在我看来,支持向量机是目前学下来,最难以理解的内容 希望日后不要太难…脑…

[计算机入门] Windows对话框

2.4 对话框 在图形用户界面中,对话框是一种特殊的窗口, 用来在用户界面中向用户显示信息,或者在需要的时候获得用户的输入响应。之所以称之为对话框是因为它们使计算机和用户之间构成了一个对话——或者是通知用户一些信息,或者是请求用户的…

C. Russian Roulette(构造)

传送门 题意 俄罗斯转盘,长度为n的环,有k个子弹,然后挨着对着脑袋打。 你是第一个人,你希望你死的概率最小,问你怎么去设置这个子弹的位置。 第二个人会一开始随机砖圈,使得每一个位置开始都是可能的。…

电脑技巧:怎么轻松地搞定Win11系统备份任务

目录 1、选择免费备份软件来自动备份系统 2、如何逐步配置定时系统备份任务? “我是一个电脑小白,不是很懂电脑的一些操作。我刚买了一台新电脑,它装的是Win11系统,我害怕它出现什么问题,听朋友说可以通过备份的方…

Kotlin~责任链模式

概念 允许多个对象按顺序处理请求或任务。 角色介绍 Handler: 处理器接口,提供设置后继者&#xff08;可选&#xff09;ConcreteHandler&#xff1a;具体处理器&#xff0c;处理请求 UML 代码实现 比如ATM机吐钱就可以使用责任链实现。 class PartialFunction<in P1, o…

【环境配置】Conda ERROR:Failed building wheel for lap

问题 note: This error originates from a subprocess, and is likely not a problem with pip.ERROR: Failed building wheel for lapRunning setup.py clean for lap Failed to build lap ERROR: Could not build wheels for lap, which is required to install pyproject.to…

JDK8安装

在官网进行下载Java Downloads | Oracle 点击进行安装即可。 之后是配置环境变量 点击我的电脑 – 属性 – 高级系统设置 – 环境变量 添加JAVA_8_HOME环境变量&#xff0c;指向jdk的安装目录。 之后编辑path环境变量&#xff0c;增加%JAVA_8_HOME%\bin win R 输入javac 测…

在线支付安全-业务安全测试实操(35)

目前网络在线消费和支付,已遍布人们生活的衣食住行等冬个方面,比如网上商城在线购物、水电燃气在线缴费、手机话费在线充值等。由于在线消费和支付过程中涉及真金白银,一旦存在漏洞,将会带来重大的经济损失。 某快餐连锁店官网订单金额篡改 篡改订单金额的流程如图 所示 步…

Spark(14):SparkSQL之概述

目录 0. 相关文章链接 1. SparkSQL是什么 2. Hive and SparkSQL 3. SparkSQL 特点 3.1. 易整合 3.2. 统一的数据访问 3.3. 兼容Hive 3.4. 标准数据连接 4. DataFrame 是什么 5. DataSet 是什么 6. SparkSQL的运行环境 0. 相关文章链接 Spark文章汇总 1. SparkSQL是…

java pdf加水印

本文将Base64编码形式的pdf文件加水印&#xff0c;并输出完成后的pdf的Base64编码&#xff0c;也可以根据情况自行改动&#xff0c;输出其他形式的内容。 首先引入两个包 <!-- PDF文件依赖包 --><dependency><groupId>com.itextpdf</groupId><arti…

计算机体系结构基础知识介绍之缓存性能的十大进阶优化之编译器优化和硬件预取(六)

优化七&#xff1a;编译器优化&#xff0c;降低miss率 处理器和主内存之间不断扩大的性能差距促使编译器编写者仔细检查内存层次结构&#xff0c;看看编译时优化是否可以提高性能。再次&#xff0c;研究分为指令缺失的改进和数据缺失的改进。接下来介绍的优化可以在许多现代编…

步入JAVA——环境搭建与项目通览

前言 在这篇文章中&#xff0c;荔枝会介绍如何配置Java后端开发环境并借助一个Java web项目简单介绍一下Java的后端开发逻辑。与python的后端开发逻辑是类似的&#xff0c;Java的后端开发其实也是通过一个个类来实现的。对于像荔枝这种小白白来说&#xff0c;入门的第一个练手J…

java项目之高校四六级报名管理系统(ssm+jsp+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的高校四六级报名管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌…

mysql执行顺序以及为什么别名不能用在 where 后

1、mysql执行顺序 如下&#xff1a; 1. from 阶段 2. where 阶段 3. group by 阶段 4. having 阶段 5. select 阶段 6. order by 阶段 7. limit 阶段 2、为什么别名不能用在 where 后

微信小程序反编译之后运行报错“_typeof3 is not a function”

微信小程序解包之后&#xff0c;在微信开发者工具当中点开调试器&#xff0c;选择Console选项卡&#xff0c;发现左侧的预览界面是空白的&#xff0c;虽然真机调试可以有显示&#xff0c;但是真机预览也是跟左边的界面一样都是空白。之后发现Console里面显示 解决方法&#x…

7.5~7.6学习成果总结

关于封装&#xff0c;满足几个原则&#xff0c;一般的成员变量用privat修饰&#xff0c;仅暴露少量方法获取&#xff0c;如果是内部的操作方法也用private&#xff0c;除非是希望被全局使用&#xff0c;的才考虑用public&#xff0c;如果是进希望被子类用的话可以考虑用protect…

ICG NH2,1686147-55-6,吲哚菁绿氨基,安全性更好,并具有更好的光稳定性

ICG NH2&#xff0c;ICG-Amine&#xff0c;吲哚菁绿氨基|&#xff08;文章编辑来源于&#xff1a;西安凯新生物科技有限公司小编WMJ&#xff09;产品结构式&#xff1a; 对于ICG NH2&#xff08;1686147-55-6&#xff09;我们需要知道这些&#xff1a; CAS号为1686147-55-6&am…

专项练习21

目录 一、选择题 1、下列逻辑表达式的结果为false的是&#xff08;&#xff09; 2、请问以下JS代码输出的结果是什么&#xff1f; 3、以下哪些对象是Javascript内置的可迭代对象&#xff1f; 二、编程题 1、找到数组参数中的最大值并返回。注意&#xff1a;数组中只包含数字 …