目录

网络链路分析笔记mtrtraceroute

网络链路分析笔记mtr/traceroute

网络诊断组合拳

# 1. 快速连通性测试
ping -c 4 example.com

# 2. 完整路径分析
traceroute -nT -p 443 example.com

# 3. 持续性质量监测
mtr -c 100 -i 0.2 example.com

# 4. 深度端口检测
tcptraceroute -p 443 example.com

输出标记速查表

标记含义解决方案
*超时未响应尝试增加 -w 等待时间
!H主机不可达检查目标服务器状态
!N网络不可达联系网络管理员
!P协议不可达更换协议(如TCP/UDP切换)
!F需要分片减小包大小 -s
!X通信被禁止检查防火墙规则

MTR 核心功能

  • 网络路径追踪:结合 traceroute + ping 功能
  • 实时质量分析:持续监测路径中每个节点的丢包率、延迟
  • 故障定位:精准识别网络瓶颈节点

安装方法

CentOS 6/7/8

yum install mtr

Ubuntu/Debian

apt install mtr

验证安装

mtr --version

基础命令格式

mtr [options] hostname/ip
mtr -c 100 -i 0.5 -n 8.8.8.8          # 基础诊断
mtr -rw -c 200 -i 0.2 google.com       # 生成报告
mtr -o "L SD NBAW" 1.1.1.1             # 自定义列显示
-c NUM发送数据包数量mtr -c 100 8.8.8.8
-i SEC发包间隔(秒)mtr -i 0.1 baidu.com
-n禁用反向DNS解析(显示IP)mtr -n github.com
-r生成报告模式(输出到文件)mtr -r -c 50 1.1.1.1 > report.txt
-w宽报告模式(显示主机名)mtr -rw cloudflare.com
-s BYTES设置数据包大小mtr -s 1024 taobao.com
-m MAX设置最大TTL(跳数)mtr -m 30 facebook.com
-a IP设置源IP地址mtr -a 192.168.1.100 google.com
-4/-6强制IPv4/IPv6mtr -6 ipv6.google.com
-o FIELDS自定义输出列mtr -o “L SD NBAW” 8.8.8.8

输出结果

Host              Loss%  Snt  Last  Avg  Best  Wrst  StDev
 - 192.168.1.1     0.0%   100  2.1   2.3  1.8   8.1   0.9
 - 10.88.20.1      0.0%   100  8.2   9.1  7.5  24.3   2.5
 - 203.12.160.65   3.0%   100  12.4 14.2 11.1  38.9   5.6  <-- 问题节点!
 - 72.14.215.56    0.0%   100  10.9 11.8 10.1  20.3   1.9
 - 8.8.8.8         0.0%   100   9.8 10.5  9.2  15.0   1.1
  • 列说明:
    • Host: 节点IP/主机名
    • Loss%: 丢包率(>3%需警惕)
    • Snt: 发送包数量
    • Last/Avg/Best/Wrst: 最近/平均/最佳/最差延迟(ms)
    • StDev: 延迟波动值(越大越不稳定)
字段含义字段含义
D丢包率 (Loss%)L平均延迟 (Avg)
R最近延迟 (Last)S标准偏差 (StDev)
N节点IP/主机名B最佳延迟 (Best)
A平均延迟 (Avg)W最差延迟 (Wrst)
V状态变化统计G包状态条形图
mtr -o "L D R S N" 8.8.8.8    # 显示关键指标
mtr -o "BAWVG" youtube.com    # 性能波动分析

场景1:网站访问卡顿

# 持续监测,每0.5秒发包,共50个
mtr -c 50 -i 0.5 -rw example.com
  • 分析重点:
    • 查找第一个 Loss% > 0% 的节点
    • 观察 Wrst(最差延迟) 突增的节点
    • 检查 StDev > 20ms 的高波动节点

场景2:跨国游戏高延迟

# 大包测试(模拟游戏数据)
mtr -s 1200 -c 100 -i 0.2 game-server.com
  • 优化建议:
    • 若中间节点丢包高 → 联系ISP
    • 若最后几跳延迟高 → 游戏服务器问题
    • 全程延迟高 → 考虑加速器

生成报告存档

mtr -rw -c 200 -i 0.1 8.8.8.8 > mtr_report_$(date +%F).txt

traceroute:基础路径追踪

安装方法

CentOS/RHEL

# 标准版(使用UDP协议)
sudo yum install traceroute -y  # CentOS 7
sudo dnf install traceroute -y  # CentOS 8/9

# 增强版(支持TCP/ICMP)
sudo yum install tcptraceroute -y

Ubuntu/Debian

# 基础版
sudo apt update && sudo apt install traceroute -y

# 增强功能版
sudo apt install tcptraceroute mtr -y

验证安装

traceroute --version
# 输出:Modern traceroute for Linux, version 2.1.0

基础命令格式

traceroute [选项] 目标主机

常用组合:

traceroute google.com                  # 基础探测
traceroute -n -T -p 443 8.8.8.8       # TCP模式探测HTTPS
traceroute -I 1.1.1.1                 # ICMP模式(需root)

核心参数详解

参数作用示例
-n禁用DNS解析(显示IP)traceroute -n github.com
-I使用ICMP协议(需root)sudo traceroute -I baidu.com
-T使用TCP协议traceroute -T -p 80 example.com
-U使用UDP协议(默认)traceroute -U cloudflare.com
-p PORT指定目标端口traceroute -T -p 443 1.1.1.1
-f N设置起始TTLtraceroute -f 5 twitter.com
-m N设置最大跳数traceroute -m 30 facebook.com
-q N每跳探测次数traceroute -q 5 microsoft.com
-w SEC等待响应时间traceroute -w 2 aws.com
-z SEC探测间隔时间traceroute -z 0.5 aliyun.com

输出结果解读

traceroute to google.com (142.250.189.206), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  1.234 ms  1.123 ms  1.089 ms
 2  10.88.20.1 (10.88.20.1)  8.456 ms  8.901 ms  9.012 ms
 3  203.12.160.65 (203.12.160.65)  12.345 ms  12.789 ms  13.201 ms
 4  72.14.215.56 (72.14.215.56)  10.987 ms  11.234 ms  11.567 ms
 5  * * *
 6  142.250.189.206 (142.250.189.206)  15.678 ms  16.012 ms  16.345 ms
  • 列说明:
  • 跳数序号:数据包经过的第N个节点
  • 节点地址:IP或主机名
  • 响应时间:默认显示3次探测的延迟(ms)
  • 特殊标记:
        • *:节点未响应
    • !H:主机不可达
    • !N:网络不可达
    • !X:通信被禁止

协议模式对比

模式命令优点缺点适用场景
UDP默认模式兼容性好易被防火墙拦截基础网络诊断
ICMP-I结果精准`结果精准
TCP-T绕过防火墙速度较慢云服务/CDN诊断

场景1:网站无法访问

traceroute -nT -p 443 example.com
  • 分析步骤:
    • 找到第一个出现 * 或高延迟的节点
    • 检查该节点是否属于你的ISP
    • 使用 mtr 验证持续性丢包

场景2:跨国连接慢

sudo traceroute -I -m 20 -q 3 8.8.8.8
  • 优化建议:
    • 若中间节点延迟突增 → 联系ISP
    • 最后几跳延迟高 → 目标服务器问题
    • 全程延迟高 → 使用CDN加速

场景3:端口连通性测试

# 测试MySQL服务器端口
traceroute -T -p 3306 db-server.example.com