traceroute 命令介绍

Traceroute 介绍

traceroute 是Linux默认提供的路由追踪小程序, 用于跟踪IP数据包到某个主机的路由.
借助了TTL(生存时间), 向目的地址发送一系列的探测包, 然后侦听来自网关的超时回复.
第1个request的TTL为1, 以后依此递增直至第30个(默认最多30跳). 直到获得ICMP port unreachable或TCP reset.
每跳默认发送3个探测包, 并打印一行, 显示ttl/网关地址/每个探测的往返时间.
如果探测结果来自不同的网关, 则会打印每个响应系统的地址, 如果在5秒内没响应, 则会打印一个*.。。。

traceroute 参数列表

-4: 强制IPv4 跟踪路由 (默认会自动选择适当的协议, 如果解析主机名同时返回IPv4和IPv6地址, 则traceroute优先IPv4)
-6: 强制IPv6跟踪路由
-T, --tcp: 使用TCP SYN进行探测 (相当于`tcptraceroute`)
-I, --icmp: 使用ICMP ECHO进行探测
-d, --debug: 启用套接字级调试, 如果内核支持的话
-F, --dont-fragment: 不要对探测数据包进行分段
-f first_ttl, --first=first_ttl: 指定初始TTL, 默认为1
-g gate,..., --gateway=gate,...: 该选项告诉网络通过指定网关路由数据包(IPv4最多8个, IPv6最多127)
-i device, --interface=device: 指定网卡设备, 发送数据包(默认根据路由表选择)
-m max_ttl, --max-hops=max_ttl: 指定traceroute探测的最大跳数(最大生存时间值), 默认值为30
-N squeries, --sim-queries=squeries: 指定同时发送的探测包数量, 默认值为16
-n: 显示IP地址时, 不尝试映射主机名
-p port, --port=port: 设置目的端口, TCP不会改变, UDP和ICMP端口号将随每个探针递增
-t tos, --tos=tos: 设置ipv4的服务类型(16低延迟和8高吞吐量), 或者ipv6的流量控制值
-l flow_label, --flowlabel=flow_label: 给ipv6数据包添加flow_label来使其被路由器特殊处理
-w MAX,HERE,NEAR, --wait=MAX,HERE,NEAR: 设置超时, HERE为同路由等待次数(默认3次), NEAR为下一跳路由等待次数(默认10次), MAX为超时时间(默认5秒)
-q nqueries, --queries=nqueries: 设置每1跳发送的数据包量, 默认3个
-r: 跳过普通的路由表, 直接将数据包发送到远程主机
-s src_addr, --source=src_addr: 指定IP地址作为传出探测数据包的源地址
-z sendwait, --sendwait=sendwait: 设置探测包间隔, 默认为0, 不超过10是毫秒单位, 超过10是秒单位
-e, --extensions: 展示ICMP扩展, 包括多协议标签交换
-A, --as-path-lookups: 打印AS号
-M name  --module=name: 使用指定的模块(内置或外部)用于traceroute, 大多数方法都有其快捷方式(例如`-I`表示`-M icmp`)
-O OPTS,..., --options=OPTS,...: 将特定于模块的选项OPTS用于traceroute模块, 多个以逗号分隔
--sport=num: 指定源端口, 包含`-N 1`
--fwmark=num: 为传出数据包设置防火墙标记
-U  --udp: 使用UDP到特定端口进行路由, 而不是每个探针增加端口, 默认端口为53
-UL: 使用UDP LITE进行路由, 默认目标端口为53
-D  --dccp: 使用DCCP请求进行路由, 默认端口为33434
-P prot  --protocol=prot: 使用协议保护的原始数据包进行路由
--mtu: 沿着被追踪的路径发现MTU, 包含`-F -N 1`
--back: 推断后向路径中的跳数, 如果不同则打印
-V: 输出版本信息
--help: 输出帮助信息

例子

# 使用traceroute查看路由
traceroute google.com
# 使用tcp traceroute, 并显示AS, 指定IPv4查看路由
traceroute -TA4 google.com
# 每跳发送1个数据包
traceroute -q1 google.com
# 指定 packetlen 包长度为30
traceroute google.com 30

其他在线工具

# IPIP.net 在线Traceroute
https://en.ipip.net/traceroute.php
# itdog 在线Traceroute
https://www.itdog.cn/tracert/