云服务器
产品概述
购买指南
快速入门
操作指南
技术教程
Linux如何安装配置Redis
Linux如何搭建LNMP环境
Linux如何查看端口监听情况
Linux实例如何配置中文支持
云服务器常用端口作用
如何在CentOS中安装Docker
如何在Linux中使用正则表达式
如何安装宝塔Linux面板
如何安装配置Nginx
如何搭建Discuz!论坛
如何搭建WordPress站点
Linux如何搭建FTP服务
Traceroute网络诊断工具详解
iperf 网络性能测试工具原理详解
iperf 命令使用详解
Linux中pstack命令使用指南
Linux系统中重启命令有哪些?
DDoS攻击应该如何防御?
云服务器
Traceroute网络诊断工具详解

Traceroute网络诊断工具详解

Traceroute(在 Windows 中为 tracert)是一种网络诊断工具,主要用于追踪数据包从源设备到目标主机的传输路径,并分析网络连接中的延迟和故障点。以下是它的核心作用和功能:

一、Traceroute 的核心作用

1、路径追踪

显示数据包从源到目标经过的所有中间节点(路由器、网关等),即网络路径的每一“跳”(hop)。

例如:访问 google.com 时,数据可能经过本地路由器、ISP 设备、骨干网节点等,Traceroute 会列出这些节点的 IP 或域名。

2、延迟分析

测量每跳的往返时间(RTT),帮助识别网络瓶颈。

示例输出:

3  10.2.0.1  20ms  22ms  18ms  
4  203.0.113.5  *   100ms  95ms  

3、故障定位

如果数据包在某跳之后中断(显示为 *),可推断该节点或链路存在故障。

例如:某跳后持续超时,可能是防火墙拦截或路由器配置错误。

二、Traceroute 的核心原理

Traceroute 通过 TTL(Time To Live)机制探测数据包从源到目标的路径:

1、TTL 递减

发送探测包(UDP/ICMP/TCP,取决于系统)时,初始 TTL 设为 1。

每经过一个路由节点(即一跳),TTL 值减 1。

当 TTL 减至 0 时,当前节点丢弃数据包,并返回 ICMP Time Exceeded 消息。

2、逐跳探测

逐步增加 TTL 值(从 1 开始,每次 +1),直到数据包到达目标主机或达到最大跳数(默认 30)。

3、延迟计算

记录每跳的往返时间(RTT),即从发送探测包到收到响应的时间。

4、三次探测

每跳默认发送 3 个探测包,显示 3 次延迟,用于评估网络稳定性。

三、Traceroute 命令语法

Linux/macOS(使用 traceroute):

traceroute [选项] <目标主机或IP>

Windows(使用 tracert):

tracert [选项] <目标主机或IP>

选项参数:

-I:使用ICMP Echo模式发送数据包,这是traceroute命令的默认模式。

-U:使用UDP模式发送数据包。该模式下的traceroute命令需要以root权限运行。

-T:使用TCP模式发送数据包。该模式下的traceroute命令需要以root权限运行。

-n:不要解析IP地址为主机名,以IP地址形式显示主机名,加快输出速度。

-s 源地址:指定源地址,可以是主机名或IP地址。

-p 端口号:指定源端口,默认端口号通常为33434(UDP模式)。

-q 查询次数:每跳发送的探测包数量,默认值为3。每次查询会增加TTL值,直到到达目标主机或达到最大的TTL值。

-m 跳数:设置最大的TTL值,默认值为30。该值指定了数据包能经过的最大路由器数量。当数据包的TTL值达到该值时,数据包会被丢弃。

-w 等待时间:指定每个数据包的超时时间。

四、Traceroute 输出结果解读

traceroute to google.com (142.250.189.174), 30 hops max, 60 byte packets
1  192.168.1.1 (192.168.1.1)  1.234 ms  1.456 ms  1.678 ms
2  10.10.10.1 (10.10.10.1)  5.678 ms  6.123 ms  6.789 ms
3  * * *
4  203.0.113.45 (203.0.113.45)  20.123 ms  21.456 ms  22.789 ms
5  72.14.238.1 (72.14.238.1)  30.000 ms  31.000 ms  32.000 ms
...

traceroute的输出结果通常分为多行,每行代表一个跳点(即数据包经过的路由器或主机)。

字段解析

1、跳数,跳点的序号从1开始。

2、节点信息,跳点的IP地址若显示 *,表示该探测包未收到响应(可能被防火墙拦截或节点未回复)。

3、主机名,如果使用了-n选项,则不会显示主机名。

4、延迟时间,每跳默认发送3个探测包,分别代表三次尝试到达该跳点所需的时间。若某次探测超时,显示 *(如第 3 跳)。

五、Traceroute 使用示例

1、追踪到目标主机

traceroute www.ffy.com

2、使用UDP模式追踪到目标主机(需要root权限)

sudo traceroute -U www.ffy.com

3、绕过 DNS 解析,直接显示IP地址(加快输出)

traceroute -n www.ffy.com

4、指定协议(Linux)

traceroute -I google.com # 使用 ICMP(类似 ping)

traceroute -T -p 80 www.ffy.com # 使用 TCP SYN 到 80 端口

5、设置查询次数

traceroute -q 5 www.ffy.com # 把探测包的个数设置为5

6、设置最大跳数

traceroute -m 5 www.ffy.com

六、Traceroute 实战案例

1、诊断网站访问缓慢

traceroute -nT -p 443 ffy.com

参数说明

-n:禁用 DNS 解析,加快输出。

-T -p 443:使用 TCP 协议探测 443 端口(绕过防火墙)。

使用 traceroute 确定数据包在哪个节点被丢失或延迟高;测量每个节点的延迟以识别瓶颈。

2、结合 Ping 使用

ping <跳跃节点 IP 地址>

使用 ping 测试某个特定节点的稳定性和响应时间。

3、使用 MTR 实时统计

mtr ffy.com

在 Linux 上,使用 mtr 工具结合 traceroute 和 ping,查询实时统计。

七、Traceroute 问题排查

1、中间节点如果出现 * * *

可能原因:防火墙或路由器禁用了 ICMP/UDP 响应;或者节点出现高延迟、网络拥塞导致丢包。

解决方法:尝试 -I(ICMP)或 -T(TCP)选项绕过过滤;结合 -w 增加超时时间。

2、 延迟突增

例如:某跳延迟从 20ms 突增至 100ms。

分析:该节点(如跨国骨干网)可能负载过高,需联系 ISP 优化。

3、 路径环路

现象:跳数重复出现相同 IP(如 10.1.1.1 → 10.1.1.2 → 10.1.1.1)。

原因:路由配置错误导致循环,需检查路由表。

4、 目标主机无法到达

输出示例:最后几跳持续显示 *

结论:目标主机宕机或存在网络中断。

5、找不到 traceroute 命令

sudo apt install traceroute # Debian/Ubuntu

sudo yum install traceroute # Red Hat/CentOS

总结
Traceroute是一个强大的网络诊断工具,可以根据需求对网络问题进行详细分析,掌握 Traceroute 的详细用法,您可以快速定位网络路径中的故障点,优化连接性能。