网络链路分析笔记mtr/traceroute
网络链路分析笔记
- 网络诊断组合拳
- MTR 核心功能
- 安装方法
- 基础命令格式
- 场景1:网站访问卡顿
- 场景2:跨国游戏高延迟
- 生成报告存档
- traceroute:基础路径追踪
- 安装方法
- 基础命令格式
- 核心参数详解
- 输出结果解读
- 协议模式对比
- 场景1:网站无法访问
- 场景2:跨国连接慢
- 场景3:端口连通性测试
网络诊断组合拳
# 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 packets1 192.168.1.1 (192.168.1.1) 1.234 ms 1.123 ms 1.089 ms2 10.88.20.1 (10.88.20.1) 8.456 ms 8.901 ms 9.012 ms3 203.12.160.65 (203.12.160.65) 12.345 ms 12.789 ms 13.201 ms4 72.14.215.56 (72.14.215.56) 10.987 ms 11.234 ms 11.567 ms5 * * *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