【Linux】网络诊断工具traceroute命令详解

一、traceroute介绍

1、基本介绍

在Linux系统中,traceroute 是一个常用的网络诊断命令,用于追踪数据包从源主机到目标主机所经过路由节点(每一跳)的路径。通过分析每一跳(Hop)的延迟和丢包情况,可以精准诊断网络连接问题(如延迟高、路由环路、防火墙拦截等)。

2、核心原理

traceroute 通过发送一系列数据包(默认使用UDP协议,端口从33434递增)并监控其路径,实现路由追踪。其核心逻辑基于数据包的TTL(Time-To-Live)机制:

1)发送第一个数据包时设置TTL=1,到达第一个路由器后TTL减为0,路由器返回 ICMP "超时"消息(Time Exceeded),记录第 1 跳路由;

2)发送第二个数据包时设置TTL=2,重复上述过程。

3)逐步增加TTL值(TTL=3,4...),直至数据包到达目标主机或达到最大跳数(默认30跳),目标返回 ICMP Port Unreachable(默认 UDP 协议)或 ICMP Echo Reply(ICMP 协议)。

4)对于无法响应的节点,连接状态将显示为 *,预设数据包大小是 60Bytes,探测30跳。

通过这一过程,Traceroute 会记录每一跳的IP地址和响应时间,绘制出完整的路径图。

3、常见用途

在网络诊断中,traceroute的用途非常广泛:

• 定位网络延迟:发现数据包在哪一跳耗时过长。

• 识别路径阻断:找出数据包无法到达目标的原因。

• 排查防火墙问题:检测防火墙是否错误拦截了数据包。

• 优化网络性能:分析路由选择是否合理。

二、traceroute安装

在大多数Linux发行版中,traceroute 工具默认没有安装。如果没有,你可以使用包管理器安装它,例如:

  • 对于基于Debian的系统(如Ubuntu):
bash 复制代码
sudo apt-get install traceroute
  • 对于基于RPM的系统(如CentOS7/RHEL7):
bash 复制代码
sudo yum install traceroute
  • 对于较新的RHEL/CentOS 8及以上版本:
bash 复制代码
sudo dnf install traceroute

三、traceroute使用

1、使用帮助

  • 使用 --help 选项查询 traceroute 命令的帮助信息
bash 复制代码
traceroute --help

2、基本用法

bash 复制代码
traceroute [选项] 目标主机/IP

3、常见选项

四、traceroute使用实例

1、基本用法

  • 默认使用UDP协议
bash 复制代码
traceroute 223.5.5.5

traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets
 1  bogon (192.168.10.2)  0.123 ms  0.101 ms  0.075 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
  • 从输出结果中可以看到,traceroute命令首先会输出目标主机的IP地址和最大跳数(30),发送的数据包大小为60字节,然后每一行显示一个路由节点的信息。
  • 例如,第一个路由节点的IP地址(192.168.10.2),主机名(bogon),三次ping探测的返回时间(0.123 ms,0.101 ms,0.075 ms)。
  • 第 2-30 跳,输出均为 *,表示这些跳数对应的路由节点未返回响应。
  • 出现连续* * *的原因是中间路由节点或网络策略拦截了追踪请求,无法返回响应。

2、使用TCP协议追踪

bash 复制代码
traceroute -T -p 80 www.baidu.com

traceroute to www.baidu.com (110.242.70.57), 30 hops max, 60 byte packets
 1  bogon (192.168.10.2)            0.092 ms  0.033 ms   0.030 ms
 2  110.242.70.57 (110.242.70.57)  28.195 ms  27.508 ms  26.462 ms

3、禁用DNS反向解析

bash 复制代码
traceroute -T -p 80 -n  www.baidu.com

traceroute to www.baidu.com (110.242.69.21), 30 hops max, 60 byte packets
 1  192.168.10.2    0.109 ms  0.120 ms   0.087 ms
 2  110.242.69.21  28.930 ms  28.358 ms  29.610 ms

4、使用ICMP协议追踪

bash 复制代码
traceroute -n -I www.baidu.com

traceroute to www.baidu.com (110.242.69.21), 30 hops max, 60 byte packets
 1  192.168.10.2     0.096 ms  0.069 ms   0.057 ms
 2  192.168.0.1      1.767 ms  2.012 ms   2.019 ms
 3  192.168.1.1      2.643 ms  2.641 ms   2.630 ms
 4  220.202.88.1     5.595 ms  5.596 ms   5.585 ms
 5  * * *
 6  * * *
 7  * * *
 8  110.242.66.170  27.867 ms   *          *
 9  221.194.45.134  27.330 ms  27.011 ms  27.811 ms
10  * * *
11  * * *
12  * * *
13  110.242.69.21   32.532 ms  32.529 ms  32.514 ms

5、自定义最大跳数和超时追踪

bash 复制代码
traceroute -m 20 -w 5 www.baidu.com

traceroute to www.baidu.com (110.242.69.21), 10 hops max, 60 byte packets
 1  bogon (192.168.10.2)  0.038 ms  0.020 ms  0.063 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
相关推荐
黄焖鸡能干四碗1 天前
网络安全建设实施方案(Word文件参考下载)
大数据·网络·人工智能·安全·web安全·制造
天赐学c语言1 天前
Linux - 应用层自定义协议与序列/反序列化
linux·服务器·网络·c++
jarreyer1 天前
CentOS 7 无法使用 yum 安装软件
linux·运维·centos
hzhsec1 天前
MSF-CobaltStrike实现内网socks代理转发上线
服务器·网络·安全·网络安全
脆皮的饭桶1 天前
结合使用,实现IPVS的高可用性、利用VRRP Script 实现全能高可用
运维·服务器·网络
薛定谔的悦1 天前
告别传统BMS!深度解读阳光电源 BM^2T 电池管理技术白皮书
linux·能源·储能·bms·ems
源远流长jerry1 天前
DPDK MP (Multi-Process) 通道深度解析
linux·网络·架构·ip
RisunJan1 天前
Linux命令-md5sum(计算和校验文件报文摘要的工具程序)
linux·运维
抹茶咖啡1 天前
IT运维的365天--042 骚操作之--用IPSec给远程桌面上把锁
运维·网络·it运维
王琦03181 天前
第三章 linux文件类型和根目录结构
linux·运维·服务器