+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 指向不存在的主机名即断链点 |
| 最终答案 | 权威给出的记录与 TTL | SERVFAIL 多为 DNSSEC 验证失败 |
trace 卡住的层级就是故障层级:某级完全不响应通常是该级权威宕机或地址配错;某级返回 SERVFAIL 则要怀疑 DNSSEC 签名过期或密钥轮换出错。
+trace 每次都会重走完整链条,对根与 TLD 是真实查询流量;写脚本批量 trace 会让本机请求量陡增,巡检场景请改用普通查询。