简介
本文档介绍OpenDNS/Umbrella解析器如何缓存资源记录。
概述
OpenDNS/Umbrella解析程序使用称为OpenDNSCache(ODC)的程序来解析DNS查询。ODC会缓存它接收的数据,以便更快速有效地将结果返回给客户端。本文重点介绍缓存的产生方式和使用时间。
本文面向希望详细了解ODC缓存具体信息的用户(通常为域名服务器和域管理员),或者针对DNS解析可能无法按预期正常工作的情况。
缓存哪些数据?
根据RFC 2181(https://datatracker.ietf.org/doc/html/rfc2181),响应可以在回复中返回,也可以根据数据的可信度存储在缓存中。RFC在第5.4.1节中定义了7个信任级别:
- 来自主区域文件的数据,而不是胶合数据。
- 这仅适用于授权名称服务器,而不适用于OpenDNS解析器
- 来自区域传输的数据,而不是胶水。
- 这仅适用于授权名称服务器,而不适用于OpenDNS解析器
- 包括在权威回复的应答部分中的权威数据。
- 来自权威答案权威部分的数据。
- 从主区域粘贴或从区域转移粘贴标签。
- 这仅适用于授权名称服务器,而不适用于OpenDNS解析器
- i)来自非权威应答的应答部分的数据,和ii)来自权威应答的应答部分的非权威数据。
- i)是解析器返回内容的示例。即非权威数据。
- 对于ii),请注意权威应答的应答部分通常仅包含权威数据。 但是,如果所查找的名称是别名(请参阅第10.1.1节),则只有描述该别名的记录才是权威的。 客户端可以假设其他记录必须来自服务器的缓存。 在需要授权答案时,客户端可以使用与别名关联的规范名称再次查询。
- i)权威应答中的附加信息;来自非权威答案权威部分的数据;(三)来自非权威性答复的其他信息。
- 所有这些都适用于OpenDNSCache
- 为了将结果返回给查询,不得对从这些源中任何源接收的记录进行缓存。
OpenDNSCache会缓存信任级别为3、4和6的响应中的数据。如果我们收到具有更好或相等信任级别的新数据,则会替换旧的缓存条目。
NS记录除外,我们只用更好的信任级别替换数据。
如何从缓存中添加和删除数据?
过期数据不会从缓存中删除。这是SmartCache功能的基础,通过此功能,如果我们由于某种原因无法联系权威机构,我们将从缓存返回过期的资源记录(RR)。
相反,每个解析器上的缓存是固定大小,当新的RR添加到缓存时,最早的RR会被删除。这可以可视为一个队列,新条目被添加到队列中,将旧条目从队列中挤出(对于外面的计算机科学家,这实际上是一个循环的双链接列表)。
请注意,如上所述,DNS响应可以包含多个具有不同信任级别的RR,并非所有这些RR都是最初请求的数据。因此,在收到响应后,我们可能有多个RR添加到缓存。
如上所述,NS记录不受此行为影响,因为只有当数据的信任级别高于现有条目时,我们才替换缓存中的NS记录条目。这样做是为了确保如果旧当局仍然作出反应并将自己作为当局归还,我们就能发现母当局的变化是胶水粘着的。