Vit*_*sov 21 domain-name-system nslookup
例如:我们已经注册了域名domain.com,并在注册服务器上添加了名称服务器记录:
ns1.domain.com。
ns2.domain.com。
ns3.domain.com。
比我们查找domain.com。我们获得了所有 3 个名称服务器地址。
1. 将进一步请求哪一台服务器,为什么?
2. 区域文件中 NS 记录的顺序重要吗?
3. 是否在任何RFC 中确定?
Ada*_*m C 22
可悲的是,这里的答案是“视情况而定”。它所依赖的因素因域、拥有服务器的设置方式以及您自己的本地 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 更高的目标,但需要单独出售,发挥您的想象力。;-)