例如:我们已经注册了域名domain.com,并在注册服务器
ns1.domain.com上添加了名称服务器记录。
ns2.domain.com。
ns3.domain.com。
比我们查找domain.com更重要。我们得到所有3个名称服务器地址。
1.将进一步请求其中一台服务器,为什么?
2.区域文件中NS记录的顺序重要吗?
3.是否在任何RFC中确定?
例如:我们已经注册了域名domain.com,并在注册服务器
ns1.domain.com上添加了名称服务器记录。
ns2.domain.com。
ns3.domain.com。
比我们查找domain.com更重要。我们得到所有3个名称服务器地址。
1.将进一步请求其中一台服务器,为什么?
2.区域文件中NS记录的顺序重要吗?
3.是否在任何RFC中确定?
Answers:
可悲的是,这里的答案是“取决于”。它取决于的因素将随域,拥有服务器的设置方式以及您自己的本地DNS的设置方式而异。
首先,例如,关于返回的NS记录:完全可以对返回这些记录的顺序进行随机化处理,因此每次请求时,其顺序可能会有所不同。另一方面,并非所有DNS实施都可以做到这一点,因此您很可能会获得静态排序的列表。关键是您不能确定。
接下来,一些DNS实现将并行查询每个NS,并使用其中一个首先答复。其他人将各打中,确定一些请求中最快的请求并使用该请求。或者它可能只是循环。
DNS有多个RFC,我发现其中两个更有用:
http://www.faqs.org/rfcs/rfc1912.html
http://www.faqs.org/rfcs/rfc1033.html
我意识到这是一个无法回答的问题,没有明确的定义供您使用,但是鉴于上述情况,您必须确定给定域的行为的唯一真实方法就是进行测试。
我在客户端级别看到的最常见的实现,例如世界各地的ISP,如下所示:
每次记录查找都会重复此过程。但是,只有第一个查询才能完成整个工作;之后将缓存名称服务器IP,随后对ISP的缓存DNS服务器的后续查询将能够迅速跳至第8步。
现在,关于步骤8的随机化,它在记录级别上起作用。假设该ISP的宽带用户询问以下记录:
每条记录将作为其自己的单独“实体”进行处理,并分别进行缓存和查找。因此,假设订户和ISP之前从未遇到过该域,并且它们的缓存记录都完全为零。查找可能如下:
每当缓存的记录被软过期时,都会重复该过程,因此您甚至都不知道对该记录的后续请求将再次使用同一服务器。
因此,您的绝对最大的目标是确保所有 DNS服务器都彼此完全同步,从而完美地镜像每个服务器上的每个 DNS记录。您永远不会知道DNS客户端将攻击哪台服务器,也不能依赖任何命令。哪有这回事。
此外,如Adam C所提到的,服务器级(example.com)DNS服务器本身可以返回NS记录并随机化它们的顺序。对于常规DNS服务器来说,随机分配其NS记录是非常普遍的,这是由于DNS实施不佳总是会选择第一个返回的namserver而导致的。但是,ROOT TLD名称服务器(前面提到过)永远不会将列表随机化,而对于解决域而言,它们的列表才是真正重要的。这就是为什么大多数实现从名称服务器列表中选择一台随机服务器的原因,以避免始终访问同一服务器并使它过载。
好的,这是您了解DNS如何工作以及您应该记住的内容的入门。
免责声明:可以实现比管理DNS更高的生活目标,但要单独出售,请发挥您的想象力。;-)