用 dig 排查 DNS 故障的核心是绕过缓存、直连权威服务器、逐层验证响应;需先确认网络连通性,再通过 dig @ns-server 查询权威记录,关注 status、SERVER 和 ANSWER SECTION 字段,并依场景选用 MX 查询、多 DNS 对比、+trace 或 +noall +answer 等方法。

用 dig 排查 Linux 域名解析故障,核心是绕过缓存、直连目标、看清每一步响应。它不依赖系统配置,也不受本地 resolver 干扰,结果更真实可靠。
确认基础连通性,先排除网络层问题
DNS 解析失败,不等于网络不通。先验证底层是否可达:
- 执行 ping -c 4 8.8.8.8 或 ping -c 4 114.114.114.114,确认能通公网 DNS IP
- 如果 ping 不通,说明是网关、路由、防火墙或物理链路问题,不是 DNS 配置问题
- 若 IP 可通但 ping www.baidu.com 超时或无响应,才进入 DNS 故障排查流程
用 dig 直查权威服务器,避开缓存干扰
默认 dig 走的是系统配置的递归 DNS(如 /etc/resolv.conf 里的地址),结果可能被缓存“污染”。要验最新配置,必须跳过这层:
- 先查权威 NS: dig example.com NS → 得到 ns1.example.com 等服务器
- 再直连其中一个权威服务器查记录: dig @ns1.example.com www.example.com A
- 这样看到的就是权威端当前真实配置,不受 TTL、ISP 缓存、本地 resolver 影响
看懂 dig 输出的关键字段和状态码
dig 返回内容多,重点盯三个地方:
- status: 显示查询结果性质:NOERROR 表示成功但答案为空(记录不存在);NXDOMAIN 表示域名根本未注册或已过期;SERVFAIL 表示上游服务异常(如权威服务器宕机、转发链断裂)
- SERVER: 显示实际发请求的 DNS 地址,确认你没被重定向到错误服务器
- ANSWER SECTION: 有内容才代表解析成功;空但 status 是 NOERROR,说明该记录确实没配
针对性验证不同场景,快速定位常见问题
不同故障表现,对应不同 dig 用法:
- 查不到 MX 记录?加类型参数:dig example.com MX(不加默认只查 A/AAAA)
- 怀疑缓存未更新?对比多个 DNS:dig @8.8.8.8 example.com A 和 dig @114.114.114.114 example.com A,结果不一致就说明某处缓存滞后
- 想看完整解析路径?用跟踪模式:dig +trace example.com A,从根服务器开始逐级显示每步响应
- 脚本中提取 IP?推荐组合:dig example.com +noall +answer,比 +short 更稳定(+short 会展开 CNAME 链,顺序不可控)


















