那么DNS根记录硬编码了,为什么还要有ttl?


8

我在本地托管一个递归名称服务器,因此不需要我的服务提供商或其他公共DNS服务器来进行名称解析。尽管根名称服务器的IP地址在配置文件中(绑定/etc/bind/db.root文件中)进行了硬编码,但是当我nslookup为的根名称服务器运行多个连续命令时,.TTL字段仍然会减少。

在配置文件中编码后,为什么TTL会降低?
为什么在对其进行编码后首先需要在根级别使用TTL?

Answers:


14

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

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

您观察到的区域类型不是常见的,master也不slave 是称为的特殊区域类型hint

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

由于这些已缓存,因此它们将需要一个TTL,并且正如您所观察到的:该TTL将像其他任何缓存的DNS记录一样减少。

如果未为类IN指定提示区域,则服务器将使用一组编译后的默认根服务器提示。来源:《绑定管理员参考手册》

正如Brian在回答中解释的那样,根区域确实会更改,并且只要至少一个名称服务器保持有效,提示区域就可以在根名称服务器中进行此类更改,而无需所有现有的名称服务器更新其静态配置文件。


4

它们不是永久性的硬编码-根区域文件确实会随着时间而变化,因此传递到解析器的条目不能设置为永久保存。

例如目前一个是在2014年的文件开始最后更新显示在这里

;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. 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

2

db.root仅用作DNS服务器启动过程的一部分,以查找当前的实际根服务器。然后根据TTL更新这些内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.