首页/网络/网络排障速查/dig +dnssec:验证 DNSSEC 与 RRSIG
DNS 与解析排查46 条

dig +dnssec:验证 DNSSEC 与 RRSIG

DNSSEC 排查看两点:响应是否带 RRSIG、验证通过的响应是否有 ad 标志;SERVFAIL 且域名无问题的常见根因就是 DNSSEC 验证失败。

网络排障速查网络更新于 2026-10-13

DNSSEC 验证怎么看

DNSSEC 用数字签名保证 DNS 应答没有被篡改:权威服务器为每条记录签发 RRSIG,父区用 DS 记录指认子区的密钥,逐级构成从根到域名的信任链。验证工作由递归解析器承担,客户端只看两件事:应答里有没有 RRSIG,以及解析器验证通过后是否置了 ad 标志。验证一旦失败,解析器不会返回数据而是回 SERVFAIL,这也是「域名本身没问题却查不到」的常见根因。

基本信息

适用工具dig(bind-utils/dnsutils),Windows 用 Resolve-DnsName
关键标志ad 表示解析器已完成验证,cd 表示客户端请求跳过验证
相关记录RRSIG 签名、DNSKEY 公钥、DS 父区摘要
查询选项+dnssec 要求返回签名记录,+multi 把 RRSIG 分行展开
责任方验证失败多为权威侧配置问题:密钥轮转、DS 与 DNSKEY 不匹配

典型使用场景

  • 域名突然 SERVFAIL 而权威服务器本身正常:确认是否 DNSSEC 验证失败
  • 上线签名后的验收:确认应答携带 RRSIG 且解析器置了 ad
  • 密钥轮转前后核对:比对 DS 与 DNSKEY 的摘要是否一致
  • 区分是权威故障还是验证链问题:用 +cd 做对照查询一次定位
  • 评估解析器策略:确认本地递归是否启用了 DNSSEC 验证

验证查询

验证查询
dig +dnssec example.com          # ANSWER 出现 RRSIG,观察 flags 中的 ad
dig +dnssec +multi example.com   # RRSIG 分多行展开,便于阅读
dig +cd +dnssec broken.example   # +cd 关闭验证,用于对比验证失败场景
dig +dnssec example.com +noall +answer      # 只看答案与签名,脚本友好
dig @1.1.1.1 +dnssec example.com            # 换公共解析器复核,排除本地缓存干扰

现象判读

现象含义处置
有 RRSIG 且 ad 被置位验证链完整解析正常,继续查其他环节
有 RRSIG 无 ad解析器未启用验证或策略不校验确认本地解析器配置,非域名故障
无 RRSIG该区未签名排查 DNSSEC 相关问题时直接排除此区
+cd 正常 +dnssec 失败验证链问题,多为 DS 与密钥不匹配核对 DS 摘要与 DNSKEY,检查轮转
普遍 SERVFAIL 且签名过期签名有效期与时钟偏差校准设备时间,联系权威方重签
排查 DNSSEC 最有效的是对比法:同一域名加 +cd 查询正常、不加就 SERVFAIL,基本可以认定是验证链问题而不是权威服务器不可用。
签名记录带生效与失效时间,设备时钟偏差过大时会出现「刚签发就报过期」或「已过期仍接受」的怪象,排查前先核对两台设备的 NTP 偏差。

易错点

  • 把 ad 不置位当故障:解析器未启用验证或上游未签名时本来就不会置位
  • 调试时忘记 +cd 对照手段,白花时间怀疑权威服务器
  • 只在一台解析器上验证:不同解析器的缓存与验证策略不同,需多台对照
  • 密钥轮转后忘记同步 DS:子区新密钥与父区旧摘要并存,表现为大范围 SERVFAIL

数据来源与参考

  • RFC 4033-4035:DNSSEC 规范族
  • BIND 9 dig 手册(+dnssec/+cd)

相关工具

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