Mac 上用 MTR 做链路测试很适合排查“ping 不通 / 偶发丢包 / 某一跳延迟高”的问题

MTR = ping + traceroute 的结合版,可以连续看每一跳的丢包和延迟。Homebrew 里的 mtr 在 macOS 上可直接安装,但通常需要用 sudo 运行。 

1)先安装 MTR

如果你 Mac 已安装 Homebrew:

bash 复制代码
brew install mtr

安装后先确认一下:

bash 复制代码
mtr --version

Homebrew 对 mtr 的说明里提到,通常需要 root 权限运行,所以后面命令一般写成 sudo mtr ...。 

2)最常用的测试命令

假设你的远程机器 IP 是 1.2.3.4。

方式一:交互式查看

bash 复制代码
sudo mtr 1.2.3.4

这会实时刷新,适合现场观察。

你会看到每一跳的主机、丢包率、最近/平均/最好/最差延迟。

退出按 q。

方式二:生成报告

这个更适合发给运维或云厂商:

bash 复制代码
sudo mtr -rwzc 100 1.2.3.4

参数含义:

• -r:报告模式,跑完后一次性输出

• -w:宽格式,主机名不容易被截断

• -z:显示 ASN/更完整信息时常用

• -c 100:发 100 次探测包

mtr 的手册里说明,-r 是报告模式,-w 是宽报告模式,-c 用来指定探测次数。 

3)如果 ping 不通,优先这样测

很多服务器会禁 ICMP,所以 ping 不通不一定代表机器真的不通。

这时建议分别测三种:

ICMP 测试

bash 复制代码
sudo mtr -rwzc 50 1.2.3.4

TCP 测试

假设你要测 SSH 22 端口:

bash 复制代码
sudo mtr --tcp --port 22 -rwzc 50 1.2.3.4

如果是 Web 服务:

sudo mtr --tcp --port 80 -rwzc 50 1.2.3.4

或者 HTTPS:

sudo mtr --tcp --port 443 -rwzc 50 1.2.3.4

UDP 测试

sudo mtr --udp --port 53 -rwzc 50 1.2.3.4

实际排障里,最有价值的是:

• 机器 ping 不通,但 tcp 22 能通:说明服务器大概率活着,只是禁了 ICMP

• 所有方式都卡在中间某几跳:可能是运营商链路、跨网出口或安全策略问题

• 只有到目标最后一跳超高丢包:重点看目标机器安全组、防火墙、服务监听

4)怎么看结果

重点看这几列:

• Loss%:丢包率

• Avg:平均延迟

• Best/Wrst:最好/最差延迟

• Last:最近一次延迟

判断方法:

情况 A:中间一跳丢包高,但后面都正常

一般不代表真正有问题。

很多中间路由器会"限速回复 ICMP",看起来像丢包,但它只是懒得回你探测包。

情况 B:从某一跳开始,后面所有跳都持续丢包

这通常才是真问题。

说明问题大概率出现在那一跳或它后面的链路上。

情况 C:前面都正常,最后一跳 100% 丢包

常见原因:

• 目标主机禁 ping

• 云服务器安全组拦截 ICMP

• 主机防火墙没放行

• 目标服务端口不通

情况 D:延迟在某一跳突然升高,后续一直高

通常说明从那一跳开始走了绕路,或者链路拥塞。

5)建议你直接执行的命令

把 x.x.x.x 换成你的远程机器 IP:

bash 复制代码
sudo mtr -rwzc 100 x.x.x.x
sudo mtr --tcp --port 22 -rwzc 100 x.x.x.x
sudo mtr --tcp --port 443 -rwzc 100 x.x.x.x

如果你是连一台 Linux 服务器,通常最关键的是:

bash 复制代码
sudo mtr --tcp --port 22 -rwzc 100 x.x.x.x

因为这更接近你真实访问 SSH 的路径。

6)如果 Mac 没装 Homebrew

先看有没有:

bash 复制代码
brew --version

没有的话先安装 Homebrew,再执行:

bash 复制代码
brew install mtr

7)补充:如果你只想快速确认路由路径

Mac 自带:

bash 复制代码
traceroute x.x.x.x

但它只能看路径,不像 MTR 那样能连续看丢包和延迟统计,所以排障还是 MTR 更好。

8)推荐你把结果发出来时这样整理

执行这条:

bash 复制代码
sudo mtr --tcp --port 22 -rwzc 100 x.x.x.x

把完整输出贴出来。

我可以直接帮你判断是:

• 你本地网络问题

• VPN 路由问题

• 运营商出口问题

• 云安全组 / 防火墙问题

• 目标机器本身没响应

相关推荐
CyL_Cly17 小时前
localsend安卓手机下载 支持win/mac/ubuntu
android·macos·智能手机
A懿轩A17 小时前
Thaw:让 macOS 菜单栏重获新生的免费全能管理工具,适配 macOS Tache 26.4.1 系统,Ice平替活跃版,解决 Ice 常见报错问题
macos
无效的名字21 小时前
mac下安装openclaw
macos
00后程序员张21 小时前
完整指南 iOS App上架到App Store的步骤详解
macos·ios·小程序·uni-app·objective-c·cocoa·iphone
开开心心loky1 天前
[OC 底层] (二)类与对象底层原理
macos·ios·objective-c·cocoa
谢斯2 天前
[esp-idf]macos 环境安装 v6.0
macos
idolao2 天前
ANSYS 2024安装教程 Windows版:License Manager配置+环境变量+Fluent汉化指南
macos
Digitally2 天前
4 种方法将 Mac 联系人同步到 iPhone
macos·cocoa·iphone
黄毛火烧雪下2 天前
在 macOS 里配置环境变量
macos
万粉变现经纪人2 天前
如何解决 pip install bitsandbytes 报错 仅支持 Linux+glibc(macOS/Windows 失败)问题
linux·运维·windows·python·scrapy·macos·pip