云服务器
产品概述
购买指南
快速入门
操作指南
技术教程
Linux如何安装配置Redis
Linux如何搭建LNMP环境
Linux如何查看端口监听情况
Linux实例如何配置中文支持
云服务器常用端口作用
如何在CentOS中安装Docker
如何在Linux中使用正则表达式
如何安装宝塔Linux面板
如何安装配置Nginx
如何搭建Discuz!论坛
如何搭建WordPress站点
Linux如何搭建FTP服务
Traceroute网络诊断工具详解
iperf 网络性能测试工具原理详解
iperf 命令使用详解
云服务器
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 的详细用法,您可以快速定位网络路径中的故障点,优化连接性能。