linux网络95值工具,Linux下网络故障排查工具之ping|traceroute和tcptraceroute|mtr工具[通俗易懂]

linux网络95值工具,Linux下网络故障排查工具之ping|traceroute和tcptraceroute|mtr工具[通俗易懂]服务器运维人员在日常运维服务器的过程中经常会遇到服务器网络故障,有服务器硬件造成的,也有服务商网络问题造成的,也有区域网络问题造成的,这个时候就需要用到ping,traceroute,mtr这三个命令1、ping最简单的网络请求反馈命令ping使用了ICMP回送请求和回送应答报文。ping工具发出去的数据包没有通过tcp/udp协议,但是要经过ip协议。ping命令计算的时间是数据包的往返总时间…

大家好,又见面了,我是你们的朋友全栈君。

服务器运维人员在日常运维服务器的过程中经常会遇到服务器网络故障,有服务器硬件造成的,也有服务商网络问题造成的,也有区域网络问题造成的,这个时候就需要用到ping,traceroute,mtr这三个命令

1、ping 最简单的网络请求反馈命令

ping使用了ICMP回送请求和回送应答报文。ping工具发出去的数据包没有通过tcp/udp协议,但是要经过ip协议。ping命令计算的时间是数据包的往返总时间。

ping命令常用的选项如下:-c num  表示使用ping发出去num个数据包

-d 使用Socket的SO_DEBUG功能。

-f  极限检测。大量且快速地送网络封包给一台机器,看它的回应。快速ping,Flood ping,发送接收ICMP Echo报文的频率快了非常多

-n 只输出IP,表示ping的输出中包含主机信息的都用ip表示,不在进行ip和主机名之间的映射,那样ping的响应速度会更快。

-q 不显示任何传送封包的信息,只显示最后的结果。

-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。

-R 记录路由过程。

-v 详细显示指令的执行过程。

-c 数目:在发送指定数目的包后停止。LINUX的ping不会自动终止如果不指定这个参数就需要手动按ctrl+c终止

-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。

-I 网络界面:使用指定的网络界面送出数据包。

-l 前置载入:设置在送出要求信息之前,先行发出的数据包。

-p 范本样式:设置填满数据包的范本样式。

-s packetsize 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。

-t 存活数值:设置存活数值TTL的大小。设定数据包在网络上传输的Time To Live(TTL)生命周期

举例:ping -c 3 -s 512 www.bnxb.com     #表示向www.bnxb.com发送3个512B大小的数据包,来进行网络探测

ping -f www.bnxb.com    #快速ping

2.traceroute和tcptraceroute 路由追踪命令

traceroute也是使用ICMP协议,使用了ICMP的时间超过差错差错报告报文以及ICMP终点不可达报文。

tcptraceroute则是使用tcp协议,现代网络广泛使用防火墙,导致传统路由跟踪工具发出的(ICMP应答(ICMP

echo)或UDP)数据包都被过滤掉了,所以无法进行完整的路由跟踪。尽管如此,许多情况下,防火墙会准许反向(inbound)TCP数据包通过防火墙到达指定端口,这些端口是主机内防火墙背后的一些程序和外界连接用的。通过发送TCP

SYN数据包来代替UDP或者ICMP应答数据包,tcptraceroute可以穿透大多数防火墙。

traceroute和tcptraceroute原理为:

常规的traceroute和tcptraceroute具有相同的工作原理:

发送一个TTL(Time-To-Live)相当小的包,TTL经过每一跳时会递减。当它减为0时,数据包就被丢弃。

当TTL失效后,看哪个路由器返回一个带有表明的ICMP “time exceeded”

如果返回的路由器就是最终的目的地,停止trace

否则,TTL加1并返回到步骤1

两者的不同点:

常规的traceroute使用UDP包或ICMP “Echo”包,这两种包都可能会被防火墙拦截。

tcptraceroute使用TCP “SYN”包。发送带SYN标志位的数据段是TCP建立连接时进行“三次握手”的第一次握手,只要目标地址是被允许访问的,通常这种包不会被防火墙拦截。但是防火墙会拦截其他的不是用于建立连接的TCP包。

基于TCP的traceroute拥有更高的访问权限。以amazon.com为例。基于UDP的traceroute停在205.251.248.5,这个地址很可能是某种防火墙。基于TCP的traceroute访问80端口,这是amazon.com的默认端口,然后进入下一步,最终停在72.21.194.212

traceroute的重要选项有:-d 使用Socket层级的排错功能。

-f 设置第一个检测数据包的存活数值TTL的大小。

-F 设置勿离断位。

-g 设置来源路由网关,最多可设置8个。

-i 使用指定的网络界面送出数据包。

-I 使用ICMP回应取代UDP,与-U\-T是互斥关系。

-m 设置检测数据包的最大存活数值TTL的大小,也就是改变跳数,默认只检测30跳。

-n 直接使用IP地址而非主机名称。

-p 设置UDP传输协议的通信端口。

-q 改变每一次主机之间路由传送包的次数,最大为10

-r 忽略普通的Routing Table,直接将数据包送到远端主机上。

-s 设置本地主机送出数据包的IP地址。

-t 设置检测数据包的TOS数值。

-T  使用TCP协议来探测,与-U\-I是互斥关系,另外TCP协议默认是80端口,而LINUX下1024以下端口需要管理员ROOT权限才能执行,因此需注意权限。

-U 使用UDP协议来探测,这是默认的检测协议

-v 详细显示指令的执行过程。

-w 设置等待远端主机回报的时间。

-x 开启或关闭数据包的正确性检验。

使用举例如下:traceroute www.bnxb.com

备注,使用traceroute返回的每行信息中有三个时间值,那是因为对于每个节点或者路由器,源端发了三次探测请求。

部分以mini方式安装的CENTOS会没集成traceroute可以自行安装

安装命令yum -install traceroute

tcptraceroute是第三方工具,需要下载后上传服务器安装

首先需要安装依赖包libpcap[root@localhost ~]# yum install -y libpcap

下载和上传tcptraceroute

的rpm包  开源代码:https://sourceforge.net/projects/traceroute/

RPM包下载:http://rpmfind.net/linux/mageia/distrib/6/armv5tl/media/core/release/tcptraceroute-1.5-1.beta7.9.mga6.armv5tl.rpm[root@localhost ~]# rpm -ivh tcptraceroute-1.5-1.beta7.9.mga6.armv5tl.rpm

下面来说说 该命令的用法

-i  指定接口

-f

设置开始TTL值(第一条显示的路径)

-l  包长度

-q

每一跳延时查询的次数(default 3)

-t

设置TOS(服务类型)可用于传出数据包。默认 未设置

-m  设置最大TTL值

-p

指定使用本机的特定端口作为源端口(默认随机)

-s

如果本机有多个IP,可指定使用一个IP进行追踪

-w  等待超时时间

host

必跟参数,可以使用主机名或者IP地址

des port  可选选项,默认使用目的地址的80端口

example:  tcptraceroute www.google.com 443 -n -q 1

3.mtr

在Linux中有一个更好的网络连通性判断工具,它可以结合ping | nslookup | tracert 来判断网络的相关特性,这个命令就是mtr,注意:MTR使用的raw sockets是绕过TCP/IP协议,需要ROOT权限来执行,因此如果以普通用户身份来执行mtr会出错,提示“mtr: unable to get raw sockets”

默认系统里面是不带MTR,需要自己手动安装

CENTOS进入SSH,手动输入命令yum install mtr -y

UBUNTUsudo apt-get install traceroute

使用格式:mtr [options] hostname

常用的选项:-n       ——不探测主机名,no-dns不对IP地址做主机名解析

-r     ——将mtr设置为报告模式,追踪结果以报告模式输出。若没有-r显现,那么将进入mtr的实时交互模式。

-c num ——定义追踪的次数,每次是1s,且-c必须和-r配合使用,默认的10次。

mtr -s 用来指定ping数据包的大小

mtr -a 来设置发送数据包的IP地址 这个对一个主机由多个IP地址是有用的

mtr -i 使用这个参数来设置ICMP返回之间的要求默认是1秒

mtr -4 IPv4

mtr -6 IPv6

使用举例:

(1)mtr的实时显示模式,这里会一直刷新探测,可以按ctrl+c退出

mtr www.bnxb.com

(2)mtr的报告模式

[root@172.245.168.1 ~]# mtr -r www.bnxb.com

Start: Sun Dec  3 21:32:45 2017

HOST: Bnxb-VM          Loss%   Snt   Last   Avg  Best  Wrst StDev

1.|– 172-245-168-1-host.colocr  0.0%    10    1.2  14.6   0.9  97.1  29.8

2.|– 10.8.7.117                 0.0%    10    0.9   1.1   0.9   2.4   0.0

3.|– 10.8.19.173                0.0%    10    0.5   5.4   0.4  42.4  13.1

4.|– buf-b1-link.telia.net      0.0%    10    0.5   0.6   0.5   1.4   0.0

5.|– nyk-bb4-link.telia.net     0.0%    10   10.7  10.9  10.7  11.2   0.0

6.|– nyk-b5-link.telia.net      0.0%    10   11.3  11.3  11.2  11.8   0.0

7.|– 6-1-20.ear2.NewYork1.leve 90.0%    10  535.6 535.6 535.6 535.6   0.0

8.|– 4.69.153.125               0.0%    10   87.8  88.0  87.7  90.4   0.7

9.|– network-innovations-inc.v  0.0%    10   91.4  90.0  88.2  91.4   0.9

10.|– te-6-0-0.cs2.lax2.us.zenl  0.0%    10   88.7  90.0  88.7  95.0   1.7

11.|– ???                       100.0    10    0.0   0.0   0.0   0.0   0.0

12.|– 198.181.37.102.16clouds.c  0.0%    10   87.5  87.5  87.3  87.9   0.0

输出解释:

第一列:显示的是IP地址和本机域名,这点和tracert很像

第二列:snt:10 设置追踪的次数,默认值是10 可以通过参数 -c来定制,例如mtr -r -c 15 www.bnxb.com

第三列 Loss: 是显示的每个对应IP的丢包率

第四列 Last: 显示的最近一次的返回时延

第五列 Avg : 是平均值 这个应该是发送ping包的平均时延

第六列 Best: 是最好或者说时延最短的

第七列 Wrst: 是最差或者说时延最常的

第八列 StDev: 是标准偏差

(3)mtr报告模式,只显示IP不显示主机名

mtr -n -r www.bnxb.com

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151492.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月20日 上午10:46
下一篇 2022年6月20日 上午11:00


相关推荐

  • 什么是Flink?Flink能用来做什么?[通俗易懂]

    什么是Flink?Flink能用来做什么?[通俗易懂]什么是Flink?Flink能用来做什么?

    2025年6月18日
    4
  • Cleanup failed to process the following paths错误的解决

    Cleanup failed to process the following paths错误的解决作者 朱金灿来源 http blog csdn net clever101 在使用 TortoiseSVN 工具执行 Cleanup 操作时经常出现 Cleanupfaile 的错误 具体如下图 网上搜索了一下 找到了解决办法 TortoiseSVN 客户端 1 7 版以前的加锁文件时一个 lock 后缀的文件 直接在

    2026年3月20日
    2
  • stringbuild和stringbuffer的区别_string和stringbuilder的区别

    stringbuild和stringbuffer的区别_string和stringbuilder的区别JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供的字符串进行修改.当你知道字符数据要改变的时候你就可以使用 StringBuffer.典型地,你可以使用 StringBuffers来动态构造字符数据.一、String的使用方法:

    2026年2月8日
    6
  • 设计模式七大原则——迪米特原则

    设计模式七大原则——迪米特原则1 什么是迪米特原则 一个对象应该对其他对象保持最少的了解 类与类关系越密切 耦合度越大 迪米特法则 DemeterPrinc 又叫最少知道原则 即一个类对自己依赖的类知道的越少越好 也就是说 对于被依赖的类不管多么复杂 都尽量将逻辑封装在类的内部 对外除了提供的 public 方法 不对外泄露任何信息 迪米特法则还有个更简单的定义 只与直接的朋友通信 直接的朋友 每个对象都会与其他对象有耦合关系 只要两个对象之间有耦合关系 我们就说这两个对象之间是朋友关系 耦合的方式很多 依赖

    2026年3月19日
    3
  • CSS3选择器介绍及用法总结[通俗易懂]

    CSS3选择器介绍及用法总结[通俗易懂]CSS3新增了很多强大的选择器它可以让我们少写一些js事件脚本我们先来看看各个版本的选择器有哪些注:ele代表element元素attr代表attribute属性,val代表value属性值:xxx都属于伪类选择器,::xxx都属于伪元素选择器有名字的选择器我尽量细分了CCS1选择器选择器类型示例说明.class类选择器.demo

    2022年7月11日
    22
  • CSS 媒体查询

    CSS 媒体查询使用媒体查询 你可以针对不同的媒体类型定义不同的样式 媒体查询可以针对不同的屏幕尺寸设置不同的样式 特别是如果你需要设置设计响应式的页面语法 参数 not 是用来排除掉某些特定的设备的 比如 medianotprin 非打印设备 only 用来指定某种特别的媒体类型 对于支持 MediaQueries 的移动设备来说 如果存在 only 关键字 移动设备的 Web 浏览器会忽略 only 关键字并直接根据后面的表达式应用样式文件

    2026年3月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号