← 返回首页

DNS 故障排查手册

digtcpdumpDNS Flag DayQNAME Minimisation

常见 DNS 问题排查思路,涵盖递归超时、NXDOMAIN 误报、DNSSEC 验证失败、缓存污染等场景。

必备工具

场景一:递归解析超时

现象

部分域名解析耗时过长或直接返回 SERVFAIL。

排查步骤

  1. 使用 dig +trace 跟踪完整解析链路,定位卡在哪个环节
  2. 使用 tcpdump 抓包检查 UDP 包是否被丢弃
  3. 检查 EDNS Buffer Size 配置,尝试切换到 TCP 模式
# 跟踪解析链路
dig +trace example.com

# 抓取 DNS 流量
tcpdump -i eth0 -nn port 53 -w dns.pcap

# 强制使用 TCP
dig +tcp example.com

场景二:NXDOMAIN 误报

现象

域名明明存在,但解析返回 NXDOMAIN。

排查步骤

  1. 确认权威服务器上的 Zone 文件是否正确
  2. 检查是否有错误的 Forward 或 Stub Zone 配置覆盖了正常的递归解析
  3. 查询不同公共 DNS(Google 8.8.8.8 / Cloudflare 1.1.1.1)对比结果
  4. 检查 QNAME Minimisation 是否导致了误报
# 对比不同 DNS 结果
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com
dig @your-resolver example.com

场景三:DNSSEC 验证失败

现象

启用 DNSSEC 后,部分域名返回 SERVFAIL。

排查步骤

  1. 使用 dig +dnssec 检查签名链是否完整
  2. 确认 DS 记录是否已在父区正确注册
  3. 检查签名是否在有效期内(RRSIG 的 inception/expiration)
  4. 验证 DNS 服务器时间是否准确(NTP 同步)
# DNSSEC 验证
dig +dnssec +multi example.com A

# 查看签名有效期
dig +dnssec +multi example.com SOA

场景四:缓存污染

现象

部分用户被解析到错误的 IP 地址,问题间歇性出现。

排查步骤

  1. 在递归服务器上执行 rndc dumpdb 导出缓存
  2. 检查目标域名的缓存记录是否正确
  3. 排查是否有错误的 Forward 配置指向不可信上游
  4. 清空缓存后观察是否恢复正常
# 导出缓存
rndc dumpdb -all

# 清空缓存
rndc flush

# 清空特定域名缓存
rndc flushname example.com

场景五:DNS Flag Day 合规

如果你的 DNS 服务不兼容 DNS Flag Day 要求,可能在全球范围内出现解析失败。关键检查点:

快速检查:访问 dnsflagday.net 输入你的域名,即可获得合规性报告。访问 dnsviz.net 可查看完整的 DNSSEC 验证链路。