常见网络工具箱:speedtest、iperf、mtr、besttrace 速查

一份面向服务器运维的网络排障速查:测带宽、看丢包、查路由、诊断 DNS 与连接,各带一句话示例。

服务器网络出问题时,"慢"往往只是表象——到底是带宽不够、链路丢包、路由绕远,还是 DNS 解析卡住?下面这套命令行工具各管一段,组合起来就能快速定位。除特别说明外,示例均以 Ubuntu/Debian 为准。

先装好工具

多数工具在官方仓库里,一条命令搞定:

sudo apt update
sudo apt install -y speedtest-cli iperf3 mtr-tiny traceroute dnsutils curl iproute2

nexttrace 与 besttrace 不在 apt 里,需从各自项目页下载二进制;ss 属于 iproute2,系统一般自带。

速查表

| 工具 | 用途 | 一句话示例 | |---|---|---| | speedtest-cli | 测到公网测速点的上下行带宽 | speedtest-cli --simple | | iperf3 | 测两台自有主机间的点对点吞吐 | iperf3 -c 服务器IP | | mtr | 持续采样、逐跳看延迟与丢包 | mtr -rwzbc 100 1.1.1.1 | | nexttrace / besttrace | 逐跳路由 + IP 地理归属 | nexttrace 1.1.1.1 | | ping | 测通断与往返延迟 | ping -c 4 1.1.1.1 | | traceroute | 看数据包走了哪几跳 | traceroute 1.1.1.1 | | curl | 测 HTTP 可达性与分段耗时 | 见下 | | dig / nslookup | 查 DNS 解析结果 | dig example.com +short | | ss | 看本机监听端口与连接 | ss -tulnp |

分场景说明

带宽:speedtest 与 iperf3

speedtest-cli 测的是你的服务器到互联网某个公共测速节点的带宽,反映"公网出口"体感。想测两台自己主机之间的真实吞吐(比如内网、跨机房),就用 iperf3:一端 iperf3 -s 当服务端,另一端 iperf3 -c 服务端IP,加 -R 可反向测下行。

丢包与逐跳:mtr、ping、traceroute

ping 判断通不通、延迟多少;traceroute 展开中间每一跳。而 mtr 把两者合一并持续采样,是抓间歇性丢包的利器——-r 报告模式、-c 100 采 100 次、-w 宽格式、-z 显示 ASN。

路由与地理:nexttrace / besttrace

想知道流量"绕到哪个国家、经过哪家运营商",用 nexttrace 1.1.1.1 或 besttrace 1.1.1.1,它们在逐跳基础上标注 IP 归属地与 AS,排查跨境绕路特别直观。

HTTP 与 DNS:curl、dig

排查网站慢时,curl 能拆出各阶段耗时:

curl -o /dev/null -s -w 'DNS:%{time_namelookup} 连接:%{time_connect} 首字节:%{time_starttransfer} 总计:%{time_total}\n' https://example.com

若"域名打不开",先用 dig example.com A +short 确认解析是否正常;nslookup 是更传统的等价工具。

本机连接:ss

ss -tulnp 一眼看清哪些端口在监听、由哪个进程占用;ss -tn state established 则列出当前活跃连接。

小结

记住这条主线:speedtest/iperf3 看带宽,ping/mtr 看丢包,traceroute/nexttrace 看路由,dig 查 DNS,curl 测 HTTP,ss 看本机端口。遇到"网络慢",从上到下逐层排查,基本都能把问题锁定到某一段链路。