traceroute 使用详解

一、traceroute 做什么(原理概述)

  • 作用:发现从本机到目标主机经过的每一跳路由节点(每一跳的 IP)并测量到这些跳的延迟(往返时间)。

  • 基本原理:发送一系列带有不同 TTL(Time To Live,生存时间)值的数据包。第 1 个包 TTL=1,会在第 1 路由器被丢弃并返回「超时」类型的 ICMP 响应;第 2 个包 TTL=2,在第 2 路由器时被丢弃并返回,以此类推。通过接收到的 ICMP 超时/响应,可以知道每一跳的 IP 与时延。

  • 协议差异:不同实现默认使用不同协议:

    • Linux 下常见的 traceroute(由 traceroute 包提供)默认发送 UDP 到高端口(超高端口,通常不会在目标上被接受)。

    • Windows tracert 使用 ICMP Echo Request(类似 ping)。

    • 现代工具通常支持 TCP(-T)/ICMP(-I)/UDP 选项,可按需切换(例如用于穿过只允许 80/443 的防火墙时用 TCP 端口 80)。


二、常见实现与平台差异

  • Linux(多数发行版):命令通常叫 traceroute;需要安装包(例如 tracerouteinetutils-traceroute)。支持 -I(ICMP)、-T(TCP)、-p(端口)、-n(不解析 DNS)等。

  • macOS:也有 traceroute,参数略有差异,但总体行为相似。

  • Windows:命令名 tracert,语法不同,选项更少(使用 ICMP)。

  • 注意:不同发行版或软件包(tracerouteiputils-tracepathtracepathparis-traceroute)的选项会有差别,请以 man traceroute / tracert /? 为准。


三、常用参数(Linux traceroute 的常见选项,供参考)

不同实现参数略有差异,请用 man traceroute 验证本机可用选项。

  • -n:不进行 DNS 反查,只显示 IP(通常更快)。

  • -m <max_ttl>:设置最大跳数(默认 30)。

  • -f <first_ttl>:从某个 TTL 开始(例如只查看第 10~20 跳)。

  • -q <nqueries>:对每个 TTL 发送的探测包数(默认 3)。

  • -w <wait>:每个探测的超时时间(秒)。

  • -p <port>:指定目标端口(当使用 UDP/TCP 时)。

  • -I:使用 ICMP ECHO 而不是默认 UDP。

  • -T:使用 TCP SYN(常用于穿越防火墙,需 root 权限或特殊支持)。

  • -4 / -6:强制使用 IPv4 或 IPv6。

  • -s <srcaddr>:指定源地址(多网卡场景下有用)。

  • -A-S 等:某些实现支持显示 AS 信息或 TTL 控制(实现相关)。


四、示例与解释

  1. 基本(Linux):
bash 复制代码
traceroute example.com
  1. 更快(不做 DNS 解析):
bash 复制代码
traceroute -n 8.8.8.8
  1. 降低超时时间并只发送 1 次探测(快速扫描):
bash 复制代码
traceroute -q 1 -w 2 -n 8.8.8.8
  1. 使用 ICMP(类似 Windows):
bash 复制代码
sudo traceroute -I example.com
  1. 使用 TCP 端口 80(穿透只允许 TCP 80/443 的网络):
bash 复制代码
sudo traceroute -T -p 80 example.com
  1. Windows(命令不同):
bash 复制代码
tracert example.com

五、输出字段如何解读(典型输出示例)

bash 复制代码
 1  192.168.1.1  1.234 ms  1.345 ms  1.290 ms
 2  10.0.0.1     10.123 ms 10.234 ms 10.111 ms
 3  * * *
 4  203.0.113.5  50.321 ms 50.102 ms 50.213 ms
  • 左侧数字:跳数(TTL 值)。

  • 紧接 IP/主机名:该跳路由器的 IP(若 DNS 可解析,可能显示主机名)。

  • 后面三个值:针对该跳发送的 3 次探测的往返时间(RTT),单位毫秒(具体 probe 数由 -q 决定)。

  • *:超时或没有返回(常见原因:防火墙丢弃 ICMP 超时/拒绝响应,或路由器限流)。

  • 如果最后一跳显示 * 或不同于目标,可能目标主机对探测协议不回应(例如目标丢弃 UDP 到高端口),但路径仍然可能连通。


六、常见问题与排查建议

  • 输出大量 *

    • 可能节点对 ICMP(或探测协议)不回应或限流------不一定代表路径断开。

    • 试试 -I(ICMP)、-T -p 80(TCP),或 -n(关闭 DNS 反查减少延迟)来判断。

  • 到某跳后 RTT 突增:

    • 可能中间某链路拥塞或路由器 CPU 高负载导致转发延迟;不是一定是目标服务器问题。
  • 到目标最后一跳高延迟但中间跳正常:

    • 目标主机负载高或防火墙对探测包优先级低。
  • traceroute 显示路径与生产流量不一致:

    • 路由器对不同协议/端口可能走不同路径(路由基于策略或 ECMP),使用 TCP traceroute 可更接近实际业务流。
  • 无法运行 traceroute:

    • 某些环境缺少 traceroute 包,或需要 root 权限(尤其使用原始套接字或 TCP 时)。可安装 traceroute 或使用 tracepath(通常不需 root)。

七、进阶与替代工具

  • mtr(my traceroute):集成 ping 与 traceroute,实时显示每跳的丢包率与延迟变化,适合持续观测网络质量。

    • 使用示例:mtr -n 8.8.8.8
  • tracepath:类似 traceroute,但通常不需要 root 权限,自动选择路径 MTU 探测。

    • 使用示例:tracepath example.com
  • tcptraceroute / traceroute -T:通过 TCP(SYN)进行跟踪,更接近真实 TCP 连接路径(穿透防火墙时有用)。

  • paris-traceroute:为避免负载均衡导致结果不准确而设计(在多路径环境下更准确)。

  • ping:用于判断目标是否可达与稳定性(不是路径诊断工具)。


八、实用排查流程(快速模板)

  1. 基础连通性:ping -c 4 <目标IP或域名>。若 ping 不通,继续 traceroute。

  2. 路径跟踪:traceroute -n <目标IP>(或 tracert 在 Windows)。

  3. 若大量 *:改用 sudo traceroute -I -n <目标>sudo traceroute -T -p 80 -n <目标>

  4. 若怀疑中间节点丢包:使用 mtr -n <目标> 观察每跳丢包/延迟趋势。

  5. 确认本机路由与出接口:ip route / route -n / ip addr

  6. 检查防火墙/安全组(服务器端与中间设备)是否丢弃 ICMP/UDP/TCP 探测包。

  7. 如果需要获取 AS/运营商信息,可结合 whois 或在线工具(注意隐私与合规)。


九、权限与安全注意

  • 某些 traceroute 模式(例如使用原始套接字或发送 ICMP)需要 root 权限。

  • 在公司/敏感网络中运行 traceroute 之前确认是否允许(部分网络安全策略不允许随意探测)。

  • traceroute 输出可泄露网络拓扑信息,分享时注意脱敏。


十、快速备忘(常用命令汇总)

  • Linux:traceroute -n -q 1 -w 2 8.8.8.8

  • Linux(ICMP):sudo traceroute -I example.com

  • Linux(TCP 80):sudo traceroute -T -p 80 example.com

  • macOS:同 traceroute(参数可能略有差异)

  • Windows:tracert -d example.com-d 不做 DNS 解析)

  • 实时分析:mtr -n example.com

  • 无需 root 的替代:tracepath example.com

相关推荐
日更嵌入式的打工仔12 小时前
EtherCAT 逐帧解析状态机切换过程(初始清零阶段)
网络·信息与通信·ethercat
Danileaf_Guo14 小时前
256台H100服务器的RoCEv2无损与全互联算力网络建设方案
运维·服务器·网络
解压专家66614 小时前
怎么找书?怎么传输?在Kred里完成的全过程
运维·服务器·网络
两个人的幸福online14 小时前
cocos 使用 WebSocket(goEasy版)
网络·websocket·网络协议
NetInside_16 小时前
2025 DEM 趋势 × NetInside 产品能力:行业深度解读
运维·网络
usrcnusrcn16 小时前
智能建筑的 “隐形神经”:交换机如何连接安防、照明与门禁系统?
运维·服务器·网络
喵了meme16 小时前
C语言实战2
c语言·开发语言·网络
独行soc16 小时前
2025年渗透测试面试题总结-280(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮
唯创知音17 小时前
WT2605A录音方案实现高保真音频采集本地存储云端同步!
网络·音视频·录音芯片·录音方案·录音上传