为了更好地理解DNS机制,我有一些问题:
( 1)我知道在客户端和权威DNS服务器之间有一些中间DNS服务器,比如ISP的服务器。它们的其他类型是什么和在哪里?
2)在中间DNS服务器中NS记录的TTL过期后,它们何时刷新名称的地址?客户的请求?或者在到期后,他们会刷新记录?
谢谢。
发布于 2018-07-16 21:44:21
你的问题在这里与编程无关。
但是:
我知道在客户端和权威DNS服务器之间有一些中间DNS服务器,比如ISP的服务器。它们的其他类型是什么和在哪里?
只有两种类型的DNS服务器(我们暂时不考虑存根问题):它要么是权威的名称服务器(保存有关某些域的信息并作为其信任源),要么是附加到缓存的递归服务器,基本上是从没有数据开始,然后根据它获得的查询逐步执行各种查询来获取信息。
从技术上讲,一台服务器可以两者兼用,但至少从缓存的原因和不同的客户群体来看,这是个坏主意:权威的名称服务器通常对任何客户机开放,因为它需要在任何地方“广播”其数据,而递归名称服务器通常只针对选定的客户列表(如ISP客户端)。
如今,大型组织( CloudFlare、谷歌、Quad9等)都有公开的公共递归名称服务器。然而,它们同时拥有硬件、链接和人力来处理公共递归名称服务器产生的所有问题,比如带有放大功能的DDOS。
从技术上讲,您可以拥有一个递归名称服务器群,比如大型ISP(或上述大型公共服务器),因为任何单个实例都无法支持所有客户端查询,而且它们可以共享单个缓存或在层次结构中工作,底层的实例将数据发送到另一个上游递归名称服务器,等等。
在中间DNS服务器中NS记录的TTL过期后,它们何时刷新名称的地址?客户的请求?或者在到期后,他们会刷新记录?
这一历史性的天真方式可以概括为:请求到达,我是否将它保存在缓存中?如果没有,则在外部查询并缓存它。如果是,它在我的缓存中过期了吗?如果不是,则将其发送给客户端,但如果是,则需要从缓存中删除它,然后执行从一开始就不在缓存中的操作。
然后,您将有各种不同的变体:
我建议您将unbound看作一个递归的名称服务器,因为它具有TTL处理的各种设置,因此您可以学习一些东西,然后阅读代码本身(这会使我们回到主题中)。
您还可以阅读本文档:https://www.ietf.org/archive/id/draft-wkumari-dnsop-hammer-03.txt,IETF互联网-草稿,关于:
其原则是获取缓存中流行的RRset,即在TTL过期和刷新之前解析。通过在最终用户(即预取)查询之前获取RRset,预期HAMMER将提高最终用户的体验质量,并优化大型DNSSEC解决平台所涉及的资源。
确保阅读附录A中有很多有用的例子,例如:
举一个例子,绑定一个,你可以读到:
绑定9.10预取工作如下。有两个数字控制它。第一个数字是“资格”。预取时只考虑TTL值大于配置的可替换性的记录。第二个数字是“触发器”。如果查询到达时要求缓存的数据在其过期前的时间少于“触发器”秒,那么除了返回该数据作为对查询的答复外,BIND还将向权威服务器请求一个新的副本。其意图是,新的副本将在现有副本到期之前送达,这将确保统一的响应时间。 绑定9.10预取值是全局选项。您不能在不同的域中要求不同的预取行为。默认情况下,启用了预取。若要关闭它,请指定触发器值0。下面的命令指定触发器值为2秒,适用范围值为9秒,这是默认值。
https://stackoverflow.com/questions/51353779
复制相似问题