摘要

  • root hints 文件只是启动路径,不是持续有效的 DNS 权威声明;它让空缓存解析器能够找到提出第一问的地址。
  • RFC 9609 规定解析器应查询根名 .NS,把权威响应按普通 DNS 数据缓存,并在首个目标无响应时改试另一个配置地址。
  • 这一机制把两类证据分开:配置说明“可以从哪里开始”,权威回答说明“当前应当使用什么”,TTL 则说明后者何时失效。

分析

空缓存会制造一个循环:解析器必须先找到名称服务器,才能询问名称服务器在哪里。root hints 用若干根服务器标识符对应的地址打破循环。它没有把根区装进解析器,也没有决定长期权威;它只给出足够的网络可达性,使解析器能够提出第一问。

这第一问以根名 .QNAME、以 NSQTYPE、以 IN 为类别。RFC 9609 把它称为 priming query。解析器向一个配置地址发送请求,成功后应在缓存里获得当前根 NS 资源记录集及可用的 IPv4、IPv6 地址。分发时写入的静态信息由 DNS 返回的当前状态接替。

“接替”是根引导的核心。RFC 9609 把配置项称为某些根服务器的“推定地址”。它们在软件发布时通常准确,却可能随时间落后。根服务器标识符自 1997 年以来保持稳定,关联地址则偶尔变化。永远只信静态文件的实现,会把安全带变成化石。

安全带这个比喻来自 RFC 1034。它把缓存无路可走时使用的后备结构称为 SBELT。解析器从配置中复制几个可能有帮助的服务器,避免搜索陷入空状态。安全带负责阻止坠落,而不是替代方向盘。

RFC 8109 在 2017 年把这一行为整理为 BCP 209。2025 年发布的 RFC 9609 已取代它,成为当前规范。新文本进一步明确了初始信息的内容、预取策略、不完整地址的恢复方法、根服务器“标识符”的用词,以及 priming response 不是 referral 的性质。

请求本身有清楚边界。RD 位应为零;解析器应使用 EDNS0,并至少能处理 1024 字节的重组规模。若走 UDP,源端口应随机选择;DNS Cookies 也可增加离路径伪造的难度。启动交换一旦被污染,影响可能沿后续解析链扩散,因此这些限制不是装饰。

响应必须是 NOERROR,必须设置 AA,并在 Answer 区包含根 NS RRset。Authority 区必须为空,因为所问记录已在答案中。Additional 区可以携带这些根标识符的 A、AAAA 记录。解析器应把它当普通 DNS 响应处理,而不是赋予特殊永久地位。

Additional 中的地址并不是 glue。这里没有对子区的 referral,而是对根 NS 的直接回答。因此 RFC 9471 针对委派 glue 不完整时的 TC 规则不适用。某些根地址缺失时,响应也未必标记截断。

重复同一 priming query 不一定能补齐地址,因为固定排序可能再次省略同一部分。解析器需要直接查询缺失标识符的 A 和 AAAA。它也不应把“恰好十三条 NS”当作接受条件;本文冻结的 IANA 文件确有十三个标识符,但规范明确要求实现不要依赖这个熟悉的数字。

缓存建立后,时间开始主导。根 NS RRset 按 TTL 过期,不享有特殊豁免。解析器可以在过期前预取。RFC 9609 建议预取时优先使用缓存中的当前地址,而不是立刻退回可能陈旧的配置地址。已经学到的状态应有机会自我更新。

失败路径也有明确方向。如果 priming query 没有响应,解析器必须换用另一个配置目标重试。目标应从可用地址中随机选择,并考虑本机真实的 IPv4、IPv6 连通性。冗余不是列表长度的装饰,而是避免单一启动路径失效的执行规则。

本文冻结的 IANA named.root 文件标注根区版本 2026072901,包含十三个根标识符,每个各有一条 A 和 AAAA,展示 TTL 为 3,600,000 秒。这只描述该快照,不代表十三台物理机器。每个标识符背后可以是覆盖许多地点的 anycast 实例。

安全风险仍然存在。伪造的根引导响应可以把解析器未来的查询引向攻击者控制的服务器。RFC 9609 明确指出,在这些响应受 DNSSEC 保护之前,没有彻底防止重定向的方法。后续验证链可以发现部分攻击,但不会让 hints 文件本身成为身份凭证。

完成引导后,解析器仍要选择服务器:持续测量速度、按性能分组,或在合格集合中随机选择。BCP 不指定唯一算法,只建议不要把根当作特殊的选择例外。根 NS 数据极其重要,却仍然是会过期、会不可达、需要更新的 DNS 数据。

这一历史机制的成熟之处,在于它没有消灭配置,而是限制配置的权力。分发者提供可提出第一问的地址;权威服务器给出当前回答;TTL 撤销回答的时效;重试策略撤销单一地址的垄断。可靠性来自知道哪些知识只是提示,并确保更好的答案能够取代它。

Sources