比ping还好用的排障命令

news2024/11/24 19:32:32

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


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


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



01

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 命令用于测试数据报文从发送主机到目的地所经过的网关。


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



02

不同平台的Traceroute命令



 01  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.



 02  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.




03

使用Traceroute命令进行故障排除



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


1、现象描述:


组网情况如下图所示:


c6240c0b787a153ad04f134339558f3f.jpeg


某校园网中,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、现象描述:


组网情况如下图所示:


0ea366b24cbe6e7dcde712924e3846b5.jpeg


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


2、相关信息:


RouterA# ping  4.0.0.2

Sending 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协议:可能是地址聚合产生的问题。

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




本文转载网络工程师俱乐部,侵删。

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

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

相关文章

Cisco ISR 4000 Series IOS XE Release Dublin-17.11.1a ED

Cisco ISR 4000 Series IOS XE Release Dublin-17.11.1a ED 思科 4000 系列集成服务路由器 请访问原文链接:https://sysin.org/blog/cisco-isr-4000/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 思科 4000 系列…

Matlab无人机算法开发套件上新,快速实现控制算法到无人机平台的移植

在现有的旋翼无人机市场中,绝大部分可二次开发的产品都只提供C、C等SDK,但在科研类无人机这一细分领域中,更多的开发者偏好或善于使用Matlab进行算法的开发和验证。为了助力从事控制算法理论研究的开发者,能够独立完成控制算法到无…

举例说明什么是循环神经网络

循环神经网络(Recurrent Neural Network, RNN)是一种处理时间序列数据和自然语言等具有顺序信息的数据的神经网络模型。与普通的前馈神经网络(Feedforward Neural Network)不同,RNN具有循环连接,使得网络能…

【Java】-【IDEA 编译项目时报错:GC overhead limit exceeded】

文章目录 问题简述问题分析解决方案解决方案一解决方案二 问题简述 以前项目启动都是好好的,没有任何问题,最近启动时却报错: java.lang.OutOfMemoryError: ...(此处忽略) GC overhead limit exceeded问题分析 错误是发生在编译阶段&#…

STM32单片机CAN总线汽车灯光控制系统远近光刹车双闪

实践制作DIY- GC0151---CAN总线汽车灯光控制系统 基于STM32单片机设计---CAN总线汽车灯光控制系统 二、功能介绍: OLED主控板:STM32F103C系列最小系统OLED显示3个按键(大灯开关、大灯自动/手动、大灯近光/远光)左转按键右转按键双…

docker学习(七)docker daemon

1.Docker 的CS模式 1.1.Docker 的C/S模式介绍 在 Docker Client 中来运行 Docker 的各种命令,这些命令会传送给在 Docker 的宿主机上运行的 Docker 守护进程。而 Docker 守护进程是负责实现 Docker 各种功能的。 如图所示,Docker 守护进程运行在宿主机…

超参数调试、Batch正则化和程序框架

1、归一化网络的激活函数(Normalizing activations in a network ) 规范化,方法如下,减去均值再除以标准偏差,为了使数值稳定, 通常将𝜀作为分母,以防𝜎 0的情况 &…

使用maven profile 实现一次打包多版本依赖的fat jar

基于一种特殊情况: 需要开发通用代码,但底层依赖的jar有不同版本,使用一次maven 命令编译来同时生成多个fat jar。 测试代码结构: log4j-v1/log4j-v2 有一个同名类被maintest引用。 maintest pom.xml如下 <?xml version="1.0" encoding="UTF-8"…

Docker的安装以及Docker私有仓库的搭建

Docker的安装 # 1、yum 包更新到最新 yum update # 2、安装需要的软件包&#xff0c; yum-util 提供yum-config-manager功能&#xff0c;另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data lvm2 # 3、 设置yum源 yum-config-manage…

基于QT设计的无人机地面站(摄像头录像拍摄)

一、功能需求 通过QT设计一款无人机地面站软件,需要包含基本的RTSP拉流功能,对接无人机平台的RTSP流。此外,需要完成拍照、录像、OSD叠加功能;完成按钮控制云台进行拍照、录像、变焦、指点运动等。在此基础上,完成对应的目标跟踪识别。 技术要求 (1)采用QT平台,设计W…

一、QT主界面简介和创建一个QT工程

QT从入门到实战学习笔记 一、QtCreator主界面简介1、欢迎界面2、编辑界面3、设计界面4、Debug界面5、帮助界面6、主界面左下角按钮 二、创建QT工程1、创建一个新的project2、模板选择3、项目介绍和位置4、定义所建的系统文件类型5、创建类信息&#xff08;Details&#xff09;6…

Redis【实战篇】---- 秒杀优化

Redis【实战篇】---- 秒杀优化 1. 秒杀优化-异步秒杀思路2. 秒杀优化-Redis完成秒杀资格判断3. 秒杀优化-基于阻塞队列完成秒杀优化 1. 秒杀优化-异步秒杀思路 我们来回顾一下下单流程 当用户发起请求&#xff0c;此时会请求nginx&#xff0c;nginx会访问到tomcat&#xff0c…

HNU-小学期工训-STC-B焊接质量分析报告

质量分析报告 焊接情况简单概述 同学们都按时按质量地完成了焊接工作&#xff0c;在测试过程中无短路问题 学习班焊接质量、报修等情况统计 焊接质量较好&#xff0c;焊锡基本圆润光滑&#xff0c;经测试无短路现象 报修情况统计&#xff1a; 测试情况统计 部分同学存在故…

Sqlite创建表、查看表

前面已经学习了Sqlite&#xff1b; 图解SQLite教程_bcbobo21cn的博客-CSDN博客 下面复习一下&#xff1b; 启动和创建数据库&#xff1b;.tables查看表&#xff0c;此时没有&#xff1b; 创建一个表并插入数据&#xff1b; 再创建一个表并插入数据&#xff1b;带小数点的数据…

如何防止数据泄露,保护企业内部文件的安全

现在全球数据泄露事件频发&#xff0c;而且很大一部分都是由于内部员工造成的数据外泄&#xff0c;对企业造成的损失和打击很大&#xff0c;企业一旦出现数据泄露问题&#xff0c;所遭受的不仅仅是经济损失&#xff0c;可能还会对企业的声誉造成负面影响&#xff0c;企业内部的…

简单的手机记事本怎么把英文翻译成中文?

手机记事本是人们常用的辅助工具之一&#xff0c;在使用手机记事本记录内容的时候&#xff0c;除了我们平时使用较多的中文之外&#xff0c;也有人会记录一些英文内容。想要将手机记事本中的英文内容翻译成中文内容应该如何操作呢&#xff1f;以iPhone手机端敬业签记事本软件为…

chatgpt赋能python:配置Python虚拟环境的好处和方法

配置Python虚拟环境的好处和方法 在Python的开发中&#xff0c;有时需要使用不同的库和不同的版本&#xff0c;如果不合理地安装这些库&#xff0c;可能会导致不必要的冲突和错误。此时&#xff0c;使用Python虚拟环境可以轻松地隔离项目之间的不同依赖和版本&#xff0c;避免…

【C#】并行编程实战:实现数据并行(4)

本章继续学习实现数据并行&#xff0c;本文主要介绍并行循环中的线程存储。这也是本章节的最后一篇。 本教程对应学习工程&#xff1a;魔术师Dix / HandsOnParallelProgramming GitCode 5、了解并行循环中的线程存储 默认情况下&#xff0c;所有并行循环都可以访问全局…

13.1 非线性变化的图像增强和补偿——滤波器对图像作增强提高视觉质量(matlab程序)

1.简述 图像的线性变换和非线性变换&#xff0c;逐像素运算就是对图像的没一个像素点的亮度值&#xff0c;通过一定的函数关系&#xff0c;转换到新的亮度值。这个转换可以由函数表示&#xff1a; s f ( r ) s f( r )sf(r) 其中r为原来的像素值&#xff0c;s为新的像素值&a…

关于visual studio 2010 及以上版本 引入boost库的最新解决方法

之前没有怎么用到boost库&#xff0c;出来实习需要去编译一些代码&#xff0c;需要引入boost第三方库&#xff0c;在这过程中&#xff0c;一直出现 LINK : fatal error LNK1104: 无法打开文件“libboost_filesystem-vc100-mt-gd-x3 错误&#xff0c; 但是也确实是跟其他教程学过…