飞行手册

DNS 返回 NXDOMAIN 或 SERVFAIL?先分清不存在与解析失败

浏览器显示“找不到网站”,不能直接判断机场节点不可用。DNS查询返回“名称不存在”、返回“服务器失败”,以及根本没有响应,是三种不同的情况,下一步也不同。

本文适用于排查公开域名。企业内部域名可能只有指定的内部解析器能回答,不应拿公共 DNS 的结果当作内部服务故障证明。

先分清响应与超时

RFC 1035 的响应码定义中,RCODE 2表示服务器无法处理查询;RCODE 3表示名称错误,在权威回答中意味着所查询的名称不存在。常见工具分别把它们显示为 SERVFAIL 和 NXDOMAIN。RFC 1035

结果 初步含义 不应直接得出的结论
NXDOMAIN 当前解析链给出了名称不存在的结果 服务商一定停运,或所有解析器都一样
SERVFAIL 查询处理失败,没有得到正常答案 域名一定不存在
超时 在等待窗口内没拿到可用响应 一定收到服务器失败响应

域名存在却没有某一种记录,也不等于名称不存在。例如仅缺少AAAA记录,不能据此认定整个域名不存在。

Windows 先做两种记录查询

Windows可用内置 nslookup 查看当前解析器与查询结果:

nslookup -type=A example.com
nslookup -type=AAAA example.com

example.com是基础示例;排障时换成实际失败的公开域名,只填域名,不填https://、路径、端口或订阅令牌。微软文档列出了nslookup的使用方式和服务器失败、名称不存在、超时等错误。nslookup说明

保存所用解析器、查询类型、时间和完整错误文字。工具语言不同,提示可能不同,不能只截取“失败”两个字。

再做一组受控解析器对照

如果网络允许,并且目标是公开域名,可临时指定另一个你信任且可达的解析器做同类型查询,而不是立即修改全系统DNS。nslookup支持在域名后指定DNS服务器地址;应使用你已核实的实际地址。

比较时保持域名与A/AAAA类型一致。一个解析器成功、另一个失败,说明解析链存在差异,但仍要核对缓存、策略、上游与服务状态;不能自动推断是谁故意阻断。

两边都超时,则先检查到解析器的可达路径。若工具查询成功、客户端仍失败,还应查看应用是否使用自己的DNS、加密DNS或代理侧解析。系统工具成功不代表应用使用了同一条路径。

不把单个 DNS 结果写成商业结论

机场官网、节点域名和业务目标是不同对象。只有某个网站域名失败时,应先定位该对象;不能把它扩展成所有节点不可用,更不能由此写出停运或“跑路”结论。

提交问题时给出:失败域名、记录类型、解析器、北京时间、节点或接管模式,以及对照结果。删除订阅路径和凭据,只保留诊断必需的信息。

怎样确认排查完成

先取得预期的域名答案,再验证原应用能否建立连接并完成业务。解析成功只解决了第一阶段,后续TCP、TLS和HTTP仍需要各自检查。

做机场推荐或试用评估时,准确区分“名字不存在”“解析失败”和“请求超时”,比反复更换节点更容易获得可复查的证据。

参考资料

评论

推荐登机口

搜索文章

正在加载搜索…