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 偏差。