诊断DNS解析问题应先看dig响应的Status(NOERROR/SERVFAIL/NXDOMAIN)、ANSWER SECTION是否含合法记录、SERVER是否为预期地址;再用@指定DNS直连验证,查MX/AAAA/NS等多类型记录,并+trace跟踪链路,+short或+noall+answer简化输出。

用 dig 诊断 DNS 解析问题,核心是看响应是否合理、路径是否通畅、配置是否生效。它不依赖系统缓存,输出信息全,适合准确定位环节故障。
看关键字段判断解析是否成功
执行 dig example.com 后,重点盯三处:
- Status 字段:NOERROR 表示查询过程无错;NXDOMAIN 表示域名根本不存在;SERVFAIL 表示上游 DNS 服务异常(不是你本地的问题)
- ANSWER SECTION:有合法 A 或 AAAA 记录才说明解析成功;空但 Status 是 NOERROR,说明该记录确实没配
- SERVER 行:显示实际响应的 DNS 地址,确认是不是你预期的服务器(比如写了 @127.0.0.1 却连到了 192.168.1.1,说明配置没生效)
指定 DNS 服务器排除干扰
绕过 /etc/resolv.conf 和本地 resolver,直连目标 DNS 验证:
- 查公共 DNS 是否正常:dig @8.8.8.8 example.com
- 查本地 DNS 服务(如 systemd-resolved):dig @127.0.0.53 example.com
- 查内网 DNS:dig @10.1.1.100 example.com
- 注意写法:dig example.com @8.8.8.8 正确;dig example.com A @8.8.8.8 顺序错,@ 后面的内容会被忽略
查不同记录类型确认配置完整性
默认只查 A 记录,很多问题出在其他类型上:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 查邮件服务器:dig example.com MX
- 查权威 NS:dig example.com NS
- 查 IPv6 地址:dig example.com AAAA
- 查别名:dig example.com CNAME
- 反向解析 IP:dig -x 192.0.2.1(本质是查 1.2.0.192.in-addr.arpa PTR)
跟踪解析链路定位卡点
加 +trace 从根服务器开始逐级查,看清在哪一级断开或返回异常:
- dig example.com +trace 显示每跳的响应来源和返回的 NS 列表
- 若某级返回 SERVFAIL 或超时,说明该 NS 不可用或网络不通
- 若卡在根或顶级域(如 .com),可能是本地防火墙拦截 UDP 53,或运营商劫持
- 配合 nc -u 127.0.0.1 53 或 telnet 127.0.0.1 53 确认端口可达性
简化输出方便脚本或快速判断
默认输出信息多,干扰人工阅读和自动化处理:
- 只取最终 IP:dig example.com +short(注意:CNAME 链会全部展开,最后才是 A)
- 只显示 ANSWER SECTION:dig example.com +noall +answer(比 +short 更稳,不依赖解析顺序)
- 禁用递归查真实权威结果:dig @ns1.example.com www.example.com A(先 dig example.com NS 拿到权威服务器)
真正影响判断的,往往不是“有没有结果”,而是 status 状态、SERVER 地址、以及你查的是不是对的记录类型。多换几个 DNS 对比,再结合 +trace 看路径,基本能锁定是配置、网络、还是上游服务的问题。

















