首页 帮助中心 香港服务器租用 Centos使用traceroute排查网络问题
Centos使用traceroute排查网络问题
时间 : 2023-06-08 11:48:59 编辑 : 华纳云 阅读量 : 701

  本配置适用于centos6.7版本,通过traceroute命令可以用来排查一些网络的基础问题。

  首先yum安装traceroute

  yum install traceroute -y

https://www.hncloud.com/uploads/UEditorImages/202306/08/c4ca17cc4969d240c6e3446997891955.jpg

  1.命令格式:

  traceroute[参数][主机]

  2.命令功能:

  traceroute指令让你追踪网络数据包的路由途径,预设数据包大小是40Bytes,用户可另行设置。

  具体参数格式:traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

  3.命令参数:

  -d 使用Socket层级的排错功能。

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

  -F 设置勿离断位。

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

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

  -I 使用ICMP回应取代UDP资料信息。

  -m 设置检测数据包的最大存活数值TTL的大小。

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

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

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

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

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

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

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

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

  4.使用实例:

  实例1:traceroute 用法简单、最常用的用法

  命令:traceroute www.baidu.com

https://www.hncloud.com/uploads/UEditorImages/202306/08/66e2c6e0d5af20c4055af7f0c62b7ee7.jpg

  5.说明:

  记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是 ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果您用 traceroute -q 4 www.baidu.com ,表示向每个网关发送4个数据包。

  有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

  有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。

  如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。

  6.Traceroute的工作原理:

  Traceroute最简单的基本用法是:traceroute hostname

  Traceroute程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器(router)收到这个datagram时,它将TTL减1.此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由器...... traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么traceroute如何得知目的地到达了呢?

  Traceroute在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消息时,便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。

  Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。

华纳云 推荐文章
Windows自带TCP端口转发使用说明 Centos7系统:通过iptables做端口映射 Centos7下使用Squid快速搭建的HTTP代理服务器 Linux下如何查看一块硬盘是不是固态硬盘(SSD) Debian8系统如何使用vi命令修改hosts文件 Centos7系统如何通过网卡配置文件配置多IP Window 2003系统如何关闭关机理由选择项 Windows更新错误0x80070422无法启动服务怎么办? Centos系统如何清除DNS缓存? Windows 2008 R2 如何禁止运行批处理文件
客服咨询
7*24小时技术支持
技术支持
渠道支持