双向MTR排查网络问题
约 1311 字大约 4 分钟
2025-10-27
本文将详细讲解本地设备(Windows/Mac)与 Linux 服务器(Debian/CentOS 系列)之间双向 MTR 测试的完整流程,包括工具安装、命令执行及结果解读,步骤可直接操作。
MTR 工具简介
MTR(My Traceroute)是结合了 ping 和 traceroute 功能的网络诊断工具,能持续发送数据包并显示每一跳节点的延迟、丢包率等信息,可精准定位网络链路中的故障点。
- 正向测试:本地设备(Windows/Mac)→ Linux 服务器
- 反向测试:Linux 服务器 → 本地设备(Windows/Mac)
正向测试:本地 → Linux 服务器
需先在本地设备安装 MTR 工具,再向 Linux 服务器发起测试(服务器无需额外安装 MTR,仅需开放 ICMP 协议,默认通常已开放)。
WinMTR 是 Windows 下的图形化 MTR 工具,操作更直观。
下载工具
从速维云提供的MTR下载链接下载最新版本(选择 32 位或 64 位适配系统),解压后直接运行
WinMTR.exe(无需安装)。配置测试
- 在「Host」输入框中,填写 Linux 服务器的公网 IP 地址(或域名)。
- 点击「Start」按钮开始测试,默认每秒发送 1 个数据包,建议持续测试 1-3 分钟(确保数据具有参考性)。
停止与保存
点击「Stop」结束测试,可通过「Export TEXT」将结果保存为文本文件,便于后续分析。
Mac 系统默认未安装 MTR,需通过 Homebrew 安装(若未安装 Homebrew,需先执行安装命令)。
安装 Homebrew(若已安装,跳过此步)
打开「终端」,执行命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装 MTR
在终端执行命令:
brew install mtr执行正向测试
终端中输入命令(将
[服务器公网IP]替换为实际地址):sudo mtr --report --report-cycles 100 [服务器公网IP]--report:以报告形式输出结果(非实时刷新)。--report-cycles 100:发送 100 个数据包(测试时长约 100 秒,可根据需求调整)。
结果保存
执行命令后,终端会直接输出结果,可通过
> mtr_local_to_server.txt将结果保存到文件:sudo mtr --report --report-cycles 100 [服务器公网IP] > mtr_local_to_server.txt
反向测试:Linux 服务器 → 本地设备
需先在 Linux 服务器安装 MTR,再向本地设备(Windows/Mac)发起测试。
测试前提
本地设备需获取公网 IP(可通过 IP 查询网站获取),且需关闭本地防火墙(或允许 ICMP 协议入站),否则可能测试失败。
安装 MTR
根据服务器系统版本,使用对应的包管理器安装 MTR:
sudo apt update && sudo apt install mtr -ysudo yum install mtr -ysudo dnf install mtr -y执行反向测试
获取本地公网 IP
本地设备访问 IP 查询网站,记录显示的公网 IP(如
123.123.123.123)。服务器端执行 MTR 命令
终端中输入命令(将
[本地公网IP]替换为实际地址):sudo mtr --report --report-cycles 100 [本地公网IP]参数含义与本地测试一致:
--report输出报告,--report-cycles 100发送 100 个数据包。结果保存
将结果保存到文件,便于后续分析:
sudo mtr --report --report-cycles 100 [本地公网IP] > mtr_server_to_local.txt
MTR 结果解读
MTR 输出结果中,关键列的含义如下,需重点关注丢包率和延迟:
| 字段 | 含义 |
|---|---|
| Host | 网络链路中的每一跳节点(IP 或域名)。若某一跳显示 *,表示该节点无响应 |
| Loss% | 该节点的数据包丢包率(百分比) |
| Snt | 发送的数据包总数,与 --report-cycles 设置一致 |
| Avg | 平均延迟(毫秒,ms),延迟过高可能是链路拥堵 |
| Best / Worst | 最小 / 最大延迟(ms),波动过大可能是网络不稳定 |
中间节点丢包无需过度担心
在 MTR 结果中,若中间节点(非目标节点)出现丢包,大概率是运营商的"保护性丢包"——运营商为了避免节点负载过高,会对非关键的 ICMP 探测包进行有限制的丢弃,这种丢包通常不会影响实际业务(如网页访问、文件传输等)。
只有当最终目标节点(本地设备或服务器)出现持续丢包时,才需要重点排查(如防火墙拦截、服务器负载过高、链路故障等)。
注意事项
警告
- ICMP 协议放行:MTR 基于 ICMP 协议工作,需确保本地设备和服务器均未拦截 ICMP 数据包(Windows 关闭防火墙、Linux 清空 ICMP 相关 iptables 规则)。
- 公网 IP 准确性:反向测试时,本地设备需使用公网 IP,而非局域网 IP(如
192.168.x.x),否则服务器无法访问。 - 测试时长:建议每次测试发送 100-300 个数据包(
--report-cycles 100),避免测试时间过短导致数据不准确。
提示
注:文档部分内容可能由 AI 生成,如果有发现错误,请反馈我们。
