DNS返回NXDOMAIN或SERVFAIL:两类解析故障如何区分
错误码告诉你下一步去哪里查
浏览器提示域名无法解析时,应先取得DNS响应,而不是马上重建网站。NXDOMAIN表示被查询的名称不存在;SERVFAIL表示服务器未能完成处理。前者常把排查方向引向名称、区域和委派,后者需要检查解析链路、权威服务及验证过程。相关返回码定义见DNS规范RFC 1035。
还要区分名称不存在与某类记录不存在。一个域名有A记录但没有AAAA记录,查询AAAA可能得到成功响应且答案为空,这不是NXDOMAIN。若只看终端里“没有IP地址”,就可能误把正常的单栈配置当成域名失效。
保存完整查询,而不只截取地址
记录完整域名、查询类型、使用的递归DNS、时间和响应状态,并保留答案、权威区与相关TTL。复制域名时检查拼写和多余后缀,尤其是管理界面自动拼接域名的情况。例如把已经完整的主机名再次填入会自动补全后缀的字段,可能创建出意料之外的名称。
先查询实际用户使用的递归服务,再直接比较权威DNS结果。如果权威结果本身错误,优先检查记录、区域是否正确加载以及域名委派。如果权威正确、递归结果不同,则要考虑缓存、传播窗口或特定解析路径的问题,不能反复删除重加同一记录。
假设刚补回一个被误删的子域名,部分用户仍然得到名称不存在的结果。此前的否定响应可能被缓存,此时继续修改A记录会增加变量。应保留修复时间,观察相关缓存生命周期并验证权威答案稳定,而不是承诺所有客户端立即恢复。
SERVFAIL要检查链路和验证状态
SERVFAIL并不等于DNS服务器宕机。权威服务不可达、委派配置异常、响应处理失败,以及DNSSEC验证无法建立可信链,都可能导致解析失败。Google Public DNS的排障文档提供了区分权威问题与验证问题的思路,也提醒需要比较多个观察点。Google官方排障说明
如果域名刚迁移DNS服务,先确认注册商处的名称服务器与新平台提供的值一致,并检查父区DS记录是否仍指向旧密钥。若只有执行验证的递归服务失败,而不验证的路径能返回地址,DNSSEC是重要线索;它不意味着应当让所有用户永久关闭验证。
对于间歇性失败,还应逐台检查被委派的权威服务器是否返回一致结果。一台服务器没有加载最新区域,可能让用户看到时好时坏的现象。检查时必须保留服务器地址及时间,否则不同查询结果很难关联到具体节点。
不要把更换本地DNS当成最终修复
换用另一递归服务可以帮助判断影响范围,但若问题在权威或DNSSEC链路,部分用户仍会失败。管理员应修复域名本身的配置,再用多个递归服务验证,而不是把“我这里换DNS后好了”作为网站恢复依据。
也要观察客户端是否使用了浏览器内置的加密DNS、系统代理或企业内部解析。系统命令查询的服务与浏览器实际使用的服务可能不同,比较结果前应先确认路径一致。内外部采用不同答案的域名,还要记录测试所在网络,避免把设计差异误判为污染或劫持。
恢复验收至少应覆盖主域名、接口与静态资源子域名,分别检查预期的A、AAAA或CNAME结果。随后进行真实HTTPS访问,确认解析修好后业务入口也正确。工单附上返回码、权威与递归对照、最近变更和时间线,通常比只写“域名打不开”更容易得到有效处理。