中间名服务器中的DNS TTL过期后发生了什么?

中间名服务器中的DNS TTL过期后发生了什么?,dns,ttl,Dns,Ttl,为了更好地理解DNS机制,我有一些问题: 1) 我知道在客户端和权威DNS服务器之间有一些中间DNS服务器,比如ISP的。其他类型的是什么,在哪里 2) 在中间DNS服务器中NS记录的TTL过期后,它们何时刷新名称的地址?客户要求?或者在到期后,他们会刷新记录 谢谢。您的问题与编程无关,因此此处不涉及主题 但是: 我知道在客户端和权威DNS服务器之间有一些中间DNS服务器,比如ISP的。其他类型的是什么,在哪里 只有两种类型的DNS服务器(我们暂时不考虑存根的情况):它要么是一个权威的名称服务器

为了更好地理解DNS机制,我有一些问题:

1) 我知道在客户端和权威DNS服务器之间有一些中间DNS服务器,比如ISP的。其他类型的是什么,在哪里

2) 在中间DNS服务器中NS记录的TTL过期后,它们何时刷新名称的地址?客户要求?或者在到期后,他们会刷新记录


谢谢。

您的问题与编程无关,因此此处不涉及主题

但是:

我知道在客户端和权威DNS服务器之间有一些中间DNS服务器,比如ISP的。其他类型的是什么,在哪里

只有两种类型的DNS服务器(我们暂时不考虑存根的情况):它要么是一个权威的名称服务器(保存一些域的信息并作为它的信任源),要么是一个递归的服务器,连接到缓存,基本上从没有数据开始,然后逐渐,根据它得到的查询,进行各种查询以获取信息

从技术上讲,一台服务器可以同时完成这两项任务,但至少出于缓存和不同的客户机群体的原因,这是一个坏主意:权威名称服务器通常对任何客户机开放,因为它需要在任何地方“广播”其数据,而递归名称服务器通常只对选定的客户机列表开放(如ISP客户端)

如今,大型组织(CloudFlare、Google、Quad9等)存在开放式公共递归名称服务器。然而,它们拥有硬件、链接和人力来处理公共递归名称服务器产生的所有问题,如带有放大功能的DDOS

从技术上讲,您可以拥有一个递归名称服务器群,就像大型ISP需要做的那样(或者上面的大型公共服务器),因为任何单个实例都不能支持所有客户端查询,它们可以共享一个缓存,也可以在一个层次结构中工作,底层的ISP将数据发送到另一个上游递归名称服务器,等等

在中间DNS服务器中NS记录的TTL过期后,它们何时刷新名称的地址?客户端请求?或在过期后立即刷新记录

这种历史性的天真方式可以概括为:请求到达时,我的缓存中是否有它?如果没有,在外部查询并缓存它。如果是,它是否在我的缓存中过期?如果不是,将它发送给客户端,但如果是,我们需要将其从缓存中删除,然后从一开始就将其视为不在缓存中

然后会有各种变化:

  • 有些缓存并不完全遵守TTL:有些缓存根据其自身的本地策略,钳制的值太低或太高。对该规范最一致的解读是,TTL表示在缓存中保留记录的最长时间,这意味着客户端可以在此之前自由地丢弃该记录。但是,它应该如果它认为值太低,则不要将其重写为更高的值
  • 缓存可以在重新启动/重新启动时保留,并且可以预取,特别是对于“流行”记录;在某种程度上,根N的列表在启动时预取,并与内部硬编码列表进行比较,以便对其进行更新
  • 缓存,特别是RAM中的缓存,可能需要进行修剪,通常是在“最旧的已删除”的情况下,以便为沿途出现的新记录找到位置
  • 因此,根据缓存的管理方式和请求它具有的功能,可能会有一个后台任务来监视过期和刷新记录
我建议您将
unbound
作为一个递归名称服务器来研究,因为它有关于TTL处理的各种设置,所以您可以学习一些东西,然后阅读代码本身(这让我们回到了类似的主题)

您还可以阅读以下文件:IETF互联网草案:

其原理是获取缓存中流行的RRset,即 表示在TTL过期和刷新之前已解决。通过获取 在最终用户查询它们之前,即 通过预取,HAMMER有望提高体验质量 以及优化所涉及的资源 大型DNSSEC解析平台

请务必阅读附录A,其中包含许多有用的示例,例如:

  • Unbound已经做到了这一点(他们使用TTL的百分比,而不是数字) 秒)

  • OpenDNS发现它们也实现了类似的功能

  • 从9.10开始绑定,大约在2月 2014年现在实现了类似的功能 (),并通过 默认

  • 许多递归解析器实现与 本文档中描述的技术。本节记录了一些 他们在选择他们的技术时所做的选择和权衡

举一个例子,Bind,你可以阅读:

BIND 9.10预取的工作原理如下。有两个数字控制它。第一个数字是“合格性”。只有到达的TTL值大于配置的可用性的记录才会考虑预取。第二个数字是“触发器”。如果查询到达时要求缓存的数据少于“触发器”在过期前还剩几秒钟,BIND除了返回该数据作为对查询的答复外,还将要求权威服务器提供新副本。其目的是新副本将在现有副本过期之前到达,从而确保统一的响应时间

BIND 9.10预回迁值是全局选项。您不能在不同的域中要求不同的预回迁行为。默认情况下,预回迁处于启用状态。若要关闭预回迁,请指定0的触发值。以下命令指定2秒的触发值和9秒的合格值,这是默认值。