MENU
「安心のセキュリティをお得な価格」でご提供!
Fortinet商品など
ENGAGE fotinet

DNSのルートヒントについて

DNSのルートヒント(root hints)とは、主に再帰リゾルバが名前解決を始めるためにあらかじめ持っている、ルートゾーンの権威ネームサーバーの名前とIPアドレスの一覧です。

簡単にいうと、再帰リゾルバがまだ何も知らない状態から外部ドメインを調べるときに使う、最初の問い合わせ先の情報です。

IANAでも、root hints file は DNS解決をブートストラップするための情報として案内されています。

なぜルートヒントが必要なのか

たとえば再帰リゾルバが www.example.com のIPアドレスをまだキャッシュしていないとします。

このとき、いきなり example.com の権威DNSサーバーを知っているわけではありません。

そこでまず、DNS階層の最上位にあるルートに問い合わせる必要があります。

ただし、そのためには「どのルートサーバーに聞けばよいか」を最初から知っていなければなりません。

その出発点になるのがルートヒントです。

つまりルートヒントは、再帰リゾルバが最初の一歩を踏み出すための初期情報だと考えるとわかりやすいです。

名前解決の流れの中での役割

再帰リゾルバが www.example.com を解決する場合、大まかには次のように進みます。

  1. クライアントから www.example.com の問い合わせを受ける
  2. 自分のキャッシュを確認する
  3. キャッシュに答えがなければ、ルートヒントを使ってルートサーバーに問い合わせる
  4. ルートサーバーから .com の情報を受け取る
  5. .com のネームサーバーに問い合わせて example.com の情報を受け取る
  6. example.com の権威ネームサーバーに問い合わせて、最終的なレコードを取得する

このように、ルートヒントは名前解決のスタート地点で使われます。

ルートヒントに含まれる情報

ルートヒントには、ルートゾーンの権威ネームサーバーについての次の情報が含まれます。

  • サーバー名
  • IPv4アドレス
  • IPv6アドレス

つまりルートヒントは、再帰リゾルバが「まずどこへ接続すればよいか」を知るための一覧です。

ここに最終的なドメインの答えが入っているわけではなく、あくまでルートへ到達するための情報です。

ルートヒントとルートゾーンの違い

この2つは似ていますが、役割は異なります。

  • ルートヒント
    再帰リゾルバが解決を始めるために持つ初期一覧
  • ルートゾーン
    ルートサーバーが実際に保持している委任情報そのもの

言い換えると、ルートヒントは入口であり、ルートゾーンは本体のデータです。

ルートヒント自体がTLDの委任情報を完全に持っているわけではありません。

再帰リゾルバはルートヒントを使ってルートサーバーへ到達し、そこから正式な委任情報を受け取ります。

「13個のルートサーバー」とは何か

よく「ルートサーバーは13個ある」と説明されますが、厳密にはA〜Mまでの13個のルートサーバー識別子がある、という表現のほうが正確です。

ここでいう13は、物理的に13台しかないという意味ではありません。

実際には、それぞれの識別子の背後にAnycastで分散配置された多数の実サーバーがあります。

そのため、世界全体では非常に多くのルートサーバー実体が運用されています。

つまり、

  • 論理的には13の識別子
  • 物理的には世界中に多数のサーバー

という理解が正確です。

なぜ13なのか

この数は、歴史的なDNSの応答サイズ制約と関係があります。

単純に「UDP 512バイト制限だから13」とだけ言うと少し乱暴ですが、当時の制約の中で、ルート委任情報として実用的に扱える規模が13識別子だった、という理解が近いです。

現在ではAnycastによって、13個の識別子の背後に多数の実サーバーを配置できるため、性能や耐障害性は大きく向上しています。

ルートヒントとフォワーダの違い

ルートヒントは、再帰リゾルバが自分で解決を進めるときの出発点です。

一方、フォワーダは問い合わせを別のDNSサーバーに転送する仕組みです。

つまり、

  • ルートヒント = 自力でたどるための初期情報
  • フォワーダ = 他のリゾルバに処理を任せる方法

という違いがあります。

フルリゾルバとして動くDNSサーバーではルートヒントが重要になりますが、常に上位DNSへ転送する構成では、普段ルートヒントの存在を意識しないこともあります。

どの機器がルートヒントを使うのか

ルートヒントを主に使うのは、再帰リゾルバです。

企業内DNSサーバー、ISPのキャッシュDNS、フルリゾルバなどが代表例です。

一方、一般的なPCやスマートフォンは通常、スタブリゾルバとして動作し、指定された再帰DNSサーバーに問い合わせるだけです。

そのため、通常のクライアント端末が直接ルートヒントを意識することはほとんどありません。

ルートヒントは毎回使われるのか

毎回使われるわけではありません。

再帰リゾルバは、一度取得したルートやTLD、権威サーバーの情報をキャッシュします。

そのため、必要な情報がキャッシュに残っていれば、毎回ルートヒントからたどり直す必要はありません。

ただし、リゾルバの起動直後や、必要なキャッシュが失効している場合には、ルートヒントが重要になります。

このように、ルートヒントは常に前面に出る仕組みではないが、解決開始時には欠かせない情報です。

ルートヒントは更新すべきか

基本的には、妥当な内容を保つべき情報です。

多くのDNSソフトウェアではルートヒントがあらかじめ組み込まれていますが、あまりに古い情報をそのまま放置するのは望ましくありません。

ただし、これは「頻繁に手作業で更新し続けなければならない」という意味ではありません。

実際の運用では、リゾルバがルート情報を取得し直す仕組みもあるため、少し古いだけですぐ全面的に解決不能になるとは限りません。

それでも、保守対象として意識しておくべき情報であることに変わりはありません。

ルートヒントに問題があるとどうなるか

ルートヒントが不正確で、なおかつ有効なルート情報に到達できない場合、再帰リゾルバは外部ドメインの解決開始に失敗しやすくなります。

その結果として、たとえば次のような症状が起こることがあります。

  • 新しい名前の解決に失敗する
  • キャッシュ失効後の問い合わせが失敗する
  • SERVFAIL やタイムアウトが増える

ただし、既存のキャッシュで一時的に解決できるケースもあるため、障害がすぐ全面化しないこともあります。

そのため、運用上は原因が見えにくくなることがあります。

DNSSECとの違い

ルートヒントとDNSSECは別の仕組みです。

  • ルートヒント
    どこに問い合わせを始めるかを示す情報
  • DNSSEC
    返ってきたDNSデータが正しいかどうかを検証する仕組み

つまり、ルートヒントは問い合わせ先を知るための情報であり、DNSSECは受け取ったデータの正当性を確認する仕組みです。

両者は関係する場面がありますが、役割ははっきり異なります。

実務での理解のポイント

実務では、ルートヒントを次のように理解すると整理しやすいです。

ルートヒントは、再帰リゾルバが自力で名前解決を始めるための出発点です。

それ自体が最終的な答えを持っているわけではなく、ルートサーバーへたどり着くための初期情報にすぎません。

そしてルートサーバーから正式な委任情報を得て、TLD、権威サーバーへと順番にたどっていきます。

そのため、ルートヒントは普段あまり目立たない一方で、DNSの再帰解決を支える基盤のひとつだといえます。

まとめ

DNSのルートヒントとは、再帰リゾルバが名前解決を開始するために保持する、ルートゾーンの権威ネームサーバーの名前とIPアドレスの初期一覧です。

これにより再帰リゾルバは、まずルートに問い合わせ、そこから .com.jp などの上位ドメイン、さらに対象ドメインの権威サーバーへと順にたどって最終的な答えを取得できます。

つまりルートヒントは、DNSの再帰解決における最初の道しるべです。

以上、DNSのルートヒントについてでした。

最後までお読みいただき、ありがとうございました。

カテゴリ一覧

ページトップへ