L.root-servers.net.のIPアドレス変更と、ルートネームサーバを解説してみる試み

一次ソース(英語)↓
http://blog.icann.org/?p=227
ニ次ソース(日本語)↓
http://jprs.jp/tech/notice/2007-10-25-l.root-servers.net.html
日本語の情報はだいたい一次ソースの翻訳。

ルートヒントファイルって何?という御仁は↓に書くので、インターネッツに関わるエンジニアならDNSの事ぐらいちゃんと覚えよう。

↓は思いっきりまわりくどいから、怒らないでね。

  • hage.hoge.example.jp. という名前があるとします。
  • 手元のPCは会社のPC、リゾルバは社内DNS
  • 社内DNS鯖はその時点で何も知らない(キャッシュしてない)

とします。

  • 手元のPC → 社内DNS鯖 「hage.hoge.example.jp.って何ですか?」
  • 社内DNS鯖はそんな名前(Aレコード)知らない
  • 社内DNS鯖はhoge.example.jp.のNSレコードを調べる
  • 社内DNS鯖はhoge.example.jp.のNSレコードを知らない
  • 社内DNS鯖はexample.jp.のNSレコードを調べる
  • 社内DNS鯖はexample.jp.のNSレコードを知らない
  • 社内DNS鯖はjp.のNSレコードを調べる
  • 社内DNS鯖はjp.のNSレコードも知らない
  • 社内DNS鯖は.のNSレコードを調べる
  • .のNSレコードはルートヒントファイルに書いてある!
  • .のNSレコードは大量にあるが、a.root-servers.net.に聞くことにする
  • 社内DNS鯖はa.root-servers.net.のAレコードを調べる
  • a.root-servers.net.のAもルートヒントファイルに書いてある!
  • 社内DNS鯖 → a.root-servers.net. 「jp.のNSレコードって何?」
  • a.root-servers.net. → 社内DNS鯖 「a.dns.jp.とかb.dns.jp.があるよ」
  • a.root-servers.net. → 社内DNS鯖 「ちなみにa.dns.jp.とかのAレコードはコレコレ」
  • 社内DNS鯖 → a.dns.jp. 「example.jp.のNSレコードって何?」
  • a.dns.jp. → 社内DNS鯖 「example.jp.のNSレコードはns.example.jpで、Aはコレだよ」
  • 社内DNS鯖 → ns.example.jp 「hoge.example.jp.のNSレコードって何?」
  • ns.example.jp → 社内DNS鯖 「hoge.example.jp.のNSレコードはns.hoge.example.jp.でAはコレだよ」
  • 社内DNS鯖 → ns.hoge.example.jp. 「hage.hoge.example.jp.って何ですか?」
  • ns.hoge.example.jp. → 社内DNS鯖 「hage.hoge.example.jp.は192.168.1.111だよ」
  • 社内DNS鯖 → 手元のPC 「192.168.1.111です!やったね!」

あぁ、大変まわりくどいが、だいたい↑のとおりだ。
重要なのは、ルートヒントファイルに、ルートネームサーバの情報が書いてあること。"."というのがルートネームサーバのDNS的表現で、このことを知らない奴が多すぎて困る。そして、ルートヒントファイルには以下のことが書かれている(普通書かれているであろうコメントは省いてある&2007/10/25時点の内容だから、内容は今回の変更前だよ)。

.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33

.(=ルートネームサーバ)のNSレコードと、そのNSレコードに書かれた名前のAレコードが書かれているんだね。このファイルがないと、DNSサーバは知らない名前を誰に聞いて良いやらわからないので、ものすごく重要。今回のICANNからのアナウンスというのは、このルートネームサーバの一つのIPアドレスが変更になるからな!というもので、この1行が使えないからといって即効性の高い不具合にはならないんだけど、心得としてこのファイルを最新に保つ活動をオススメする。
最新に保ちたいのだが、ここで最も気をつけなければならないのは、この情報の正確さだ。
悪意のある嘘のルートヒントファイルをサーバに設定してしまったら、それはそれはひどい目にあうから絶対に気軽な変更をしないこと。俺が貼り付けた↑をコピペしてサーバの設定を変更するなんてもってのほかだ!真っ当な管理者ならば一次情報源の確認および、複数の経路からの情報にて妥当性を検証してからサーバの設定内容を変更すること。ルートヒントファイルはものすげぇ大事なファイルだから気軽に変えちゃダメだよ。