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 路由问题
• 运营商出口问题
• 云安全组 / 防火墙问题
• 目标机器本身没响应