再帰的なDNS検索を1ホップずつ見る
ブラウザー
example.comを要求
リゾルバー
ISP / 1.1.1.1
ルート + TLD
.comの管理元は?
権威サーバー
正式な回答
この連鎖の各ホップはそれ自体がDNS検索で、結果はその後キャッシュされます
DNSの仕組み:ドメイン名からIPアドレスまで
ブラウザーに example.com と入力すると、ほぼ瞬時にページが表示されます。その2つの瞬間の間に、地球全体に広がる分散データベースが、1つの質問に答えました。この名前に対応するIPアドレスは何か、という質問です。このシステムがDNS(Domain Name System)です。
きちんと理解しておく価値があります。変更が反映されない、メールが消える、あるデバイスでは表示されるのに別のデバイスでは表示されないなど、ウェブサイトの紛らわしいトラブルのほとんどは、DNSの名前解決とキャッシュが実際にどう動くかに行き着くからです。
再帰的なDNS検索を1ホップずつ見る
ブラウザー
example.comを要求
リゾルバー
ISP / 1.1.1.1
ルート + TLD
.comの管理元は?
権威サーバー
正式な回答
この連鎖の各ホップはそれ自体がDNS検索で、結果はその後キャッシュされます
4つの登場者
- スタブリゾルバー — OSに組み込まれた小さなDNSクライアントです。ほとんど何も知らず、すぐに処理を委任します。
- 再帰リゾルバー — 通常はISPが運用しており、
1.1.1.1や8.8.8.8のようなパブリックなものもあります。答えを追いかけてキャッシュする、働き者です。 - ルートサーバーとTLDサーバー — 答えは知りませんが、答えを知っている相手を知っています。ルートは
.comを指し、.comのTLDサーバーはドメイン自身のネームサーバーを指します。 - 権威ネームサーバー — ドメインの本物のレコードを保持するサーバーです。ここが言うことが、定義上の真実です。
検索を1ステップずつ追う
まずローカルキャッシュを確認する
ブラウザーにも独自のDNSキャッシュがあり、OSにもあります。どちらかに
example.comの有効期限内の答えがあれば、検索はマイクロ秒で終わり、ネットワーク通信はまったく発生しません。再帰リゾルバーに尋ねる
キャッシュにない場合、スタブリゾルバーは設定された再帰リゾルバーにクエリを送ります。通常はポート53で、1つのUDPパケットです。
リゾルバーがルートサーバーに尋ねる
リゾルバーにキャッシュがなければ、最上位から始めます。ルートサーバーは
example.comを知りませんが、「.comのネームサーバーはこれです」と返します。リゾルバーがTLDサーバーに尋ねる
.comのサーバーは、「example.comの権威ネームサーバーはこれです」というリファーラルを返します。これもまだ答えではなく、別のポインターです。リゾルバーが権威ネームサーバーに尋ねる
ここには実際のゾーンファイルがあります。
Aレコードの93.184.216.34と、その答えをどのくらい再利用してよいかを示すTTLを返します。答えがキャッシュされて返される
リゾルバーはTTLの期間だけ結果をキャッシュし、OSに渡し、OSがブラウザーに渡します。サーバーへのTCP接続を始められるのは、ここからです。
再帰と権威:重要な違い
この2つはしょっちゅう混同され、実際のデバッグミスにつながります。
| 再帰リゾルバー | 権威ネームサーバー | |
|---|---|---|
| 役割 | あなたに代わって答えを見つける | 答えを保存して公開する |
| 例 | 1.1.1.1、8.8.8.8、ご利用のISP | Cloudflare DNS、Route 53、ご利用のレジストラー |
| キャッシュするか | する。それが主な仕事 | しない。そこが情報源 |
| 誰が設定するか | あなた、またはあなたのネットワーク | ドメインの所有者 |
実際の影響は次のとおりです。DNSレコードを変更すると、権威サーバーは即座に更新されます。一方、世界中のすべての再帰リゾルバーは、TTLが切れるまでキャッシュしたコピーを返し続けます。このずれが、いわゆるDNSの伝播です。
リゾルバーが実際に返すもの
応答はアドレスだけではありません。レコードタイプ、値、TTLに加え、答えが権威からのものか、キャッシュから返されたものかを示すフラグも含まれます。1つのドメインは、多くのレコードタイプを同時に公開します。アドレス用の A と AAAA、メールの経路用の MX、ネームサーバー用の NS、確認やポリシー用の TXT です。
example.com. 3600 IN A 93.184.216.34
example.com. 3600 IN AAAA 2606:2800:220:1::248
example.com. 3600 IN MX 10 mail.example.com.
example.com. 86400 IN NS ns1.example.com.名前の後ろにある数字は、秒単位のTTLです。IN はインターネットクラスを意味します。残りがレコードタイプとその値です。
実際にDNSで起きがちな問題
- 変更が伝播していない。 権威サーバーは正しく、あなたとの間にあるキャッシュが古いだけです。直すことは何もなく、待つだけです。
- ネームサーバーが別のプロバイダーを指している。 レジストラーでレコードを編集したが、ドメインはホスティング会社のネームサーバーに委任されているため、編集が無視されます。
- 末尾のドットがない。 ゾーンファイルでは、末尾のドットがない
mail.example.comは、ゾーンからの相対名と解釈され、mail.example.com.example.comになることがあります。 AAAAレコードがないのに、IPv6のみのクライアントがいる。 ほかのみんなには問題なく動いているのに、そのクライアントからはサイトに到達できません。
重要なポイント
DNSの問題があるデバイスでは出て、別のデバイスでは出ない場合、壊れたレコードではなく、ほぼ確実にキャッシュが原因です。何かを変更する前に、権威の答えを確認してください。
ホームページの検索ツールを使えば、任意のドメインについて、これらのレコードをすべて確認できます。各レコードは独立して問い合わせられるため、1つのタイプが欠けているドメインでも、残りは表示されます。
ドメインの公開DNSアドレスを調べたい場合は、Domain IP Lookupツールをお試しください。
よくある質問
関連記事
再帰的なDNS検索を1ホップずつ見る
ブラウザー
example.comを要求
リゾルバー
ISP / 1.1.1.1
ルート + TLD
.comの管理元は?
権威サーバー
正式な回答
この連鎖の各ホップはそれ自体がDNS検索で、結果はその後キャッシュされます
ネームサーバーとは?ドメイン委任の仕組み
どのプロバイダーがDNSを管理するかを決める、たった1つの設定です。レコードを編集しても反映されないことがある理由でもあります。
ほぼすべてのゾーンで出会うレコード
DNSレコードタイプ徹底解説:完全リファレンス
知っておくべきレコードタイプのすべてについて、役割、書式、そして陥りがちな間違いを、1つのリファレンスページにまとめました。
TTLの実際の選び方
DNS TTLとは?最適な値の選び方
たった1つの数字が、変更が反映される速さと、発生するDNSトラフィックの量を左右します。意図して選ぶ方法を紹介します。