dig +trace 核心是模拟DNS解析器从根服务器开始逐级迭代查询的全过程,依次访问根、顶级域、权威服务器并显示每跳响应,精准定位解析故障环节。

在 Linux 中用 dig 追溯完整的 DNS 递归过程,核心是使用 +trace 选项。它会模拟 DNS 解析器从根服务器开始逐级查询的全过程,显示每一跳的响应,帮你清晰看到域名是如何被一步步解析出来的。
使用 dig +trace 查看完整递归路径
dig 默认只向本地配置的 DNS 服务器发起一次查询(通常是递归查询),返回最终结果;而 +trace 强制它以迭代方式手动走完整个解析链:
- 先向根服务器(.)查询顶级域(如
.com)的权威服务器 - 再向
.com的权威服务器查二级域(如example.com)的权威服务器 - 最后向该域名的权威服务器查询目标记录(如 A 记录)
命令示例:
dig example.com +trace理解 +trace 输出的层级结构
输出按查询顺序分块,每块以“;; Received X bytes from …”开头,标明当前查询发给了哪台服务器、收到多少字节响应。关键点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 第一段:查询根服务器(如
a.root-servers.net),响应中包含com.的 NS 记录 - 第二段:向其中一个
.comNS(如a.gtld-servers.net)查询,响应中含example.com的 NS - 后续段:继续向下查,直到获得最终的 A 或 CNAME 记录
- 若某级返回
REFUSED或超时,说明该服务器拒绝响应或网络不通
配合其他选项提升排查效果
+trace 本身不依赖本地 resolv.conf,但可加参数让过程更清晰:
-
+noall +answer:只显示最终答案(适合快速确认结果是否正确) -
+additional:显示响应中的附加记录(如 NS 的 A 记录,避免额外解析) -
@8.8.8.8:指定某 DNS 服务器作为起始查询点(如用 Google DNS 启动 trace) -
+tries=1 +timeout=2:减少重试和等待时间,加快 trace 流程
常用组合:
dig google.com +trace +noall +answer注意 +trace 和真实递归的区别
+trace 是客户端模拟迭代查询,并非真正触发远程 DNS 服务器的递归行为。它不经过你本机配置的递归 DNS(如 systemd-resolved 或 dnsmasq),所以结果反映的是“标准 DNS 层级路径”,而非你实际访问时走的路线。如需验证本地递归行为,应直接查本地 DNS:
再对比 +trace 结果,就能判断是权威配置问题,还是本地解析环境异常。

















