1. traceroute
功能:追踪数据包从本机到目标主机的路径,显示每一跳(Hop)的延迟和节点信息。
原理:通过发送 UDP 数据包(默认端口 33434)并逐步增加 TTL(Time To Live)值,检测路径中的每一跳路由。
安装(部分系统默认未安装):
- Debian/Ubuntu:bash复制代码
sudo apt install traceroute
- CentOS/RHEL:bash复制代码
sudo yum install traceroute
常用参数:
参数 | 说明 |
---|---|
-n | 不解析 IP 地址的域名(直接显示 IP,加快输出速度) |
-I | 使用 ICMP 协议替代 UDP(某些网络可能过滤 UDP) |
-T | 使用 TCP SYN 探测(默认端口 80,适合穿透防火墙) |
-m | 设置最大跳数(默认 30),例如 -m 20 |
-q | 每跳发送的探测包数量(默认 3),例如 -q 1 |
-p | 指定目标端口(需配合 -T 或 -U 使用) |
示例:
bash复制代码traceroute google.com
traceroute -nI 8.8.8.8
traceroute -T -p 443 192.168.1.1
2. tracepath
功能:类似 traceroute
,但无需 root 权限,默认使用 ICMP 协议。
特点:自动检测路径最大传输单元(MTU),适合快速诊断。
安装:
通常预装在大多数 Linux 发行版中,属于 iputils
包。
常用参数:
参数 | 说明 |
---|---|
-n | 不解析域名 |
-b | 同时显示 IP 和域名 |
-l | 设置初始数据包长度(用于 MTU 检测) |
示例:
bash复制代码tracepath google.com
tracepath -n 8.8.8.8
3. mtr(My Traceroute)
功能:结合 ping
和 traceroute
,实时显示每一跳的延迟和丢包率,适合持续监控网络质量。
安装:
- Debian/Ubuntu:bash复制代码
sudo apt install mtr
- CentOS/RHEL:bash复制代码
sudo yum install mtr
常用参数:
参数 | 说明 |
---|---|
-r | 生成报告模式(非实时) |
-c | 指定发送的探测包数量(例如 -c 50 ) |
-n | 不解析域名 |
-p | 指定目标端口(类似 traceroute -T ) |
示例:
bash复制代码mtr google.com # 实时交互模式
mtr -r -c 10 8.8.8.8 # 生成 10 次探测的报告
工具对比
工具 | 协议 | 需 ROOT 权限 | 特点 |
---|---|---|---|
traceroute | UDP/ICMP/TCP | 部分参数需要 | 功能最灵活 |
tracepath | ICMP | 不需要 | 轻量、自动检测 MTU |
mtr | ICMP/TCP | 不需要 | 实时统计延迟和丢包 |
使用场景
- 快速排查网络延迟 → 使用
mtr
实时观察丢包节点。 - 绕过防火墙限制 →
traceroute -T -p 443
使用 TCP 协议模拟 HTTPS 流量。 - 无权限环境调试 → 优先选择
tracepath
或mtr
。
通过组合这些工具,可以高效诊断网络路径中的瓶颈或故障节点。