我想了解DNS系统是如何工作的。 域名如何得到解决,以及pipe理员如何设置域名,使其正确parsing到目标机器。
您在Google上find的来源要么非常非常技术化,要么为整个系统获得适当的感觉,要么过于沉闷,并不是非常有用。 任何人都有一个很好的资料来源来解释它,而不必成为阅读过程中的专家?
迄今没有给出的答案作出这些区分,但它们值得logging:
不同types的DNS服务器:
这是持有关于域名的权威信息的服务器。 从这样的服务器的权威答案有AA位设置。
权威服务器的答案总是包含来自区域文件的实际configuration的TTL 。 即,如果TTL设置为86400s,那么这将是响应中的值。
ISP运行授权服务器来托pipe他们代表客户pipe理的域名。 顶级域名(TLD)和国家代码顶级域名(ccTLD)运行的名称服务器也是权威服务器,而且是根名称服务器 。
recursionparsing器只接收来自存根parsing器的请求。 如果答案在caching中,则会立即返回。 如果答案不在caching中,则会反复询问相关权威服务器的答案,然后将其返回到存根parsing器。
caching是recursion服务器的基本特征。 从权威服务器收到的TTL继续下降,当它达到零时,从caching清除条目。
同样,从recursion服务器收到的答案显示递减值,而不是来自区域的原始值。 根据上面的例子,如果一个小时前收到的TTL为7200的logging,recursion服务器的回答将会是3600s。
互联网服务提供商运行recursionparsing器为您的个人电脑交谈,虽然大多数消费者实际上依靠他们的家庭网关, 将查询转发给ISPparsing器的DNS代理 。
存根parsing器不是一般意义上的服务器,它通常是一个库,调用gethostbyname()和相关函数只是调用该库中的代码。
除了和recursionparsing器交谈外,该存根(stub)不能做任何事情,依赖于recursionparsing器来获得它的所有答案。 所有这些上游请求都设置了RD ( recursion期望 )位。
有些(但绝不是全部)存根parsing器有一个caching。
转发(或代理)服务器不(通常)caching。 它们用于在一个networking和另一个networking之间进行代理,通常位于stubparsing器和recursionparsing器之间。
我很难find一个非常好的在线资源。 O'Reilly的蟋蟀书(“DNS和BIND,第5版”)有很好的覆盖面,但并不完全免费。
(TL; DR版本:这很复杂,这就是为什么系统pipe理员在早上茶时间得到所有好的cookies)
“如何查看名字”的答案基本上就是整个系统就像一棵大树 – 你试图查找的名字的每个部分都是另一个层次。 在顶部,“根”服务器知道哪个DNS服务器负责每个“顶级”域(.com,.net,.org,.us,.eu,.uk,.au等),以及负责这些名称的服务器知道哪个DNS服务器负责它们下面的每个域(所以.com服务器知道哪个DNS服务器负责serverfault.com和stackoverflow.com,但他们不知道谁是负责hezmatt.org – .org域名服务器知道)。
当你想知道一个给定的名字对应什么时,你首先要问根服务器。 他们会把你的“顶级”名称“引用”到正确的服务器上,然后适当的“顶级”服务器会指示你从那里去哪里。 最后(通常在几跳之后,但没有理由为什么它不能),你会指向一个服务器,知道你问的问题的实际答案,你会得到你的答案。
如果你想在工作中观察这个过程,你可以使用像http://squish.net/dnscheck/这样的工具来查找一个名字,并查看所有可以完成的查询。
至于pipe理员如何build立一个DNS服务器并将其整合到整个事情中,这种情况就不复存在了。 一旦你设置了一个DNS服务器来回答一个给定的域名,你就需要询问DNS服务器上面的级别,把这个域名“委托”给你的服务器。 在实践中,这是由您的域名注册商代表您完成的,当您告诉他们您要“拥有”一个域的DNS服务器。
您还需要了解去年年中发生的DNS欺骗行为 。
我相信你会得到很多有趣的答案,超越维基百科和以前的问题 。 我希望你会知道dns可以用于:
有趣的一面 – 如果你有时间花钱的话 – 看一下Dan Kaminsky关于[ab]使用dns的有趣方式的介绍之一。 从混沌通信大会#22黑色的TCP / IP操作开始。 非常有趣。 看看他最新的演讲。
好的,第二个答案。 希望更好的一个!
当用户询问serverfault.com的地址时,DNS客户端软件通过查看其根服务器列表开始。 该列表内置于每个DNSparsing客户端[1]。 根服务器是一种特殊的DNS服务器。 他们只是告诉DNS服务器,然后要求的顶级域名(在这种情况下, .com )正在寻求。
告诉DNS客户端软件接下来要询问内容服务器的这个过程称为委托 。 因此,在这种情况下,根服务器将请求委托给serverfault.com到a.gtld-servers.net , b.gtld-servers.net等。在这种情况下,gTLD代表“全球顶级域名”,指的是.com , .net等(与国家代码顶级域名ccTLD相对)。
因此,DNS客户端然后要求其中一个gTLD服务器(它与根服务器一样,也是内容DNS服务器)查找serverfault.com的地址。 服务器返回,将请求委托给ns21.domaincontrol.com和ns22.domaincontrol.com 。 然后DNS客户端继续询问其中一台服务器。
当DNS客户端询问ns21.domaincontrol.com或ns22.domaincontrol.com (它们也是内容DNS服务器)时,它们使用serverfault.com的IP地址69.59.196.212 。 因此,我们完成了。
这里有几点要考虑。 向DNS服务器查找请求的每一步都有三种可能的结果之一:
serverfault.com的地址) 现在,当您尝试运行您自己的DNS服务器时,您必须有一些方法让人们知道与之交谈。 您可以通过将您的域名注册到您感兴趣的顶级域名的注册商以及有关您的DNS服务器地址的信息来完成此操作。 您可以findICANN的注册商名单。
希望这可以帮助!
[1]这是一个巨大的简化,因为我不想触及caching服务器或任何东西。 DNS专家请原谅。 🙂
那里有大量的信息,但考虑它是如何开始的。
首先,你的计算机上有一个(通常是小型的)DNS服务器。 也许它最近已经看到了这个地址。 所以,如果它在caching中,你就完成了。 如果没有,我们挖一点。
计算机上有一个“主机”文件。 你可以把条目放在那里; 比如说,你可以在局域网上放置能够转换成IP地址的东西名称。 该文件也可以是空的。
因此,如果没有所有简单的答案,这个DNS服务就可以做到下一个简单的事情。 我期待看到你的ISP询问谁(当你连接你得到这个信息),所以它要求该服务器。
该服务器可能会或可能不知道答案,但在这里想到“recursion”。 这个过程将根据需要重复回到“根”服务器(称为“。”或“点”)。 最终,答案又回到了原来的链条上,连锁店中的每个DNS都假装它始终知道答案!
摘要这个图片一段时间,然后回去阅读详细的答案在这里。
尽pipe它的名字, 火箭科学家的DNS可能是你在找什么? DNS概述部分涵盖了域,区域,loggingtypes和委派等关键概念。 如果您正在寻找使用BIND来实现DNS,那么它将继续获得关于BIND本身的更多细节。
也就是说,正如前面提到的, DNS和BIND真的是DNS的圣经; 如果你要pipe理你自己的DNS服务器,可能值得拥有你自己的副本。
旧的,但仍然有帮助的LJ文章 – “DNS和DNS工具介绍”
除了pQd,或者如果你有更长的通勤时间,请听听SecurityNow的dns特定情节。 乍看之下,第一百六十三 ,第一百五十五和第一百五 十五 ,虽然有一些额外的事件(在这之后)与听众问答。
插图的DNS教程:
TMBG37上市