【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  * * *
相关推荐
程序员老舅8 小时前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华8 小时前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
深圳市恒星物联科技有限公司8 小时前
水质流量监测仪:复合指标监测的管网智能感知设备
大数据·网络·人工智能
爱吃生蚝的于勒9 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森9 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
翼龙云_cloud9 小时前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
纤纡.9 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
科技块儿9 小时前
2026年我会推荐哪些IP归属地查询网站?
网络·ip地址·ip归属地·运维工具·网络工具·实用网站·2026工具推荐
好好学习天天向上~~9 小时前
6_Linux学习总结_自动化构建
linux·学习·自动化
冉佳驹10 小时前
Linux ——— 静态库和动态库的设计与使用
linux·动态库·静态库·fpic