DNSSEC 验证失败定位是什么
DNSSEC 断链有三种典型形态:父域 DS 缺失或与子域 DNSKEY 不匹配、签名过期、算法不被验证器支持。表现为验证型解析器返回 SERVFAIL,而关闭验证后查询正常。最实用的手法是『+cd 对比法』:先看关闭验证是否成功,从而把问题在『链与签名』与『网络与服务器』之间快速分流,再逐段(根→顶级域→目标域)核对 DS 与 DNSKEY。
基本信息
| 适用平台 | BIND 9(dig 支持 +dnssec、+cd、+multi) |
|---|---|
| 关键概念 | DS(父域中的子域密钥指纹)、DNSKEY(公钥)、RRSIG(签名) |
| 分流方法 | +cd 关闭验证对比:成功说明是链或签名问题 |
| 常见原因 | DS 与 DNSKEY 不匹配、签名过期未续签、算法过新或过旧 |
典型使用场景
- 突然大面积 SERVFAIL:先怀疑签名过期这一类『时间相关』故障
- 更换 DNS 服务商后验证失败:确认 DS 记录是否已在新提供商处重新提交
- 更换签名密钥后断链:核对 DS 与 DNSKEY 的指纹是否对应
- 自查签名有效期:把 RRSIG 的起止时间纳入例行巡检
分段核对
分段核对
# 1) 关闭验证做对比:成功说明断链在签名或信任链
dig +cd +dnssec example.com @8.8.8.8 | grep -E 'status|flags'
# 2) 打开验证观察实际结果
dig +dnssec example.com @8.8.8.8 | grep -E 'status|flags'
# 3) 取父域 DS 与子域 DNSKEY 的素材做比对
dig +short example.com DS @<父域服务器IP>
dig +short example.com DNSKEY @<子域权威IP>
# 4) 查看签名有效期(inception 与 expiration)
dig +dnssec +multi example.com | grep -A3 RRSIG | head -20症状与成因
| 症状 | 大概率的成因 | 核对方式 |
|---|---|---|
| +cd 成功、默认失败 | 链或签名存在问题 | 逐段核对 DS 与 DNSKEY |
| RRSIG 时间已过期 | 未按时续签 | 查看 expiration 字段与当前时间 |
| DS 存在但无对应 DNSKEY | 密钥轮换未同步 | 比对指纹与算法编号 |
| 只对部分解析器失败 | 验证器算法支持差异 | 换多个验证型解析器对照 |
排查 DNSSEC 的标准流程是:先确认『关闭验证是否成功』,再逐段核对根、顶级域、目标域的 DS 与 DNSKEY 匹配关系。顺序对了,十分钟内通常能定位到断在哪一段。
在开启了验证的解析器上排查,测试结果可能已被验证器过滤:务必用 +cd 做对照,否则会误读成服务器或网络故障。