现象
dig 返回 status: SERVFAIL,域名之前一直正常;部分解析器失败、部分能返回答案;整个 zone 的所有记录类型都失败;公共解析器返回 SERVFAIL,而直接查询权威服务器却有响应。
诊断
先确认失败来源,再绕过递归解析:
dig +noall +comments example.com
dig @1.1.1.1 example.com +noall +comments
dig @ns1.example.com example.com SOA +norecurse
delv example.com
dig +trace example.com | tail -30
若权威服务器直接返回 NOERROR 和 SOA,说明 zone 已加载,问题在委派或 DNSSEC 验证。delv 会给出 secure、insecure、bogus 或 indeterminate,其中 bogus 表示验证失败,常见于 RRSIG 过期、DNSKEY 缺失或 DS 与当前密钥不匹配。+trace 展示从根到权威的委派链,可发现 NS 记录指向非权威服务器或缺少 glue 记录。
修复
恢复权威服务并保证各服务器数据一致;在注册商处修正 NS 与 glue;DNSSEC 故障需发布匹配的 DNSKEY 与 DS,并在签名过期前重新签名 zone,同时递增 SOA serial 让从服务器同步。只有单个解析器异常时,应修复其转发器或清除缓存,而不是关闭 DNSSEC 验证。
rndc sign example.com
rndc reload
移除 DS 会让整个 zone 失去 DNSSEC 保护,且传播缓慢;故障期间更改 NS 还可能因 TTL 缓存延长影响时间。
验证
分别查询权威服务器与至少两个公共解析器,均应返回 NOERROR 且答案一致;delv 应报告 secure;等待负缓存 TTL 过期后,原先的 SERVFAIL 应消失。若仍失败,先复查父域委派,再考虑调整 DNSSEC。