一次递归 DNS 查询,逐跳详解
浏览器
想访问 example.com
解析器
运营商 / 1.1.1.1
根 + TLD
谁负责 .com?
权威服务器
真正的答案
这条链路上的每一跳本身都是一次 DNS 查询,之后都会被缓存
DNS 解析详解:从查询到应答
DNS 解析是把域名转换为应用程序所需数据(通常是 IP 地址)的过程。当浏览器需要连接 www.example.com 时,它会向本地网络栈请求结果。存根解析器通常会把问题转发给递归解析器。该解析器可能已经缓存了答案;否则,它会沿着 DNS 引荐一路走下去,直到找到对相关区域具有权威的服务器。最终的答案沿原路返回,并且可以在有限时间内被缓存。这个过程是分布式的:没有任何一台全球唯一的服务器存储着每个域名的完整记录集。
查询始于一个具体的名称和类型
DNS 的问题并不是简单的“查一下这个网站”。它包含一个名称和一个记录类型。A 查询请求 IPv4;AAAA 请求 IPv6;MX 询问邮件交换服务器;NS 询问名称服务器。递归解析器根据类型决定要获取并返回什么数据。如果浏览器需要一个网页地址,它可能会同时请求 A 和 AAAA 记录,而邮件系统请求的则是 MX。请求了错误的类型,即使该名称下还有其他记录,也可能得到空应答。只有问题本身清楚,DNS 的结果才有意义。
- 客户端检查本地缓存和已配置的解析器。
- 递归解析器检查自己的缓存;如有必要,再去查询根服务器。
- 根服务器的引荐指向相关的顶级域服务器。
- 顶级域的引荐给出该域名的权威名称服务器。
- 权威应答被返回,并在其允许的时限内被缓存。
递归解析器代表客户端完成了其中大部分工作。引荐是指向下一级权威的指针,并不一定是最终的记录。根服务器不需要知道每个网站的地址,顶级域服务器也不托管每个域名的完整区域。每一级都只给出通往下一级的指引。权威服务器则保存着域名运营者或 DNS 服务商配置的实际记录。解析器一旦到达它们,应答中可能包含地址、别名、否定应答,或其他与类型相关的值。
别名、缓存与否定应答
如果一个名称带有 CNAME,则在找到地址之前,解析可能还会涉及另一个主机名。每个相关的响应都有各自的缓存行为,所以这条链中可能包含 TTL 各不相同的条目。解析器还可能在有限的时间内缓存否定结果,比如所查询的名称不存在这一事实。这可以解释为什么新建的名称不会在创建后立即出现。清除本地缓存只会影响该设备或该层,并不会抹掉互联网上各个独立递归解析器所持有的缓存应答。
| 响应 | 它告诉您什么 |
|---|---|
| 地址应答 | 所请求的类型返回了一个或多个值 |
| 引荐 | 在被委派的服务器上继续查询 |
| NXDOMAIN | 所查询的名称在该 DNS 视图中不存在 |
| NODATA | 名称存在,但缺少所请求的记录类型 |
| SERVFAIL | 解析器无法完成该查询 |
一种实用的诊断方法,是在不同层面比较同一名称和类型的结果。递归查询描述的是使用该解析器的客户端会收到什么。权威查询则有助于确定区域本身当前发布了什么。如果两者的值不一致,请检查 TTL、最近一次修改的时间以及实际的委派情况。如果 DNS 结果正确,但应用仍然失败,就继续排查网络路由、TLS 或服务器日志。这样可以避免一个常见的排错陷阱:解析本已正常工作,故障出在连接路径更靠后的位置,却一再地修改 DNS。
DNS 解析之所以可靠,恰恰因为它是分层、缓存和委派的,但这些特性也使得迁移期间的变更看起来前后不一致。比较观察结果时,请保存答案、所查询的记录类型、解析器和时间戳。递归解析器与权威解析器的指南更详细地解释了各自的角色,而 DNS TTL 则讲解缓存的存活时间。相比认为每台设备都在读取同一本即时更新的全球通讯录,这些概念能提供更准确的模型。
解析是一个过程,而不是一次数据库读取
由于解析涉及多台独立运营的服务器,DNS 应答所受的影响不止来自最终的 A 或 AAAA 记录。过时的委派可能把解析器引向错误的权威;权威服务器不可用可能导致超时;DNSSEC 链断裂可能使进行验证的解析器拒绝数据;缓存的否定应答则可能延迟对新建名称的识别。每一层留下的证据各不相同。响应码、权威部分、TTL 以及所查询的服务器,都可以帮助缩小原因的范围。在收集诊断信息时,不要把超时转述成“该域名不存在”,因为那会改变含义。请保留确切的错误响应,并与权威查询对比。这种分层的方法能得出有针对性的修复方案,而不是盲目地改动地址记录。
需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。
相关阅读
几乎每个 DNS 区域都会遇到的记录
什么是 SOA 记录?DNS 区域权威详解
了解 DNS SOA 记录、它的序列号以及刷新和重试计时器,以及它如何帮助权威域名服务器协调同一个区域,并影响否定缓存。
三种角色,往往来自三家不同的公司
什么是 NS 记录?DNS 域名服务器记录详解
理解 NS 记录、父区域委派和权威域名服务器,并学会确认是哪家 DNS 服务商在为域名的记录提供服务。
几乎每个 DNS 区域都会遇到的记录
DNS 区域文件详解:记录、名称与 TTL
了解 DNS 区域文件如何组织记录、所有者名称、TTL 和记录数据,并获得一份审查或迁移区域时可放心照做的检查清单。