再帰的なDNS検索を1ホップずつ見る
ブラウザー
example.comを要求
リゾルバー
ISP / 1.1.1.1
ルート + TLD
.comの管理元は?
権威サーバー
正式な回答
この連鎖の各ホップはそれ自体がDNS検索で、結果はその後キャッシュされます
DNS名前解決の仕組み:クエリから応答まで
DNSの名前解決とは、ドメイン名を、アプリケーションが必要とするデータ(多くはIPアドレス)に変換する処理です。ブラウザーが www.example.com に接続する必要があるとき、まずローカルのネットワークスタックに結果を問い合わせます。スタブリゾルバーが、通常はその質問を再帰リゾルバーに転送します。再帰リゾルバーはすでにキャッシュされた答えを持っているかもしれません。なければ、該当ゾーンの権威を持つサーバーに到達するまで、DNSのリファーラルをたどります。最終的な答えはチェーンを逆にたどって返り、一定期間キャッシュされます。この処理は分散型で、すべてのドメインの完全なレコードを保持している単一のグローバルサーバーは存在しません。
クエリは特定の名前とタイプから始まる
DNSの質問は、単に「このウェブサイトを調べて」というものではありません。名前とレコードタイプを含みます。AクエリはIPv4を、AAAAはIPv6を、MXはメール交換サーバーを、NSはネームサーバーを尋ねます。再帰リゾルバーはこのタイプによって、どのデータを取得して返すかを決めます。ブラウザーがウェブのアドレスを必要とする場合はAとAAAAの両方を、メールシステムはMXを尋ねることがあります。間違ったタイプを尋ねると、その名前にほかのレコードが存在していても、空の答えが返ることがあります。質問そのものが明確でなければ、DNSの結果は意味を成しません。
- クライアントが、ローカルキャッシュと設定済みのリゾルバーを確認する。
- 再帰リゾルバーが自身のキャッシュを確認し、必要ならルートサーバーに問い合わせる。
- ルートのリファーラルが、該当するトップレベルドメインのサーバーを示す。
- TLDのリファーラルが、そのドメインの権威ネームサーバーを示す。
- 権威の答えが返され、許可された期間キャッシュされる。
この作業の大半は、再帰リゾルバーがクライアントに代わって行います。リファーラルは次の権威へのポインターであり、必ずしも最終的なレコードではありません。ルートサーバーがすべてのウェブサイトのアドレスを知っている必要はなく、TLDサーバーが個々のドメインの完全なゾーンをホストしているわけでもありません。各レベルが、次のレベルへの道案内を提供します。権威サーバーは、ドメインの運用者またはDNSプロバイダーが設定した実際のレコードを保持しています。リゾルバーがそこに到達すると、答えにはアドレス、エイリアス、否定応答、またはタイプ固有のほかの値が含まれます。
エイリアス、キャッシュ、否定応答
名前にCNAMEがある場合、アドレスが見つかるまでに別のホスト名が関わることがあります。関連する各応答にはそれぞれキャッシュの挙動があるため、チェーンにはTTLの異なるエントリが含まれ得ます。リゾルバーは、問い合わせた名前が存在しないという事実のような否定的な結果も、一定期間キャッシュすることがあります。新しい名前が作成直後にすぐ現れないのは、このためかもしれません。ローカルキャッシュを消去しても、影響を受けるのはそのデバイスや層だけで、インターネット上にある独立した再帰リゾルバーが保持するキャッシュ済みの答えは消えません。
| 応答 | 意味すること |
|---|---|
| アドレスの応答 | 要求したタイプで、1つ以上の値が返された |
| リファーラル | 委任先のサーバーで問い合わせを続ける |
| NXDOMAIN | 問い合わせた名前は、そのDNSの範囲に存在しない |
| NODATA | 名前は存在するが、要求したレコードタイプがない |
| SERVFAIL | リゾルバーがクエリを完了できなかった |
実用的な診断では、同じ名前とタイプを異なる層で比較します。再帰リゾルバーへの検索は、そのリゾルバーを使うクライアントが受け取る内容を示します。権威への問い合わせは、ゾーン自体が現在何を公開しているかを判断するのに役立ちます。この2つの値が異なる場合は、TTL、最後に編集した時刻、実際の委任を調べます。DNSの結果が正しいのにアプリケーションが失敗する場合は、ネットワークのルーティング、TLS、サーバーのログへと進みます。こうすることで、名前解決がすでに機能していて、失敗が接続経路のもっと先にあるのに、DNSを繰り返し変更してしまうという、よくあるトラブルシューティングの落とし穴を避けられます。
DNSの名前解決が信頼できるのは、まさに階層化され、キャッシュされ、委任されているからです。しかし、同じ性質のせいで、移行中は変更の見え方が一貫しないことがあります。観測結果を比較するときは、答え、問い合わせたレコードタイプ、リゾルバー、タイムスタンプを保存してください。再帰リゾルバーと権威リゾルバーのガイドでは役割をより詳しく説明しており、DNS TTLではキャッシュの有効期間を扱っています。これらの概念は、すべてのデバイスが即座に更新される1冊のグローバルな住所録を読んでいる、という考え方よりも、正確なモデルです。
名前解決は、1回のデータベース読み取りではなく、一連のプロセス
名前解決には、独立して運用される複数のサーバーが関わるため、DNSの答えは、最終的なAレコードやAAAAレコード以外の要因にも左右されます。古くなった委任によって、リゾルバーが誤った権威に送られることがあります。権威サーバーが利用できなければ、タイムアウトが起きることがあります。DNSSECのチェーンが壊れていれば、検証を行うリゾルバーがデータを拒否することがあります。キャッシュされた否定応答によって、新しく作成された名前の認識が遅れることもあります。それぞれの層が、異なる証拠を残します。応答コード、権威セクション、TTL、問い合わせたサーバーが、原因を絞り込む手がかりになります。診断情報を集めるときは、タイムアウトを「ドメインが存在しない」と言い換えないでください。意味が変わってしまいます。正確なエラー応答を保存し、権威への問い合わせと比較してください。この階層的な方法なら、アドレスレコードを闇雲に変更するのではなく、的確な修復にたどり着けます。
ドメインの公開DNSアドレスを調べたい場合は、Domain IP Lookupツールをお試しください。
関連記事
ほぼすべてのゾーンで出会うレコード
SOAレコードとは?DNSゾーンの権限を解説
DNSのSOAレコードについて、シリアル番号、リフレッシュとリトライのタイマー、権威ネームサーバーがゾーンを連携させる仕組みを詳しく解説します。
3つの役割。担当企業が別々なことも多い
NSレコードとは:ネームサーバーレコードの解説
NSレコード、親ゾーンでの委任、権威ネームサーバーの仕組みと、ドメインのレコードをどのDNSプロバイダーが提供しているかを確認する方法を解説します。
ほぼすべてのゾーンで出会うレコード
DNSゾーンファイルとは:レコードと名前の基本
DNSゾーンファイルがレコード、所有者名、TTL、レコードデータをどう整理するかを解説し、ゾーンの確認や移行に使える安全なチェックリストを紹介します。