Glue 记录是否被递归解析器缓存?

Glue 记录是否被递归解析器缓存?

递归解析器是否会缓存来自 Glue 记录的权威名称服务器的 IP 地址?
顶级域名的名称服务器包括域名的委托和 Glue。
现在,递归解析器是否会缓存此“A”/“AAAA”记录(胶水记录)?我知道缓存仅适用于响应来自“权威”名称服务器的情况,但此处 TLD 名称服务器进一步委托,不能被视为权威。
或者
权威名称服务器是否还提供自己的 IP 地址作为 A 记录(以及域的 A 记录),而这就是递归解析器缓存的内容?

答案1

通常情况下,胶水记录并不是权威的答案,如果你看一下标志(存在或不存在),你可能会注意到这一点。aa 权威解答RFC 1035, 4.1.1)例如以下查询:

  • 对父母的权威:

     dig com NS @f.gtld-servers.net
     ;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27
    
  • 删除控制。两者都给出了粘合记录附加部分

     dig google.com NS @f.gtld-servers.net
     ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9
    
     dig ns1.google.com A @f.gtld-servers.net
     ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9
    
  • 来自权威服务器的权威答案:

     dig google.com NS @ns1.google.com
     ;; flags: qr aa rd; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 9
    
     dig ns1.google.com A @ns1.google.com
     ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    

基本算法来自RFC 1034,5.3.3缓存大部分响应数据;只有失败和其他怪异内容(d)被忽略(重点是我的):

  • a. 如果响应回答问题或包含名称错误,缓存数据并将其返回给客户。

  • b. 如果响应包含对其他服务器的更好的委托,缓存委托信息,然后转到步骤2。

  • c. 如果响应显示 CNAME,但这不是答案本身,缓存 CNAME,将 SNAME 更改为 CNAME RR 中的规范名称并转到步骤 1。

  • d. 如果响应显示服务器故障或其他异常内容,则从 SLIST 中删除该服务器并返回步骤 3。

RFC 还提到,一些实现可以选择强制解析器忽略缓存数据并咨询权威服务器。真正发生什么取决于实施。根据DNS 如何毁掉互联网来自Kudelski Security Research:

除了可能导致非故意错误响应的错误之外,缓存中毒(参见Dan Kaminsky 的 2008 年 DNS 漏洞DNS 缓存中毒指南) 必须加以考虑。许多 DNS 缓存实现将粘合记录缓存为正常记录,因此 DNS 服务器可能会提供恶意响应,从而导致缓存中出现错误条目。

例如:

evil.com.       IN NS ns.company.com.
ns.company.com. IN A 6.6.6.6

虽然合法服务器说

company.com.    IN NS ns.company.com.
ns.company.com. IN A 1.2.3.4

因此,错误的 IP 地址将在记录的整个生命周期内保留在缓存中。为了避免此问题,大多数缓存解析器实现都不信任并忽略管辖范围外 NS 记录的可选粘合记录,因此忽略了 ns.company.com. IN A 6.6.6.6上述示例中的记录。DNS 管理员请注意:最好只保留管辖范围内的记录。

答案是否权威本身并不是决定记录是否应该被缓存的指标:

  • 上层名称服务器是同一权威名称服务器结构的一部分。因此,由于它们确实委托了对其子域的控制权,即最终可以控制谁可以权威地回答,因此它们应该是值得信赖的。通常,粘合记录应与区域本身的记录相匹配,其他一切都将是 IANA 的配置错误权威名称服务器的技术要求

胶水与权威数据的一致性

对于将 IP 地址列为粘合 IP 地址的名称服务器,IP 地址必须与该主机的权威 A 和 AAAA 记录相匹配。

委派和区域之间的一致性

权威名称服务器提供的 NS 记录集必须与父区域中为委派建议的记录集相匹配。

  • 并非所有递归服务器都从根名称服务器开始解析名称,但也有更复杂的递归基础结构。解析器可以具有货运代理,它们会询问其他递归名称服务器,而不是权威名称服务器。这些响应永远不是权威的,但始终会被缓存。

  • 在 DNS 缓存中毒场景中,肇事者不是任何权威名称服务器,而是伪装成来自可信来源的答案,无论是权威名称服务器还是转发器。由于 DNS 使用 UDP,因此欺骗响应更容易。有一些解决方案可以解决此问题:

    • 最大 UDP 响应大小。如果响应大于该值(即大于单个 UDP 数据包),DNS 将使用 TCP。由于有附加部分,包含粘合记录的响应很容易越过该边界。TCP 连接不那么容易被欺骗,因为它需要 MitM 位置。

    • DNSSEC 验证。欺骗性响应的记录不能具有匹配的 DNSSEC 签名,因此它们不会被缓存。

    • 加密 DNS。有两个标准:DNS over TLS(RFC 7858) 和 HTTPS 上的 DNS (RFC 8484)。

相关内容