运维开发网

原则上,DNS名称解析如何工作?

运维开发网 https://www.qedev.com 2020-07-15 15:06 出处:网络 作者:运维开发网整理
现在我正在参加 Linux系统管理员的在线课程,我被问到一个我一般都不明白的问题.我知道如何搜索名称服务器,如果我是正确的,至少它使用dig命令来查找附加部分命令中的地址,但当被问到以下问题时我变得有点迷失. Assuming your configured nameserver does not have any cached results at its disposal, how many
现在我正在参加 linux系统管理员的在线课程,我被问到一个我一般都不明白的问题.我知道如何搜索名称服务器,如果我是正确的,至少它使用dig命令来查找附加部分命令中的地址,但当被问到以下问题时我变得有点迷失.

Assuming your configured nameserver does not have any cached results at its disposal, how many nameservers must your nameserver query in order to resolve maps.google.com? What command(s) would you use to find all these nameservers? List one from each level and explain why this level is needed.

我不想要答案,我只想知道我被要求做什么.

Assuming your configured nameserver does not have any cached results at its disposal, how many nameservers must your nameserver query in order to resolve maps.google.com? What command(s) would you use to find all these nameservers? List one from each level and explain why this level is needed.

好吧,让我们分开选一个.

“假设您配置的名称服务器没有任何缓存的结果” – 首先,如果它根本没有缓存数据,那么它无法解决任何问题.为了填充解析器的缓存,您需要具有NS和地址(A,AAAA)记录. (A.K.A.根)区.这是根名称服务器,可以在root-servers.net中找到.区.这个区域或那些DNS服务器没有什么神奇之处.但是,这些数据通常是“带外”提供给DNS解析器,正好用于填充解析器的缓存.仅权威的名称服务器不需要此数据,但解析名称服务器.

还有,“解决”到什么?那个名字的任何RRtype? A RR?或者是其他东西?什么课(CH / Chaosnet,IN / Internet,……)?确切的过程会有所不同,但总体思路保持不变.

如果我们可以假设我们知道如何找到根名称服务器但仅此而已,并且通过“解析”我们的意思是获取与该名称相关联的任何IN A RR的内容,它会变得更加实用.

要解析DNS名称,您基本上将名称拆分为标签,然后按照从右到左的方式进行操作.别忘了.在末尾;你真的要解析maps.google.com.而不是maps.google.com.这让我们需要解决(我们知道这一点,但DNS解析器实现可能不会):

>.

> com.

> google.com.

> maps.google.com.

首先要弄清楚在哪里要求内容..这很容易;我们已经拥有了这些信息:根名称服务器名称和IP地址.所以我们有一个根名称服务器.假设我们决定使用198.41.0.4(a.root-servers.net,也就是2001:503:ba3e :: 2:30)继续进行名称解析.在实践中,解析器完成的第一件事可能是使用提供的根服务器数据向根区域服务器之一询问根区域的名称服务器的准确列表,从而确保如果任何一个名称和IP地址有效且可访问,在解析开始时,它将为根区域提供完整且完整的数据集.

拍摄maps.google.com的DNS查询.在A到198.41.0.4.它会告诉你“没有,不会去做,但这里有人可能会知道”;这是推荐人.它包含有关服务器所知道的最近区域的NS记录,以及服务器恰好可用的任何粘合记录.如果没有可用的粘合数据,则首先必须解析在您选择的NS记录中命名的主机,因此产生单独的名称解析以获取IP地址;如果胶水数据可用,您将拥有至少“更接近”答案的名称服务器的IP地址.在这种情况下,这将是com的服务器集.区域和胶水数据也是如此.

重复这个过程,询问其中一个com.名称服务器相同的问题.他们也不知道,但会将您推荐给Google的权威名称服务器.在这一点上,在一般情况下,是否提供胶水数据将被击中或遗漏;没有什么能阻止com域只在nl中使用名称服务器,例如,在这种情况下,gTLD服务器不太可能提供粘合数据.提供的胶水数据也可能不完整,或者如果你真的不走运,它甚至可能是不正确的!您必须始终准备产生我上面提到的单独的名称解析.

基本上,你继续前进,直到你得到aa(权威答案)标志集的答案.该答案将告诉您您要求的是什么,或者您要求的RR不存在(NXDOMAIN或NOERROR,零响应数据记录).继续寻找像SERVFAIL这样的响应(如果你得到一个步骤则退出一步并尝试另一个服务器;如果所有命名服务器都返回SERVFAIL,则无法通过名称解析过程并自己将SERVFAIL返回给客户端).

要求每个服务器提供完整RR名称的替代方法(可能被认为是不好的做法)是使用我们之前确定的标签分割列表,请求服务器给出的名称服务器进一步向IN NS和IN A / IN AAAA用于该标签的RR,并使用它们来进一步进行名称解析过程.这在实践中只是略有不同,同样的过程仍然适用.

您可以使用dig实用程序的trace选项来模拟整个过程,该实用程序是BIND的一部分,或者在nslookup中设置debug.

值得记住的是,一些RRtypes(特别是NS,MX和其他一些;同样,A6在一段时间内使用得相当好,但已被弃用)可以并且确实引用其他RR.在这种情况下,您可能需要生成另一个名称解析过程,以便为您的客户端提供完整且有用的回复.

0

精彩评论

暂无评论...
验证码 换一张
取 消