常用的网络诊断命令整理
2026-10-11
按“从哪一层开始怀疑”来排,比背命令有用。
链路通不通
ping -c 4 host
mtr -n -r -c 20 host
mtr 比 traceroute 好用,能看出丢包发生在哪一跳。ICMP 被墙的情况下 ping 不通不代表 TCP 不通,别急着下结论。
端口开不开
nc -vz host 443
timeout 5 bash -c 'echo > /dev/tcp/host/443'
没有 nc 的机器上用后者,纯 bash 就能测。云服务器还要记得查安全组,本地能通、外网不通,九成是安全组或防火墙。
DNS 对不对
dig +short A example.com @1.1.1.1
dig +trace example.com
换不同的递归服务器对比结果,能快速判断是缓存没刷还是记录本身错。+trace 从根一路问下来,适合确认权威记录到底是什么。
TLS 正不正常
openssl s_client -connect host:443 -servername example.com </dev/null
看返回的证书链、有效期和 ALPN。忘了带 -servername 会拿到默认站点的证书,经常误判成证书不匹配。
抓包
tcpdump -i any -nn 'tcp port 443' -c 50
前面几步都正常还找不到原因,就直接抓包。看有没有 SYN 没回、有没有 RST,比猜快得多。