硬编码的DNS根logging,那为什么有ttl?

我在本地托pipe一个recursion名称服务器,所以我不需要我的服务提供者或另一个公共DNS服务器来进行名称parsing。 尽pipe根名称服务器的IP地址是在configuration文件中(在Bind /etc/bind/db.root文件中)硬编码的,当我为根名字服务器运行几个连续的nslookup命令时. ,那么TTL字段仍然会减less。

为什么在configuration文件中对TTL进行编码时会减lessTTL?
为什么在编码时首先需要根级的TTL?

通常,您将显式configuration类似于以下代码段的DNS根服务器:

 zone "." { type hint; file "/etc/bind/db.root"; }; 

在哪里观察到区域types不是普通的masterslave而是一个称为hint特殊区域types

当名称服务器启动时,它只使用根提示来查找响应的根名称服务器,然后从那里获取当前根名称服务器的列表。 这些是在操作过程中实际使用的根服务器。

由于这些caching,他们将需要一个TTL,正如你所观察到的:TTL将像其他任何caching的DNSlogging一样降低。

如果没有为类IN指定提示区域,则服务器使用已编译的默认根服务器提示集合。 来源:绑定pipe理员参考手册 。

正如Brian在答复中所解释的,根区域确实发生了变化,只要至less有一个名称服务器保持有效,提示区域就允许在根名称服务器中进行这样的更改,而不需要所有现有的名称服务器来更新其静态configuration文件。

它们不是永久性的硬编码 – 根区域文件会随着时间而改变,所以传递给parsing器的条目不能被设置为永远持续。

例如,当前版本是在2014年最后更新的,如文件开头所示:

 ; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (eg reference this file in the "cache . <file>" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.cache ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; ; last update: November 05, 2014 ; related version of root zone: 2014110501 ; ; formerly NS.INTERNIC.NET ; . 3600000 NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:ba3e::2:30 

db.root仅用作DNS服务器启动过程的一部分,以查找真正的当前根服务器。 这些随后根据TTL进行更新。