首页 > 解决方案 > 联合王国 使用 DNSSEC 进行 dns 区域验证

问题描述

长时间的听众,第一次来电。

我正在编写一个包含 DNSSEC 验证的 DNS 解析器,并且在对受影响的 RFC 进行了几次通读后,我注意到了一些我无法真正理解的东西。

在解析uk.(特别是co.uk.)TLD 中的域期间,我遇到了 DNSSEC 验证触发的无限循环。为了简单起见,我们假设该进程已经缓存了所有根区域,所以让我们从那里开始:

我确定这是一个设计缺陷,但无法真正理解是什么。从逻辑上讲(这里触发循环的关键步骤是)在验证之前不应该考虑使用 RR,并且从逻辑上讲,子区域委派记录也不应该使用子区域的 DNSKEY 进行签名,我认为甚至如果父区域也对子区域具有权威性。

请帮助并提前感谢您

标签: dnsdnssec

解决方案


正如您所注意到的,相同的名称服务器对 .UK 和 CO.UK 都具有权威性,因此您没有从父区域获得正常的推荐响应,该响应将在权威部分中有 DS 和 NS 记录,而是权威来自子区域的响应,在答案部分带有 NS 记录。

因此,正如您意识到的那样,您确实需要对 .UK 名称服务器进行额外的 DS 查询,但请注意,您不需要该 DS 记录来验证 NS 记录的 DNSKEY 和 RRSIG 记录。在正常委托响应中返回的(非顶点)NS 记录没有签名,也不需要验证。当您返回子区域响应时,NS 记录是顶点记录,并且(如果该区域是 DNSSEC 签名的)NS 记录集将有一个 RRSIG,但在使用它们之前不需要验证这些 NS 记录作为区域的名称服务器。验证递归名称服务器仅在处理来自客户端的显式 NS 查询时才需要验证 NS 记录。

最终,DNSSEC 依赖于验证区域中的数据,而不是提供它们的名称服务器的名称或地址。这与仅对服务器(可能还有客户端)端点进行身份验证的许多其他安全协议(例如 HTTPS)有很大不同。


推荐阅读