01 · Bogus 归因分类与处置
当解析器对某一域名返回SERVFAIL(验证失败),需按"从父到子、从签名到网络"逐层归因。下表归纳高频Bogus成因、可观测特征与处置:
| 成因 | 可观测特征 | 处置 |
|---|---|---|
| 父区DS不匹配 | 子区已换KSK但父区DS未更新(或反之);delv报"no valid DS / broken chain"。 | 对齐DS摘要与KSK;优先用CDS自动同步(第4页)。 |
| 签名过期 | RRSIG expiration已过;delv报"no valid RRSIG / signature expired"。 | 立即重签并检查自动重签任务是否中断。 |
| 算法/摘要不一致 | 区用算法X签名但DS摘要为旧算法;或双算法过渡顺序错。 | 确认算法/摘要匹配;算法轮转先升DS再滚KSK。 |
| EDNS0大包被丢 | 带DNSSEC的应答被中间设备按UDP分片丢弃,触发超时/重试失败。 | 调大EDNS0 UDP size、确保TCP回退可用、检查MTU。 |
| NSEC3参数失当 | 否定应答验证失败;delv报否定证明无效。 | 校正迭代次数/盐值;重签并验证否定应答。 |
| 时钟不同步 | 验证器/签名者时钟偏差超有效期窗口,合法签名被判过期。 | 统一NTP时间源,核对inception/expiration。 |
优先级提示:"父区DS不匹配"与"签名过期"占运维事故的大头,且都可通过"上线前delv验证 + 持续监测RRSIG有效期 + CDS自动化"系统性规避。本课题把这两项列为监测体系的必告警项。
02 · 诊断工具实战(dig / delv)
dig用于"看见原始DNSSEC记录",delv用于"端到端验证状态",二者互补:
# 1) 查看某域名是否携带 RRSIG(原始记录) dig +dnssec +multi example.com A # 2) 查看父区对该域的 DS(确认链式信任衔接) dig +dnssec DS example.com # 3) 用 delv 做端到端验证(关键) delv @8.8.8.8 example.com # 成功:"; fully validated" # 失败示例: # "broken chain of trust: no valid DS for example.com" # "no valid RRSIG resolving 'www.example.com/A'" # 4) 绕过验证取原始数据(诊断用,CD=1) dig +cd +dnssec example.com A
以上为说明性命令结构;delv 的精确输出措辞随版本略有差异,但"fully validated / broken chain of trust / no valid RRSIG"等语义一致。生产诊断应在授权网络内进行。
2.1 关键判读点
- AD 标志:dig应答的"flags"含
ad表示验证解析器判定Secure(但见第5页"最后一段"缺口)。 - SERVFAIL:验证解析器对Bogus返回的应答码,是"验证失败"而非"域名不存在"。
- RRSIG 字段:检查inception/expiration是否在有效期内、key tag是否指向现用DNSKEY。
- DS 一致性:父区DS的key tag/算法/摘要须与子区KSK的对应值精确匹配。
03 · 端到端诊断流程
04 · 签名新鲜度与轮转监测
DNSSEC最危险的"静默失败"是签名悄悄过期。监测体系应在RRSIG到期前充分告警:
- 签名有效期窗口:监测最近一条RRSIG的expiration,设置"距过期 N 天"分级告警(如剩余30/14/7/1天)。
- 自动重签健康度:确认重签任务/inline-signing持续运行,输出区RRSIG数量与时间戳正常。
- DS一致性巡检:周期比对父区DS与子区KSK,发现漂移立即修复。
- 轮转状态机:对进行中的KSK/ZSK轮转,监控各RFC 7583阶段是否按时推进(第4页)。
分层监测原则:把"签名新鲜度"与"DS一致性"作为第一优先级的硬告警;把"验证率波动""否定应答比例"作为趋势观测。任何一项异常都应在影响用户前被捕获。
05 · 运维监控体系建议
| 监测对象 | 指标/告警 | 采集方式 |
|---|---|---|
| 签名新鲜度 | RRSIG剩余有效期分级告警 | 周期抓取区/抽样域名RRSIG |
| DS一致性 | 父DS vs 子KSK 漂移告警 | 周期比对DS与DNSKEY |
| 验证结果 | 从外部验证解析器探Secure/Insecure/Bogus比例 | 外部delv探针 + 公共DNS对比 |
| 解析可达性 | 带DNSSEC的查询成功率、SERVFAIL率 | 拨测 + 解析器日志 |
| 网络路径 | EDNS0大包可达、TCP回退成功率 | 路径MTU/分片探测 |
| 轮转状态 | 轮转阶段超时告警 | 轮转编排系统事件 |
事故复盘要点:历史上NASA、HBO Now等站点曾因DNSSEC配置或签名过期导致不可达。核心教训是"部署DNSSEC前必须演练故障与轮转,并建立签名新鲜度硬性告警"——这正是本页监测体系的出发点。
06 · 在线诊断工具(上线前必查)
除命令行外,以下公开工具可对整条链式信任做可视化体检,建议作为上线与变更(轮转、换算法)后的强制检查项:
| 工具 | 地址 | 能力 |
|---|---|---|
| DNSViz | dnsviz.net | 图形化展示 根→TLD→本区 全链信任路径,标红断链点与过期RRSIG,是排查DS/链断裂的首选。 |
| Verisign DNSSEC Debugger | dnssec-debugger.verisignlabs.com | 逐条列出DNSKEY/DS/RRSIG校验结果与具体问题描述。 |
| Zonemaster | zonemaster.net | 由AFNIC与IIS(.se)联合开发的综合区文件体检(含DNSSEC模块,覆盖NS/委托一致性)。 |
| ISC BIND / Unbound 官方文档 | bind9.readthedocs.io / unbound.docs.nlnetlabs.nl | delv/dig输出的权威判读依据。 |
使用纪律:在线工具只能验证"当时"的公网状态;生产变更应在灰度验证解析器上先行确认(先让自有Unbound/bind验证通过),再观察公共验证器(1.1.1.1 / 8.8.8.8 / 9.9.9.9)结果一致后,方可宣告完成。
本节参考来源(第6页)
以下为真实可查的权威来源,支撑本页关于验证失败处理、诊断与监测的事实表述。
RFC 4035 — Protocol Modifications for DNSSEC(验证失败与SERVFAIL语义):rfc-editor.org/rfc/rfc4035
RFC 7129 — Nameserver Behavior with Invalid Names(无效名称/失败处理):rfc-editor.org/rfc/rfc7129
ISC BIND 9 Documentation — DNSSEC Troubleshooting(delv / dig +dnssec):bind9.readthedocs.io
NLnet Labs Unbound Documentation — DNSSEC validation & diagnostics:unbound.docs.nlnetlabs.nl
RFC 7583 — DNSSEC Key Rollover Timing(轮转阶段监测依据):rfc-editor.org/rfc/rfc7583
APNIC Blog — "Calling time on DNSSEC?"(签名域名占比/实际验证比例):blog.apnic.net/2024/05/28/calling-time-on-dnssec