
说明概念MTR全称My TraceRoute也作Matt’s TraceRoute是一款网络诊断工具把ping和traceroute的能力合二为一像traceroute一样逐跳追踪到达目标的完整路径像ping一样持续发送探测包并对每一跳统计丢包率、延迟最小/平均/最大/标准差等指标。传统traceroute每跳通常只探测一次结果容易受节点瞬时抖动影响mtr会对路径上的每个节点持续探测并实时汇总统计因此能更准确地定位「具体哪一跳」出现了延迟升高或丢包尤其适合排查间歇性、波动性的网络故障。典型使用场景定位延迟/丢包发生在路径上的哪一跳排查跨境、跨运营商链路质量配合-z看 AS 号长时间持续监控链路稳定性交互模式实时刷新快速生成报告贴工单或写脚本-r报告模式。跨平台Linux 直接安装mtr软件包Debian/Ubuntu 用apt install mtrRHEL/CentOS 用yum install mtrmacOS 用brew install mtrWindows 无原生 mtr可用WinMTR替代。Windows 自带的pathping是同类工具两阶段式路由 丢包统计用途类似。基础示例交互模式默认mtr8.8.8.8直接运行会进入实时刷新的交互界面按q退出表格内容与报告模式一致只是持续更新。报告模式mtr-r-c58.8.8.8发送 5 个探测包后输出一次报告并退出Start: 2026-09-28T15:59:470700 HOST: ecs-bf69-0004 Loss% Snt Last Avg Best Wrst StDev 1.|-- 100.80.0.1 0.0% 5 53.3 44.7 8.3 56.5 20.4 2.|-- 10.17.135.113 0.0% 5 52.7 45.8 14.6 56.6 17.5 3.|-- 11.82.129.105 0.0% 5 2.3 2.6 1.9 3.9 0.8 4.|-- 11.82.1.25 40.0% 5 1.9 3.4 1.9 4.2 1.3 5.|-- 11.82.1.49 20.0% 5 3.4 6.9 3.4 17.1 6.8 6.|-- ??? 100.0 5 0.0 0.0 0.0 0.0 0.0 7.|-- ??? 100.0 5 0.0 0.0 0.0 0.0 0.0 8.|-- 11.82.1.52 40.0% 5 3.3 6.6 2.4 14.0 6.4 9.|-- 11.82.1.126 0.0% 5 2.1 2.1 2.0 2.2 0.1 10.|-- ??? 100.0 5 0.0 0.0 0.0 0.0 0.0 11.|-- ??? 100.0 5 0.0 0.0 0.0 0.0 0.0 12.|-- 172.16.10.38 0.0% 5 28.7 29.0 28.7 30.1 0.6 13.|-- 15169.sgw.equinix.com 0.0% 5 25.6 25.6 25.6 25.7 0.0 14.|-- 192.178.109.121 0.0% 5 28.6 28.7 28.6 28.8 0.0 15.|-- 142.251.240.253 0.0% 5 25.9 25.9 25.8 26.0 0.0 16.|-- dns.google 0.0% 5 29.8 29.8 29.8 29.8 0.0输出说明说明1.|-- host这种带|--的格式是 Debian/Ubuntu 系较新版 mtr 报告模式的输出其他发行版如 CentOS 的 mtr 0.85可能显示为1. host列含义不变。字段说明Host经过的路由节点主机名/IPLoss%该跳的丢包率百分比Snt已发送的数据包数量Last最后一个数据包的延迟毫秒Avg平均延迟Best最佳最低延迟Wrst最差最高延迟StDev延迟标准差越小越稳定怎么读这份报告第 4、5、8 跳出现了 40%/20%/40% 的丢包但从第 9 跳到目标16 跳dns.google全程 0%说明端到端链路其实是通的中间那几跳的丢包是路由器对 ICMP 限速或不响应并非真实故障。???是什么意思该路由器收到了你的探测包但它没有返回 ICMP 超时回复或者回复在返回途中丢失了。???不代表丢包只要???之后的节点仍然能正常返回信息0% 丢包说明网络是通的中间那个路由器只是不愿意回复而已。从你的数据看第 6、7 跳是???但第 8 跳11.82.1.52、第 9 跳又能正常显示第 10、11 跳是???第 12 跳172.16.10.38也正常显示 —— 说明这些只是路由器不回复链路本身是通的。1 到 16 的顺序是什么意思1 到 16 代表 ping 包从你的源主机到目标主机依次经过的每一跳路由器。丢包率如何计算MTR 对每一跳独立计算丢包率计算方式是第 N 跳丢包率 发给第 N 跳的探测包未收到回复的数量/发给第 N 跳的探测包总数× 100%对于第4跳 MTR 发送 TTL4 的包 → 经过前 3 跳路由器 → 到达第 4 跳路由器 → 第 4 跳路由器应该返回 ICMP Time Exceeded → 5 个包里只收到 3 个回复 → 丢包率 40% ✅ 对于第5跳 MTR 发送 TTL5 的包 → 经过前 4 跳 → 到达第 5 跳路由器 → 第 5 跳路由器应该返回 ICMP Time Exceeded → 5 个包里收到 4 个回复 → 丢包率 20% ✅如何判断是 ICMP 限速还是真丢包中间节点丢包但后续节点不丢包通常是该路由器限速 ICMP或不响应不代表真正丢包从某一跳开始持续丢包到目标说明该节点到下一跳之间的链路确实存在问题重点看最后几跳的丢包率这才是反映端到端真实质量的指标真实情况ICMP限速: ICMP限速 ICMP限速 ICMP限速 第1跳 ✅回复 → 第4跳 ⚠️丢回复 → 第5跳 ⚠️丢回复 → 第8跳 ⚠️丢回复 → 第9跳 ✅回复 0% 40% 20% 40% 0% │ └─ 说明这些路由器只是懒得回复但数据包都正常转发了真实链路丢包: 第1跳 ✅ → 第2跳 ✅ → 第3跳 ❌开始丢 → 第4跳 ❌继续丢 → 第5跳 ❌继续丢 0% 0% 30% 30% 30% │ └─ 从某一跳开始丢包且持续到终点这才是真实丢包参数用法与示例按功能分组分组逻辑测谁、怎么发一→ 发多大/多久二→ 走多远三→ 怎么输出四~六→ 看什么七。为什么示例大多加-r报告模式跑完即退出、输出固定可复现适合文档对照学习交互模式下运行同样参数每跳的表格内容完全相同只是持续刷新。第五组-j/-x/-C/-l/-p本身即非交互格式无需再加-r。Usage: mtr [options] hostname参数英文说明中文说明-F, --filename FILEread hostname(s) from a file从文件读取目标主机批量探测-4use IPv4 only仅使用 IPv4-6use IPv6 only仅使用 IPv6-u, --udpuse UDP instead of ICMP echo使用 UDP 数据报探测替代 ICMP-T, --tcpuse TCP instead of ICMP echo使用 TCP 探测替代 ICMP-a, --address ADDRESSbind the outgoing socket to ADDRESS绑定本机源地址-I, --interface NAMEuse the network interface with a specific name指定发送探测的网卡接口-f, --first-ttl NUMBERset what TTL to start设置起始 TTL-m, --max-ttl NUMBERmaximum number of hops最大跳数-U, --max-unknown NUMBERmaximum unknown host连续未知跳上限提前停止-P, --port PORTtarget port number for TCP, SCTP, or UDP目标端口TCP/SCTP/UDP-L, --localport LOCALPORTsource port number for UDPUDP 源端口-s, --psize PACKETSIZEset the packet size used for probing探测包大小-B, --bitpattern NUMBERset bit pattern to use in payloadpayload 比特填充模式-i, --interval SECONDSICMP echo request interval探测间隔秒1 需 root-G, --gracetime SECONDSnumber of seconds to wait for responses最后探测后等待迟到响应的宽限时间秒-Q, --tos NUMBERtype of service field in IP headerIP 头 ToS 字段QoS 等级-e, --mplsdisplay information from ICMP extensions显示 ICMP 扩展MPLS 信息-Z, --timeout SECONDSseconds to keep probe sockets open探测 socket 保持打开的秒数-M, --mark MARKmark each sent packet给数据包打 mark配合策略路由-r, --reportoutput using report mode报告模式输出-w, --report-wideoutput wide report宽格式报告输出-c, --report-cycles COUNTset the number of pings sent设置探测包数量-j, --jsonoutput json输出 JSON-x, --xmloutput xml输出 XML-C, --csvoutput comma separated values输出 CSV-l, --rawoutput raw format输出原始格式-p, --splitsplit output分段输出-t, --cursesuse curses terminal interface使用 curses 交互界面--displaymode MODEselect initial display mode选择初始显示模式-n, --no-dnsdo not resove host names不解析主机名只显示 IP-b, --show-ipsshow IP numbers and host names同时显示 IP 和主机名-o, --order FIELDSselect output fields选择输出字段-y, --ipinfo NUMBERselect IP information in output显示 IP 归属信息0AS 1前缀 2国家 3RIR 4分配日期-z, --aslookupdisplay AS number显示 AS 号-h, --helpdisplay this help and exit显示帮助并退出-v, --versionoutput version information and exit输出版本信息并退出一、探测对象与方式测谁、怎么发hostname / -F / -4 / -6 / -u / -T / -P / -L / -a参数说明hostname探测目标域名或 IP-F FILE从文件读取多个目标批量探测-4/-6强制 IPv4 / IPv6默认ICMP Echo 探测同 ping-uUDP 数据报默认端口 33000目标返回 Port Unreachable-TTCP SYN默认端口 80目标返回 SYN-ACK/RST-P PORT配合-T/-u指定端口-T为目标端口-u为起始端口逐包 1-L PORTUDP 源端口-a ADDRESS绑定本机源 IP须是本机网卡真实地址-I NAME指定探测出口网卡多网卡场景# 目的端mtr-r-c58.8.8.8# 直接指定目标mtr-6-r-c52400:3200::1# 仅走 IPv6cattargets.txt# 批量文件每行一个目标# 8.8.8.8# 1.1.1.1mtr-r-c5-Ftargets.txt# 依次输出每个目标的报告# 探测协议mtr-u-r-c58.8.8.8# UDP 探测默认从 33000 起逐包 1mtr-T-r-c58.8.8.8# TCP SYN 探测默认 80 端口mtr-T-P443-r-c58.8.8.8# TCP SYN 探测 443 端口最常用mtr-u-P50000-r-c58.8.8.8# UDP 从 50000 端口开始探测mtr-u-L40000-r-c58.8.8.8# 固定 UDP 源端口# 源端mtr-a192.168.1.224-r-c58.8.8.8# 指定从哪个本机 IP 出去mtr-6-r-c52400:3200::1Start: 2026-09-28T10:00:000800 HOST: ecs-1706 Loss% Snt Last Avg Best Wrst StDev 1. 240e:56:4000:1100::1 0.0% 5 1.3 1.4 1.1 2.0 0.3 2. 2400:3200::1 0.0% 5 9.2 9.0 8.8 9.6 0.3为什么默认 ICMP 经常不准 or 为何使用TCP/UDP模式ICMP 属于控制面协议非业务流量防火墙/运营商/目标主机常对它限速或直接丢弃于是出现???、中间跳假丢包等假象——“ping 不通不等于业务不通”。换 TCP/UDP 相当于把探测包伪装成正常业务流量更容易穿过这些限制结果更贴近真实用户体验。注意中间跳始终靠路由器返回 ICMP Time Exceeded 来发现换的只是探测包本身。到达终点后靠目标的响应确认真的到了三种协议对比协议默认端口到达确认方式特点ICMP默认无Echo Reply最易被限速/丢弃易假丢包UDP-u33000起始逐包 1目标回 Port Unreachable像普通 UDP 流量穿透性好TCP-T80固定目标回 SYN-ACK端口开/ RST端口关测业务真实路径-P PORT语义对-T是目标端口对-u是起始端口之后每个探测包 1。TCP SYN 只完成三次握手的前两步收到响应后立刻发 RST不会真正建立连接对目标几乎无负载。别和传统traceroute混淆它的 UDP 默认起始端口是 33434而 mtr 是 33000。适用场景中间设备对 ICMP 限速/丢弃导致???或假丢包 → 换 UDP/TCP 结果更真实-T -P 443测业务真实路径排查服务通但 ping 不通-a用于多网卡机器指定出口、验证策略路由/分线路-u/-T底层依赖 raw socket源码安装通常需 root多数发行版包已用 setuid/cap_net_raw 给mtr-packet授权普通用户可直接跑。-L一般用于穿过按源端口做哈希的设备绑定不存在的地址会报 bind 错误。二、探测包与时序控制发多大、发多快-s / -B / -Q / -i / -G / -Z / -M参数说明-s SIZE探测包大小字节含 IP 与 ICMP 头默认 64-B NUMpayload 比特填充模式-Q TOSIP 头 ToS 字段QoS 等级-i SECONDS探测间隔1 秒需 root-G SECONDS最后一批探测后等待迟到响应的秒数默认 5-Z SECONDS探测 socket 保持打开的秒数默认 5-M MARK给包打 SO_MARK配合策略路由需 rootmtr-s1472-r-c58.8.8.8# 147220(IP)8(ICMP)1500 满包测 MTU/分片mtr-Q46-r-c58.8.8.8# ToSEF模拟高优先级语音流量mtr-i0.5-r-c208.8.8.8# 加快探测节奏mtr-G3-r-c58.8.8.8# 收尾等待缩到 3 秒报告更快出sudomtr-M0x100-r-c58.8.8.8# 让探测包命中特定策略路由输出均同标准报告。-Q可验证运营商/云内网对不同 QoS 等级的路径差异-B用于测试设备对特定比特串的异常处理极少使用。三、路由范围控制走多远-f / -m / -U参数说明-f TTL起始跳数跳过前面几跳-m TTL最大跳数默认 30-U NUM连续 N 跳无响应则提前停止默认 5mtr-f3-r-c58.8.8.8# 从第 3 跳开始显示mtr-m2-r-c58.8.8.8# 最多探 2 跳mtr-U2-r-c5203.0.113.99# 连续 2 跳无响应就停mtr-f3-r-c58.8.8.8HOST: ecs-1706 Loss% Snt Last Avg Best Wrst StDev 3. 203.0.113.1 0.0% 5 12.5 12.8 12.0 14.0 0.6 4. 8.8.8.8 0.0% 5 15.2 15.0 14.5 16.0 0.5mtr-U2-r-c5203.0.113.99HOST: ecs-1706 Loss% Snt Last Avg Best Wrst StDev 1. 192.168.1.1 0.0% 5 1.2 1.5 1.0 2.3 0.4 2. 10.0.0.1 0.0% 5 5.3 5.1 4.8 6.0 0.3 3. ??? 100.0% 5 0.0 0.0 0.0 0.0 0.0 4. ??? 100.0% 5 0.0 0.0 0.0 0.0 0.0 # 连续 2 跳无响应提前结束-f 4常用于跳过本地内网段直奔出口-U可避免在黑洞路径上白等 30 跳。四、报告模式怎么输出给人看-r / -c / -w参数说明-r报告模式跑完退出脚本/工单首选-c COUNT每跳探测包数量默认 10-w宽格式不截断主机名配合-b才能完整显示主机名 (IP)mtr-r-c10-w-b8.8.8.8Start: 2026-09-28T10:00:000800 HOST: ecs-1706 Loss% Snt Last Avg Best Wrst StDev 1. gateway.local (192.168.1.1) 0.0% 10 1.2 1.5 1.0 2.3 0.4 ... 4. dns.google (8.8.8.8) 0.0% 10 15.2 15.0 14.5 16.0 0.5不加-w时主机名/IP 会被截断排查 CDN 节点域名很长务必加-w报告模式下-b显示的 IP 也要靠-w才能完整展示手册In report mode… they will be truncated. Use the wide report (-w) mode to see the IPs。五、结构化输出给程序看-j / -x / -C / -l / -p参数格式-jJSON-xXML-CCSV-lraw 原始逐条输出-psplit某跳数据变化即输出该跳一行增量格式mtr-j-c58.8.8.8# 接入监控/告警mtr-x-c58.8.8.8# 输出 XMLmtr-C-c58.8.8.8# 导入 Excel 分析mtr-l-c58.8.8.8# 外部程序逐条消费mtr-p8.8.8.8# 持续采集配合 mtr-gtk 等前端mtr-j-c58.8.8.8{report:{mtr:{src:ecs-1706,dst:8.8.8.8,tos:0,tests:5,psize:64,bitpattern:0x00},hubs:[{count:1,host:192.168.1.1,Loss%:0.0,Snt:5,Last:1.2,Avg:1.5,Best:1.0,Wrst:2.3,StDev:0.4}]}}注意hubs里的统计值是数字Loss%也不带%号mtr元信息里tos/tests是数字psize/bitpattern是字符串。mtr-x-c58.8.8.8MTRSRCecs-1706DST8.8.8.8TOS0x0PSIZE64BITPATTERN0x00TESTS5HUBCOUNT1HOST192.168.1.1Loss0.0/LossSnt5/SntLast1.2/LastAvg1.5/AvgBest1.0/BestWrst2.3/WrstStDev0.4/StDev/HUB/MTR注意属性是BITPATTERN全大写XML 标签不允许%所以丢包标签是Loss而非LossPercent标签名与报告列名一致Snt/Wrst等。mtr-C-c58.8.8.8Mtr_Version,Start_Time,Status,Host,Hop,Ip,Loss%,Snt,Last,Avg,Best,Wrst,StDev MTR.0.95,1695874800,OK,8.8.8.8,1,192.168.1.1,0.00,5,1.20,1.50,1.00,2.30,0.40注意Start_Time是Unix 时间戳秒不是 ISO 时间版本列格式为MTR.x.yz首行为表头加-z还会多一列Asn。mtr-l-c58.8.8.8h 0 192.168.1.1 p 0 1200 h 1 10.0.0.1 p 1 5300h行为每跳主机信息索引从 0 开始p行为每次探测延迟微秒整数如1200 1.2ms解析出主机名时还会输出d 索引 主机名行。mtr-p8.8.8.81 192.168.1.1 0 5 5 1 1 2 2 10.0.0.1 0 5 5 4 5 6每行字段为跳号 主机 丢包 已收 已发 Best Avg Wrst毫秒取整无时间戳、无 Last/StDev。增量输出只有某跳数据变化时才重打该行供 mtr-gtk 等前端消费跳数减少时输出-N删除多余行。六、交互模式TUI 控制-t / --displaymode参数说明-t显式使用 curses 界面新版默认即此--displaymode MODE启动时的初始视图mtr-t8.8.8.8mtr--displaymode28.8.8.8# 0统计(默认) 1无延迟条纹图 2带延迟条纹图交互界面快捷键p暂停再按空格恢复、d切换显示模式、r重置统计、q退出。七、名称解析与字段显示看什么-n / -b / -e / -o / -y / -z参数说明-n不解析主机名只显示 IP快且不受 DNS 干扰-b主机名 IP 同时显示-e显示 ICMP 扩展MPLS 标签等-o FIELDS自定义输出字段-y 0/1/2/3/4IP 归属信息0AS 号、1IP 前缀网段、2国家代码、3RIR、4分配日期-z显示 AS 号等价-y 0mtr-r-n-c58.8.8.8# 只看 IPmtr-r-b-c58.8.8.8# 都看mtr-r-z-c58.8.8.8# 看 AS 号mtr-r-y1-c58.8.8.8# 看 IP 前缀网段mtr-r-e-c5114.114.114.114# 看 MPLSmtr-r-oLS NABWV-c58.8.8.8# 自定义列mtr-r-z-c58.8.8.8HOST: ecs-1706 Loss% Snt Last Avg Best Wrst StDev 1. AS??? 192.168.1.1 0.0% 5 1.2 1.5 1.0 2.3 0.4 4. AS15169 8.8.8.8 0.0% 5 15.2 15.0 14.5 16.0 0.5私有/保留地址查不到归属显示AS???手册示例即如此。bash mtr -r -y 1 -c 5 8.8.8.8HOST: ecs-1706 Loss% Snt Last Avg Best Wrst StDev 1. 192.168.1.0/24 192.168.1.1 0.0% 5 1.2 1.5 1.0 2.3 0.4 3. 203.0.113.0/24 203.0.113.1 0.0% 5 12.5 12.8 12.0 14.0 0.6mtr-r-e-c5114.114.114.114HOST: ecs-1706 Loss% Snt Last Avg Best Wrst StDev 1. 192.168.1.1 0.0% 5 1.2 1.5 1.0 2.3 0.4 2. 10.0.0.1 0.0% 5 5.3 5.1 4.8 6.0 0.3 [MPLS: Lbl 1024 TC 4 S 1 TTL 64] 3. 203.0.113.1 0.0% 5 12.5 12.8 12.0 14.0 0.6mtr-r-oLS NABWV-c58.8.8.8HOST: ecs-1706 Loss% Snt Last Avg Best Wrst StDev 1. 192.168.1.1 0.0% 5 1.2 1.5 1.0 2.3 0.4-o字段字母L丢包率S已发送R已接收D已丢弃N最新A平均B最小W最大V标准差完整列表见man mtr。-z即-y 0排查跨境/跨运营商问题最实用一眼看出每跳属于哪个运营商AS4134电信、AS4837联通、AS15169Google 等。-y系列需要相应 IP 归属库支持1前缀、2国家、3RIR、4分配日期。参考https://www.cnblogs.com/alongdidi/p/mtr.htmlhttps://help.aliyun.com/zh/ecs/use-cases/use-mtr-tool-for-network-analysis