Linux命令-traceroute(IP 路由路径追踪)

Linux命令-traceroute(IP 路由路径追踪)

traceroute 是网络诊断的经典工具,通过发送递增 TTL(生存时间)的探测包,逐跳追踪 IP 数据包从源到目标的完整路由路径。它支持 ICMP、UDP 和 TCP 三种探测模式,比 tracepath 更灵活但需要 root 权限。

快速参考

bash 复制代码
traceroute [选项] 主机 [数据包大小]

权限提示traceroute 需要发送原始 IP 数据包,默认需要 root 权限。普通用户可以使用 tracepath 作为替代。在生产网络中大量发送探测包前,请确认不会触发安全告警

基本用法

bash 复制代码
# 基本追踪
sudo traceroute example.com
sudo traceroute 8.8.8.8

# 不解析主机名(加速显示)
sudo traceroute -n 8.8.8.8

# 指定最大跳数
sudo traceroute -m 15 8.8.8.8

# 指定每个跳数的探测次数
sudo traceroute -q 3 8.8.8.8       # 默认 3 次
sudo traceroute -q 1 8.8.8.8       # 每跳只探测 1 次

# 指定超时时间
sudo traceroute -w 5 8.8.8.8       # 5 秒超时

# 指定数据包大小
sudo traceroute 8.8.8.8 1500

探测模式

bash 复制代码
# === UDP 模式(默认) ===
sudo traceroute example.com
# 使用高端口 UDP 数据包(默认端口 33434+)
# 适合通用路由追踪

# === ICMP 模式 ===
sudo traceroute -I example.com
# 使用 ICMP Echo Request
# 更容易穿透防火墙
# 需要 root 权限

# === TCP 模式(推荐用于防火墙检测) ===
sudo traceroute -T example.com
sudo traceroute -T -p 80 example.com     # 探测 TCP 80 端口
sudo traceroute -T -p 443 example.com    # 探测 TCP 443 端口
sudo traceroute -T -p 22 example.com     # 探测 TCP 22 端口

# TCP 模式可以发现哪些端口被防火墙阻断
sudo traceroute -T -p 80 -n firewall.example.com
# 如果某跳显示 * * * 且下一跳正常 → 该跳过滤了 TCP 80
# 如果所有跳都显示 * * * → 所有跳都过滤了 TCP 80

理解输出

bash 复制代码
# traceroute 输出示例:
# traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
#  1  gateway.local (192.168.1.1)  0.534 ms  0.612 ms  0.456 ms
#  2  10.0.0.1 (10.0.0.1)        1.234 ms  1.456 ms  1.345 ms
#  3  * * *
#  4  172.16.0.1 (172.16.0.1)    8.765 ms  9.123 ms  8.987 ms
#  5  isp-router (203.0.113.1)   15.234 ms 16.123 ms 15.567 ms
#  6  google-gw (8.8.8.8)         18.456 ms 19.234 ms 18.789 ms

# * * * 表示:
# - 防火墙丢弃了探测包
# - 路由器不响应 TTL 超时
# - 网络拥塞导致超时

# 三列时间 = 三次探测的 RTT
# 主机名可能显示为 IP(-n 选项或 DNS 解析失败)

高级选项

bash 复制代码
# 接口指定
sudo traceroute -i eth0 8.8.8.8

# 源地址
sudo traceroute -s 192.168.1.100 8.8.8.8

# Type of Service (TOS)
sudo traceroute -t 1 8.8.8.8     # 低延迟
sudo traceroute -t 2 8.8.8.8     # 高吞吐量

# 不设置分片标志
sudo traceroute -F 8.8.8.8

# 设置具体数值
sudo traceroute --mtu 8.8.8.8    # 类似 tracepath 的 MTU 检测

# 紧凑输出
sudo traceroute -N 1 8.8.8.8     # 不显示多行 RTT

# 显示 AS 编号
sudo traceroute -A 8.8.8.8       # 需要安装 whois

防火墙探测

bash 复制代码
#!/bin/bash
# 使用 traceroute TCP 模式检测防火墙规则
# 用法: ./fw_detect.sh [目标]

TARGET="${1:-example.com}"
PORTS=(22 80 443 3306 8080 8443)

echo "防火墙规则检测: $TARGET"
echo "=============================="
echo ""

for PORT in "${PORTS[@]}"; do
    echo "--- 端口 $PORT ---"
    RESULT=$(sudo traceroute -T -n -p "$PORT" -m 10 -q 1 -w 2 "$TARGET" 2>&1)
    # 检查是否到达目标
    LAST_LINE=$(echo "$RESULT" | tail -1)
    if echo "$LAST_LINE" | grep -q "$PORT"; then
        echo "  端口 $PORT: 开放(可达)"
    else
        # 统计有多少跳不响应
        STAR_COUNT=$(echo "$RESULT" | grep -c '^\s*[0-9].*\*')
        echo "  端口 $PORT: ${STAR_COUNT} 跳不响应"
    fi
done

mtr - traceroute 的升级版

bash 复制代码
# mtr (My Traceroute) 结合了 traceroute 和 ping 的功能
# 安装:
sudo apt-get install mtr    # Debian/Ubuntu
sudo yum install mtr        # RHEL/CentOS

# 基本用法
sudo mtr example.com
mtr --report example.com    # 报告模式

# 不解析 DNS
mtr -n example.com

# ICMP/TCP 模式
sudo mtr -T -p 80 example.com   # TCP 80
sudo mtr -u example.com          # UDP
sudo mtr -I example.com          # ICMP

# 输出报告(脚本中常用)
mtr --report --report-cycles 10 -n example.com

选项速查

选项 说明
-I 使用 ICMP 探测
-T 使用 TCP 探测
-U 使用 UDP 探测(默认)
-n 不解析主机名
-m N 最大跳数
-q N 每跳探测次数
-w SEC 超时时间
-p PORT 目标端口(TCP 模式)
-i IFACE 指定源接口
-s ADDR 指定源地址
-A 显示 AS 编号
-F 不设置分片标志

traceroute 是网络诊断的经典工具,从 1987 年诞生至今仍是排查网络连通性问题的首选。TCP 模式(-T)是检测防火墙规则的利器,而 mtr 则提供了更直观的实时诊断视图。对于不需要 root 权限的场景,优先使用 tracepath

相关推荐
芷栀夏1 小时前
极空间部署Sokoban:Docker搭建网页版推箱子并实现远程访问
运维·docker·容器
我爱cope1 小时前
【计算机网络 | 数据链路层3:MAC 地址是什么?它和 IP 地址有什么区别?】
学习·tcp/ip·计算机网络·智能路由器·数据链路层
深圳恒讯1 小时前
乌克兰服务器的网络延迟、机房现状与稳定性情况
运维·服务器·网络
Dream-Y.ocean1 小时前
具身智能落地实战:数字人驱动的全自动化舆情监控系统
运维·自动化
拾光Ծ1 小时前
Linux五种I/O模型与fcntl非阻塞控制
java·linux·服务器·i/o模型
FPGA小迷弟2 小时前
AXI4-Stream协议详解与Vivado自定义IP核封装实战
网络协议·tcp/ip·fpga开发·fpga·硬件开发
梦想的旅途22 小时前
企业微信外部群怎么实现自动化?API接口接入思路
运维·自动化·企业微信
weixin_403810132 小时前
iOS免越狱自动化蓝牙HID方案:不装代理也能跑脚本
运维·ios·自动化·跨境电商·ai智能体·ios投屏·苹果投屏
Pocker_Spades_A3 小时前
极空间安装1Panel:图形化管理Docker应用并部署AList
运维·docker·容器