DNSのルートヒント(root hints)とは、主に再帰リゾルバが名前解決を始めるためにあらかじめ持っている、ルートゾーンの権威ネームサーバーの名前とIPアドレスの一覧です。
簡単にいうと、再帰リゾルバがまだ何も知らない状態から外部ドメインを調べるときに使う、最初の問い合わせ先の情報です。
IANAでも、root hints file は DNS解決をブートストラップするための情報として案内されています。
たとえば再帰リゾルバが www.example.com のIPアドレスをまだキャッシュしていないとします。
このとき、いきなり example.com の権威DNSサーバーを知っているわけではありません。
そこでまず、DNS階層の最上位にあるルートに問い合わせる必要があります。
ただし、そのためには「どのルートサーバーに聞けばよいか」を最初から知っていなければなりません。
その出発点になるのがルートヒントです。
つまりルートヒントは、再帰リゾルバが最初の一歩を踏み出すための初期情報だと考えるとわかりやすいです。
再帰リゾルバが www.example.com を解決する場合、大まかには次のように進みます。
www.example.com の問い合わせを受ける.com の情報を受け取る.com のネームサーバーに問い合わせて example.com の情報を受け取るexample.com の権威ネームサーバーに問い合わせて、最終的なレコードを取得するこのように、ルートヒントは名前解決のスタート地点で使われます。
ルートヒントには、ルートゾーンの権威ネームサーバーについての次の情報が含まれます。
つまりルートヒントは、再帰リゾルバが「まずどこへ接続すればよいか」を知るための一覧です。
ここに最終的なドメインの答えが入っているわけではなく、あくまでルートへ到達するための情報です。
この2つは似ていますが、役割は異なります。
言い換えると、ルートヒントは入口であり、ルートゾーンは本体のデータです。
ルートヒント自体がTLDの委任情報を完全に持っているわけではありません。
再帰リゾルバはルートヒントを使ってルートサーバーへ到達し、そこから正式な委任情報を受け取ります。
よく「ルートサーバーは13個ある」と説明されますが、厳密にはA〜Mまでの13個のルートサーバー識別子がある、という表現のほうが正確です。
ここでいう13は、物理的に13台しかないという意味ではありません。
実際には、それぞれの識別子の背後にAnycastで分散配置された多数の実サーバーがあります。
そのため、世界全体では非常に多くのルートサーバー実体が運用されています。
つまり、
という理解が正確です。
この数は、歴史的なDNSの応答サイズ制約と関係があります。
単純に「UDP 512バイト制限だから13」とだけ言うと少し乱暴ですが、当時の制約の中で、ルート委任情報として実用的に扱える規模が13識別子だった、という理解が近いです。
現在ではAnycastによって、13個の識別子の背後に多数の実サーバーを配置できるため、性能や耐障害性は大きく向上しています。
ルートヒントは、再帰リゾルバが自分で解決を進めるときの出発点です。
一方、フォワーダは問い合わせを別のDNSサーバーに転送する仕組みです。
つまり、
という違いがあります。
フルリゾルバとして動くDNSサーバーではルートヒントが重要になりますが、常に上位DNSへ転送する構成では、普段ルートヒントの存在を意識しないこともあります。
ルートヒントを主に使うのは、再帰リゾルバです。
企業内DNSサーバー、ISPのキャッシュDNS、フルリゾルバなどが代表例です。
一方、一般的なPCやスマートフォンは通常、スタブリゾルバとして動作し、指定された再帰DNSサーバーに問い合わせるだけです。
そのため、通常のクライアント端末が直接ルートヒントを意識することはほとんどありません。
毎回使われるわけではありません。
再帰リゾルバは、一度取得したルートやTLD、権威サーバーの情報をキャッシュします。
そのため、必要な情報がキャッシュに残っていれば、毎回ルートヒントからたどり直す必要はありません。
ただし、リゾルバの起動直後や、必要なキャッシュが失効している場合には、ルートヒントが重要になります。
このように、ルートヒントは常に前面に出る仕組みではないが、解決開始時には欠かせない情報です。
基本的には、妥当な内容を保つべき情報です。
多くのDNSソフトウェアではルートヒントがあらかじめ組み込まれていますが、あまりに古い情報をそのまま放置するのは望ましくありません。
ただし、これは「頻繁に手作業で更新し続けなければならない」という意味ではありません。
実際の運用では、リゾルバがルート情報を取得し直す仕組みもあるため、少し古いだけですぐ全面的に解決不能になるとは限りません。
それでも、保守対象として意識しておくべき情報であることに変わりはありません。
ルートヒントが不正確で、なおかつ有効なルート情報に到達できない場合、再帰リゾルバは外部ドメインの解決開始に失敗しやすくなります。
その結果として、たとえば次のような症状が起こることがあります。
SERVFAIL やタイムアウトが増えるただし、既存のキャッシュで一時的に解決できるケースもあるため、障害がすぐ全面化しないこともあります。
そのため、運用上は原因が見えにくくなることがあります。
ルートヒントとDNSSECは別の仕組みです。
つまり、ルートヒントは問い合わせ先を知るための情報であり、DNSSECは受け取ったデータの正当性を確認する仕組みです。
両者は関係する場面がありますが、役割ははっきり異なります。
実務では、ルートヒントを次のように理解すると整理しやすいです。
ルートヒントは、再帰リゾルバが自力で名前解決を始めるための出発点です。
それ自体が最終的な答えを持っているわけではなく、ルートサーバーへたどり着くための初期情報にすぎません。
そしてルートサーバーから正式な委任情報を得て、TLD、権威サーバーへと順番にたどっていきます。
そのため、ルートヒントは普段あまり目立たない一方で、DNSの再帰解決を支える基盤のひとつだといえます。
DNSのルートヒントとは、再帰リゾルバが名前解決を開始するために保持する、ルートゾーンの権威ネームサーバーの名前とIPアドレスの初期一覧です。
これにより再帰リゾルバは、まずルートに問い合わせ、そこから .com や .jp などの上位ドメイン、さらに対象ドメインの権威サーバーへと順にたどって最終的な答えを取得できます。
つまりルートヒントは、DNSの再帰解決における最初の道しるべです。
以上、DNSのルートヒントについてでした。
最後までお読みいただき、ありがとうございました。