Linux 网络诊断工具详解:ping、traceroute、dig、nslookup 实战


网站打不开、延迟突然飙高、域名解析不对——排查网络问题,靠的是几个基础命令的组合:ping 测连通性、traceroute 看路由、dig/nslookup 查 DNS。这套组合拳是运维排障的起点,这篇文章把每个工具的用法和判断思路讲清楚。

一、ping:连通性与延迟

ping baidu.com                 # 持续 ping,Ctrl+C 停止
ping -c 4 8.8.8.8              # 只发 4 个包
ping -c 100 -i 0.5 baidu.com   # 100 个包,每 0.5 秒一次
ping -s 1400 baidu.com         # 大包测试(默认 56 字节)

看结果:

64 bytes from 39.156.66.10: icmp_seq=1 ttl=49 time=12.3 ms
  • time 往返延迟,越小越好;国内访问香港/日本一般 30-80ms;
  • ttl 每次路由转发减 1,可粗略判断跳数;
  • 丢包判断:packet loss 超过 1% 就要注意,丢包说明线路不稳或服务器被限速;
  • 100% 丢包 ≠ 一定不通:部分服务器(如某些云主机、CDN)禁 ping,用 telnet IP 端口 验证。

二、traceroute:看路由怎么走

延迟高、时快时慢,用 traceroute 看是卡在哪个节点:

traceroute baidu.com                    # 默认 UDP
traceroute -I baidu.com                 # 用 ICMP(更通用)
traceroute -T -p 443 www.google.com     # 用 TCP 443(穿透防火墙)
mtr -n -c 20 baidu.com                  # mtr 是增强版,持续统计丢包

输出解读:每一行是一个跳点(路由器),时间 * * * 表示该节点不回包(正常,很多路由器不回 ICMP)。重点看最后几跳:如果延迟在你和骨干网之间暴涨,是本地线路问题;如果最后几跳才高,可能是机房或上游线路问题。

mtr 建议:排障优先用 mtr,它会持续采样并报告每一跳的丢包率,比单次 traceroute 靠谱。

三、dig:DNS 查询的瑞士军刀

dig baidu.com                    # 查询 A 记录
dig baidu.com A                  # 显式指定类型
dig www.baidu.com CNAME          # 查 CNAME
dig baidu.com MX                 # 查邮件服务器
dig baidu.com NS                 # 查域名服务器
dig @8.8.8.8 baidu.com           # 指定 DNS 服务器查询
dig +short baidu.com             # 精简输出,只要结果

判断解析问题:新解析的域名不生效、换了服务器 IP 不更新,用 dig @你使用的DNS 域名 看返回的 IP 是不是最新。还不行就 dig @8.8.8.8 对比,确认是解析没生效还是本地缓存。

查看解析生效状态:

dig +short example.com           # 当前 DNS 返回的 IP
dig example.com +noall +answer   # 只看应答区

四、nslookup:更简单的 DNS 查询

nslookup baidu.com                    # 查询 A 记录
nslookup -type=mx baidu.com           # 查 MX
nslookup baidu.com 8.8.8.8            # 指定 DNS 服务器

输出中的 Address 就是解析结果。nslookup 适合快速查询,dig 适合详细排查。

五、端口连通性:telnet / nc

ping 通了不代表网站能访问,还要测端口:

telnet 1.2.3.4 22                  # 连得上显示 Connected
nc -zv 1.2.3.4 22                  # -z 只测不连,-v 显示结果
nc -zv 1.2.3.4 22 80 443           # 一次测多个端口

用途:服务器 ping 通但网站打不开,多半是端口没放行(安全组/防火墙),nc -zv IP 端口 一测便知。

六、完整排障流程

场景:网站打不开

  1. ping 服务器IP → 不通先查本地网络/服务器是否宕机,通了继续;
  2. mtr 服务器IP → 看哪一跳丢包高,定位是线路还是机房问题;
  3. dig 域名 → 确认域名解析到了正确 IP;
  4. nc -zv IP 80 → 端口通不通,不通查安全组/防火墙;
  5. curl -v http://域名 → 看 HTTP 层面报什么错。

场景:域名解析慢/不对

  1. dig @8.8.8.8 域名 → 权威 DNS 返回对不对;
  2. dig +short 域名 → 本地 DNS 返回对不对;
  3. 对比两者:不一致说明本地 DNS 缓存旧了,等 TTL 或换 DNS;
  4. 用 ping 域名 看实际连的 IP。

七、常见坑

  1. ping 不通就慌:先确认对方禁不禁 ping(云厂商、CDN 普遍禁),换 nc -zv IP 端口 验证;
  2. traceroute 中间 * * *:很多路由器不回 ICMP 包,不代表断,重点看最后一跳和整体延迟;
  3. dig 结果和网站不一致:本地 DNS 缓存(systemd-resolved 或路由器),resolvectl flush-caches 清一下;
  4. 测速和 ping 不对应:ping 延迟低但下载慢,通常是带宽/线路拥塞,用 mtr 看丢包,用 iperf3 测真实带宽;
  5. IPv6 干扰:域名有 AAAA 记录但网络不支持,ping 超时,加 -4 强制 IPv4。

总结:网络排障四板斧——ping 测通不通、mtr 看路由丢包、dig 查解析对不对、nc 测端口放没放行。记忆口诀:先 ping 后 mtr,dig 查解析,nc 测端口,curl 看应用。按这个顺序走,绝大多数网络问题都能定位到具体环节。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

Linux 软链接详解:ln -s 符号链接与硬链接的实战用法

Linux 环境变量详解:PATH、export、.bashrc 与常见坑

评 论
更换验证码