DNS根記錄硬編碼那為什麼它有ttl?

DNS根記錄硬編碼那為什麼它有ttl?

我在本地託管一個遞歸名稱伺服器,因此不需要服務提供者或其他公共 DNS 伺服器來進行名稱解析。儘管根名稱伺服器 IP 位址被硬編碼在設定檔(在綁定檔中)中,但當我為 的根名稱伺服器/etc/bind/db.root執行多個連續命令時,TTL 欄位仍然會減少。nslookup.

當它被編碼到設定檔中時,為什麼 TTL 會減少?
當它被編碼時,為什麼首先需要根級別的 TTL?

答案1

通常,您會明確配置類似於下列程式碼片段的 DNS 根伺服器:

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

您觀察到該區域類型既不是常見的,master也不slave特區類型被稱為hint

當名稱伺服器啟動時,它僅使用根提示來尋找回應的根名稱伺服器,然後從那裡取得根名稱伺服器的目前清單。這些是在操作期間實際使用的根伺服器。

由於這些記錄已被緩存,因此它們需要 TTL,正如您所觀察到的:該 TTL 會像任何其他快取的 DNS 記錄一樣減少。

如果沒有為類別 IN 指定提示區域,伺服器將使用編譯的預設根伺服器提示集。來源:綁定管理員參考手冊

正如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 更新這些內容。

相關內容