网络链路分析笔记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/IPv6 | mtr -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 | 设置起始TTL | traceroute -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