DNS 根记录是硬编码的,那么为什么它有 ttl?

DNS 根记录是硬编码的,那么为什么它有 ttl?

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

为什么在配置文件中对 TTL 进行硬编码后,TTL 会减少?
为什么在对 TTL 进行硬编码后,首先需要在根级别设置 TTL?

答案1

通常,您会明确配置与以下代码片段类似的 DNS 根服务器:

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

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

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

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

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

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

答案2

它们不是永久的硬编码 - 根区域文件会随着时间而改变,因此传递给解析器的条目不能设置为永远存在。

例如,文件开头显示,当前文件最后更新于 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

答案3

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

相关内容