DNS 解析模型

最后更新: 2021-07-02 04:23:55 +0800 +0800
原文以英文撰写。您正在阅读AI翻译版本。

DNS 名称构成一棵有根树。域是以某个名称为根的子树。区域是由权威数据提供服务的该树的一部分管理范围。因此,域和区域并非同义词:区域可以委派一个子树,从而不再包含该子树的权威记录。

委派与权威 #

父区域通过在该名称处发布 NS 记录来委派 child.example.。子区域发布自身的顶点 SOA 和 NS 记录。解析器向父区域请求该切分点以下的数据时,会收到一条转介,其中包含 Authority 部分中的子区域 NS RRset。

如果 NS 目标位于被委派的子区域内,父区域还会在 Additional 部分提供 glue A 或 AAAA 记录。Glue 消除了在联系子名称服务器之前解析其名称服务器名称所产生的循环依赖。解析器必须将 glue 视为引导地址数据,而不是目标地址的权威数据。

权威服务器从其区域数据中作答。递归解析器从其缓存中向客户端作答,或执行迭代查询。存根解析器不会遍历委派;它会请求已配置的递归解析器执行此操作。

响应语义 #

对于查询,服务器可以返回答案、转介或错误响应。NXDOMAIN 表示所查询的名称不存在。带有空答案的 NOERROR 也可能表示该名称存在,但没有所查询类型的记录,这种情况通常称为 NODATA。

CNAME 将其所有者标识为别名。其他数据不得与该所有者共存,因为别名不能同时拥有独立的权威数据。沿着 CNAME 目标继续查询,直到获得所请求的类型、另一个别名或错误。DNAME 则不同:它为整个子树创建别名,并对其所有者以下的名称触发合成 CNAME 处理。

缓存与 DNSSEC #

解析器根据 TTL 缓存 RRset。否定答案根据 SOA 信息进行缓存。DNSSEC 允许验证解析器通过从已配置的信任锚开始、由 DS 到 DNSKEY 的信任链,对肯定和否定答案进行身份验证。NSEC 或 NSEC3 证明可验证否定结果;单独的 NXDOMAIN 响应不能完成验证。

在区域文件和协议文档示例中,当与已配置的起源发生歧义会造成问题时,应使用带末尾点的完全限定名称。

有关数据包编码,请参阅 DNS 线路格式。有关服务器的运行配置,请参阅 BIND 9 权威与递归 DNS。

评论

在 GitHub 上阅读或评论(发表评论需要登录)