四种结果,四种不同的后续处理
NXDOMAIN 详解:域名为何无法解析
NXDOMAIN,即“non-existent domain”(不存在的域名),是 DNS 能给出的最明确的应答之一。它并不意味着服务器超时,也不意味着上游有什么配置错误。它的意思是:权威域名服务器被询问了某个名称,并明确表示该名称在其区域中并不存在。这是一个明确的否定答案,并不是通常意义上的错误。
最常见的真实原因
- 域名拼写错误:exmaple.com 与 example.com,在 DNS 看来是不同的名称(而且很可能没有注册)。
- 域名的注册已过期,且一直没有续费。
- 所查询的子域名从未创建:根域名解析正常,但 api.example.com 从未配置过自己的记录。
- 某条记录在迁移过程中被删除或重命名,而且没有补上新的记录。
为什么重试没有用
DNS 超时或 SERVFAIL 可能是暂时的,比如服务器短暂过载,或者某条网络路径出现了瞬时问题,稍后再试往往正是合适的做法。NXDOMAIN 则不同:它是一个直接的、权威的声明,说明该名称没有注册。重复同样的查询只会得到同样的答案,因为底层的注册信息并没有任何变化。这正是为什么设计良好的查询工具会把 NXDOMAIN 视为永久性失败并快速失败,而不是在一个注定不会成功的查询上白白消耗重试次数和时间。
有一个值得了解的细节:NXDOMAIN 针对的是整个名称,而不是某一种记录类型。如果一个域名有 A 记录但没有 AAAA 记录,那么 AAAA 查询返回的不是 NXDOMAIN,而是一个成功的响应,只是应答集合为空(有时被表述为 NODATA)。NXDOMAIN 明确表示的是该名称本身没有任何类型的记录。
当 NXDOMAIN 并不是真正的 NXDOMAIN
有些 ISP 和公共 Wi-Fi 网络会悄悄拦截真实的 NXDOMAIN 响应并替换成自己的内容,把拼写错误或未注册的域名重定向到一个满是广告的搜索页面,而不是老实地返回“它不存在”。这是真实存在的做法,并非传说,而且恰恰是会削弱人们对 DNS 应答信任的那一类事情:这样做的解析器并没有谎报某个确实存在的域名,却把真正的 NXDOMAIN 隐藏在一个人为制造、可用来牟利的结果之后。直接查询一个知名、中立的公共解析器,它没有任何商业动机去重定向死胡同,就能完全绕开这个问题,得到权威服务器的真实应答。
| 结果 | 含义 | 值得重试吗? |
|---|---|---|
| NXDOMAIN | 该名称根本不存在,对任何记录类型都是如此 | 不值得,属于永久性结果 |
| NODATA | 该名称存在,但没有您所查询的记录类型 | 不值得,对该记录类型同样是永久性的 |
| 被劫持的 NXDOMAIN | 解析器用自己的页面替换了真实的否定应答 | 改用另一个中立的解析器进行查询 |
您确信已注册的域名却返回 NXDOMAIN
最让人困惑的情形,是您明明知道某个域名已经注册、而且最近还正常工作,却看到了 NXDOMAIN。除了上述的直接原因之外,还可能是因为:域名在不同注册商之间转移,短暂进入了域名服务器委派不完整的状态;DNSSEC 签名错误,导致验证型解析器把原本有效的区域当作不存在;或者是(虽然少见,但值得了解)域名因违反服务条款或涉嫌滥用而被注册商暂停,从外部看,这与注册过期的表现完全相同。这些都不是重试就能解决的,它们都需要直接检查注册和委派状态,通常要通过注册商自己的控制台或 WHOIS 查询,而不是 DNS 本身所能揭示的任何内容。
需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。
相关阅读
同一个域名返回不同答案的三个原因
地理路由
每个地区对应不同的边缘服务器
缓存
TTL 各自独立,缓存各自独立
分割视图
刻意设计的不同答案
为什么 DNS 应答会因地点而异
了解地理 DNS、CDN 路由、解析器缓存和分离视图(split-horizon)配置,弄清同一个域名为什么会在不同位置返回不同的 DNS 应答。
四个层级,按顺序排查
DNS
解析域名
传输层
TCP 连接
TLS
证书验证
应用层
HTTP 响应
如何诊断“无法访问此网站”错误
这条笼统的浏览器错误涵盖了几种互不相关的故障模式,而 DNS 往往是最快能先排除或确认的一个。
“传播”其实只是缓存过期
0 分钟
您保存了更改
0-5 分钟
您的 DNS 托管商完成更新
最长到 TTL
旧答案仍在缓存中
TTL 之后
所有人都看到新答案
没有任何内容被推送出去,只是各个缓存不再复用自己的副本
DNS 修改没有生效时该怎么办
您更新了记录,等了一阵,看起来还是不对。在断定出了故障之前,请按顺序逐项排查。