双向MTR排查网络问题
约 1393 字大约 5 分钟
2025-10-27
这份教程将详细讲解本地设备(Windows/MacBook)与 Linux 服务器(Debian/CentOS 系列)之间双向 MTR 测试的完整流程,包括工具安装、命令执行及结果解读,步骤可直接操作。
一、MTR 工具简介
MTR(My Traceroute)是结合了ping和traceroute功能的网络诊断工具,能持续发送数据包并显示每一跳节点的延迟、丢包率等信息,可精准定位网络链路中的故障点。
正向测试:本地设备(Windows/Mac) → Linux 服务器
反向测试:Linux 服务器 → 本地设备(Windows/Mac)
二、正向测试:本地→Linux 服务器
需先在本地设备安装 MTR 工具,再向 Linux 服务器发起测试(服务器无需额外安装 MTR,仅需开放 ICMP 协议,默认通常已开放)。
2.1 本地设备:Windows 系统(使用 WinMTR)
WinMTR 是 Windows 下的图形化 MTR 工具,操作更直观。
下载工具:从速维云提供的MTR下载链接下载最新版本(选择 32 位或 64 位适配系统),解压后直接运行
WinMTR.exe(无需安装)。配置测试:
在「Host」输入框中,填写 Linux 服务器的公网 IP 地址(或域名)。
点击「Start」按钮开始测试,默认每秒发送 1 个数据包,建议持续测试 1-3 分钟(确保数据具有参考性)。
- 停止与保存:点击「Stop」结束测试,可通过「Export TEXT」将结果保存为文本文件,便于后续分析。
2.2 本地设备:MacBook 系统(使用命令行 MTR)
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 协议入站),否则可能测试失败。
3.1 Linux 服务器:安装 MTR(分 Debian/CentOS 系列)
根据服务器系统版本,使用对应的包管理器安装 MTR:
- 若服务器是 Debian 或 Ubuntu 系统,使用 apt 包管理器,执行命令:
sudo apt update && sudo apt install mtr -y- 若服务器是 CentOS 7 系统,使用 yum 包管理器,执行命令:
sudo yum install mtr -y- 若服务器是 CentOS 8 + 或 Rocky Linux 系统,使用 dnf 包管理器,执行命令:
sudo dnf install mtr -y3.2 执行反向测试(服务器端命令行)
获取本地公网 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 生成,如果有发现错误,请反馈我们。
