首页/网络/协议速查/dig +trace 演示迭代解析
DNS 与域名解析60 条

dig +trace 演示迭代解析

+trace 模拟递归器的迭代过程:自己从根开始逐级追问,直到权威给出最终答案,是理解委派与定位「哪一级出错」的较佳手段。

协议速查网络更新于 2026-10-13

+trace 在做什么

dig +trace 让 dig 自己扮演递归器:从根服务器开始,按「根 → 顶级域 → 委派 → 权威」的顺序逐级追问,并把每一级的 NS 与最终答案打印出来。它不发传统的递归查询(RD 位关闭),因此能直接暴露委派链在哪一级断掉,是定位「解析只对部分域名失败」这类问题的首选手段。

基本信息

适用平台Linux / macOS / Windows(BIND 版 dig 或 Windows 版 dig)
查询方式本机直连各级权威,不经过 resolv.conf 里的递归服务器
常用选项+trace +nodnssec、+trace +dnssec、+tcp、+short
依赖本机需能直接访问 53/UDP 与 53/TCP 出站,企业代理下常全超时

典型使用场景

  • 排查委派链断裂:某级 NS 指错或 glue 记录缺失时,trace 会停在该级不再前进
  • 验证 DNSSEC 断链:加 +dnssec 看哪一级的 AD 标志或 RRSIG 缺失
  • 核对权威数据与递归缓存的不一致:trace 看到的是源数据,递归看到的是缓存
  • 交接域名时确认 NS 委派是否已经生效,比反复刷公共递归更直观

输出骨架

输出骨架
$ dig +trace www.example.com
# 第一段:根服务器返回 com 的 NS
.                        NS    a.root-servers.net.
# 第二段:TLD 返回 example.com 的 NS(可能带 glue A/AAAA)
example.com.             NS    ns1.example.com.
# 第三段:权威返回最终答案
www.example.com.         A     203.0.113.10

增强用法

增强用法
dig +trace +dnssec example.com     # 一并显示 RRSIG,检查签名链
 dig +trace +tcp example.com       # 改走 TCP 53,排除 UDP 被中间设备打断
dig +trace +nodnssec example.com   # 只看委派,输出更短

输出逐段读法

段落含义异常表现
根段根服务器给出的 TLD 委派完全收不到响应说明本机出网 53 被封
TLD 段顶级域给出的二级委派与 glue缺 glue 时会多出几轮 A 查询
委派段目标域的权威 NS 列表NS 指向不存在的主机名即断链点
最终答案权威给出的记录与 TTLSERVFAIL 多为 DNSSEC 验证失败
trace 卡住的层级就是故障层级:某级完全不响应通常是该级权威宕机或地址配错;某级返回 SERVFAIL 则要怀疑 DNSSEC 签名过期或密钥轮换出错。
+trace 每次都会重走完整链条,对根与 TLD 是真实查询流量;写脚本批量 trace 会让本机请求量陡增,巡检场景请改用普通查询。

易错点

  • 在企业代理或受限网络里跑 +trace 会全部超时:它绕过 resolv.conf 直连 53 端口,被防火墙拦掉时看起来像「根服务器挂了」
  • 把 +trace 的结果当成用户实际解析结果:真实用户走的是递归缓存,trace 看到的是源数据,两者不一致恰恰是问题所在
  • 忘了 DNSSEC 会让 trace 停在 CDS/CDNSKEY 环节:检查委派前先加 +nodnssec 排除干扰
  • 输出里 hostname 与 IP 混排时容易看错层级,建议加 +norecurse 与固定列宽或直接用 +short 核对最终答案

数据来源与参考

  • BIND 9 dig 文档
  • RFC 1034 §5.3.3

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌