DNS ルート レコードがハードコードされているのに、なぜ TTL があるのですか?

DNS ルート レコードがハードコードされているのに、なぜ TTL があるのですか?

再帰ネーム サーバーをローカルにホストしているので、名前解決にサービス プロバイダーや他のパブリック DNS サーバーは必要ありません。ルート ネーム サーバーの IP アドレスは構成ファイル (Bind ファイル内) にハードコードされていますが、ルート ネーム サーバーに対して のコマンドを/etc/bind/db.root連続して実行すると、TTL フィールドは依然として減少します。nslookup.

設定ファイルで TTL がハードコード化されている場合、なぜ TTL が減少するのでしょうか?
また、ハードコード化されている場合、そもそもルート レベルの TTL がなぜ必要なのでしょうか?

答え1

通常、以下のスニペットのように DNS ルート サーバーを明示的に構成します。

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

ゾーンタイプが共通masterではなくslave特別区タイプと呼ばれるhint

ネーム サーバーが起動すると、ルート ヒントのみを使用して応答するルート ネーム サーバーを検索し、そこから現在のルート ネーム サーバーのリストを取得します。これらは、操作中に実際に使用されるルート サーバーです。

これらはキャッシュされるため、TTL が必要になりますが、ご存じのとおり、その TTL は他のキャッシュされた DNS レコードと同様に減少します。

クラスINにヒントゾーンが指定されていない場合、サーバーはコンパイルされたデフォルトのルートサーバーヒントセットを使用します。ソース: Bind管理者リファレンスマニュアル

Brian が回答で説明したように、ルート ゾーンは変更されますが、少なくとも 1 つのネーム サーバーが有効である限り、ヒント ゾーンによって、既存のすべてのネーム サーバーの静的構成ファイルの更新を必要とせずに、ルート ネーム サーバーでこのような変更が可能になります。

答え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 に従って更新されます。

関連情報