DNS — インターネットの電話帳

概要 — まず全体をつかむ

初級ではDNSを「名前をIPに変換する電話帳」と捉えました。中級では、その電話帳をどうたどるのか(名前解決の流れ)と、キャッシュ・レコードの種類を見ます。

詳細 — 1段階ずつ追う

これは何をする係?

DNSの答えを実際に探しに行くのがリゾルバ※1です。リゾルバは、自分が知らなければ住所帳の階層を上から順にたどって答えを持ち帰ります。

  • リゾルバ(フルサービスリゾルバ)— あなたの代わりに世界中へ聞いて回る窓口
  • 権威サーバ※2 — 「この名前の答えはこれ」と正式に持っているサーバ

この2つは役割が違います。リゾルバは「聞いて回る人」、権威サーバは「答えを持っている本人」です。

登場人物メモ:

  • ※1 リゾルバ — 名前解決を代行する窓口。ふつうプロバイダかルーターにある
  • ※2 権威サーバ — そのドメインの答えを正式に管理するサーバ
この部分をもっと深く(上級

DNSの登場人物は役割で3つに分かれます。混同すると全体像がぶれます。

  • スタブリゾルバ※1 — あなたの端末に組み込まれた最小の窓口。自分では探さず、フルサービスリゾルバに丸投げする
  • フルサービスリゾルバ※2 — 実際に世界中をたどって答えを集める代理人。キャッシュを持つのもここ(キャッシュDNSサーバとも呼ぶ)
  • 権威サーバ※3 — そのドメインの答えを正式に保持する本人。ゾーン(管理範囲)ごとにプライマリとセカンダリで冗長化する

つまり「端末が代理人に頼み、代理人が本人に聞く」二段構えです。答えを持っているのは常に権威サーバで、リゾルバはあくまで探して控える係にすぎません。

登場人物メモ:

  • ※1 スタブリゾルバ — 端末側の最小窓口。探索はせず丸投げする
  • ※2 フルサービスリゾルバ — 階層をたどって答えを集めキャッシュする代理人
  • ※3 権威サーバ — ゾーンの答えを正式に持つ本人。プライマリ/セカンダリで冗長化
やさしく言うと(初級

DNSは、人が読める名前※1(example.com)を、機械が使うIPアドレス※2(番号)に変換する「インターネットの電話帳」です。

電話帳で「田中さん」を引くと電話番号が分かるように、DNSで「example.com」を引くとIPアドレスが分かります。あなたが名前を打つと、裏で自動的に番号へ変換され、その番号宛に通信が始まります。

登場人物メモ:

  • ※1 名前(ドメイン名) — example.com のような、人が覚えやすい住所の呼び名
  • ※2 IPアドレス — 機械が通信に使う番号の住所

名前解決の流れ

リゾルバが答えを持っていないとき、階層を上からたどります。

  1. リゾルバがルートサーバに聞く(「.com はどこが管理?」)
  2. TLDサーバ(.com の担当)に聞く(「example.com はどこが管理?」)
  3. 権威サーバ(example.com 本人)に聞く(「IPアドレスは?」)
  4. 得られた答えを、リゾルバがあなたに返す

あなたの端末がリゾルバに「答えそのものを持ってきて」と頼む聞き方を再帰問い合わせ、リゾルバが各サーバに「次はどこへ聞けばいい?」と紹介をたどって聞くやり取りを反復問い合わせと呼びます。

アニメーション『DNSの名前解決(再帰)』を開く
あなた(リゾルバ)ルートサーバTLDサーバ(.com)権威サーバ(example.com)
  • あなた(リゾルバ)名前からIPを調べる係。知らなければ上位へ聞きに行く
  • ルートサーバ住所帳の最上位(世界の目次)。「.com」の担当を教えてくれる
  • TLDサーバ(.com)「.com」を束ねる担当。「example.com」の担当を教えてくれる
  • 権威サーバ(example.com)この名前の最終回答(Aレコード)を持つサーバ
「▶ 再生」で通しで見るか、「次へ」で1手ずつ進めてください。
0 / 7
この部分をもっと深く(上級

中級で見た「ルート→TLD→権威」の流れを、問い合わせの種類まで正確にします。ここは取り違えやすい要所です。

  • 再帰問い合わせ — 端末(スタブ)がフルサービスリゾルバへ出す「答えそのものを持ってきて」という依頼。受けた側が最後まで責任を持つ

  • 反復問い合わせ — リゾルバがルート・TLD・権威へ順に出す「次はどこに聞けばいい?」という問い合わせ。各サーバは紹介(委任)だけを返す

  • ルートサーバ — 世界の目次。.com などTLDの権威の在りかを返す(13系統の名前で運用され、実体はAnycastで多数)

  • TLDサーバ.com の目次。example.com の権威の在りかを返す

  • 権威サーバexample.com 本人。最終的なレコードを返す

アニメーション『DNSの名前解決(再帰)』を開く
あなた(リゾルバ)ルートサーバTLDサーバ(.com)権威サーバ(example.com)
  • あなた(リゾルバ)名前からIPを調べる係。知らなければ上位へ聞きに行く
  • ルートサーバ住所帳の最上位(世界の目次)。「.com」の担当を教えてくれる
  • TLDサーバ(.com)「.com」を束ねる担当。「example.com」の担当を教えてくれる
  • 権威サーバ(example.com)この名前の最終回答(Aレコード)を持つサーバ
「▶ 再生」で通しで見るか、「次へ」で1手ずつ進めてください。
0 / 7

要点は「再帰は端末→リゾルバの1回だけ・リゾルバから上位への往復はすべて反復」という非対称です。リゾルバが階層を上りながら委任をたどり、最後に得た答えを1つにまとめて端末へ返します。

やさしく言うと(初級

理由は、人と機械で「住所」の形が違うからです。

  1. 人は「example.com」のような名前で覚える(番号は覚えにくい)
  2. でも機械はIPアドレス(番号)でしか通信できない
  3. そこでDNSが、名前を打つたびに番号へ変換する
  4. おかげで人は番号を意識せず、名前だけでアクセスできる

さらに、サイトが引っ越して番号が変わっても、名前はそのまま使い続けられます。電話帳の番号だけ書き換えればよいのと同じです。

アニメーション『身近な例で解説』を開く
あなた人脈最強の友達相手のアカウント
  • あなた=ブラウザの立場。送りたいけど連絡先を知らない
  • 人脈最強の友達=DNSサーバの正体。その地域のあらゆる連絡先を知っている
  • 相手のアカウント=Webサーバ。届け先の連絡先が「IPアドレス」
どの世代のたとえでも、流れは同じ5手。「▶ 再生」でどうぞ。
0 / 5

キャッシュとレコード

毎回この階層を全部たどると遅いので、一度引いた答えはキャッシュ※3にしばらく残します。

  • TTL※4 — 答えの賞味期限。この期間はキャッシュを使い回せる(2回目が速い理由)
  • TTLが短いと最新に追随しやすく、長いと負荷は減るが更新が遅れる

答えは用途別のレコードとして管理されます。

  • A — 名前に対するIPv4アドレス
  • AAAA — 名前に対するIPv6アドレス
  • CNAME — 別名(「この名前は、あの名前の別名」)
  • MX — そのメールの宛先サーバ

登場人物メモ:

  • ※3 キャッシュ — 一度引いた答えの控え。2回目のアクセスが速い主因
  • ※4 TTL — 控えの賞味期限。切れたら引き直す
この部分をもっと深く(上級

毎回ルートからたどるのは重いので、リゾルバは答えをTTLの間だけ控えます。控えるのは「見つかった答え」だけではありません。

  • ポジティブキャッシュ — 見つかった答え(例 Aレコード)をTTLの間だけ保持
  • ネガティブキャッシュ※4 — 「その名前は存在しない(NXDOMAIN)」という否定の結果も一定期間キャッシュする。無駄な再問い合わせを防ぐため、期間はそのゾーンのSOAレコードの値で決まる

答えは用途別のレコードとして管理されます。中級のA/AAAA/CNAME/MXに加え、上級では土台となる3つを押さえます。

  • A/AAAA — 名前に対するIPv4/IPv6アドレス
  • CNAME — 別名(この名前は別の名前のエイリアス
  • MX — メールの宛先サーバ
  • NS — そのゾーンの権威サーバを指すレコード。委任はこれで表現される
  • TXT — 任意の文字列。SPFやドメイン所有証明などに使う
  • SOA — ゾーンの管理情報(プライマリ・シリアル番号・各種TTL)。ネガティブキャッシュの期間もここ

登場人物メモ:

  • ※4 ネガティブキャッシュ — 「存在しない」という結果の控え。SOAの値で期間が決まる
やさしく言うと(初級
  • 電話帳 — 名前で引くと番号が分かる。DNSはこれのインターネット版
  • 登録された連絡先 — 「お母さん」をタップすれば番号を覚えていなくてもかけられる
  • 引っ越し — 番号(IP)が変わっても、名前を知っていればつながる

名前を覚えるのは人、番号で動くのは機械。その間をDNSがつないでいます。

⚠️ うまくいかないとき

  • 名前が存在しない — 権威サーバが「そんな名前はない」と返す(NXDOMAIN)
  • キャッシュが古い — 引っ越し直後、TTLが切れるまで古いIPへ案内される
  • リゾルバが応答しない — タイムアウトして予備のDNSへ。全滅なら接続不能
  • 設定ミス — レコードの打ち間違いで、意図しないサーバへ誘導される

この名前解決は、ページ表示の第一歩です。続きは URLを開くと何が起きるか で、接続・注文・組み立てまで通してたどれます。引いたIPで外へ出る出口の変換は NATとポート が担います。

やさしく言うと(初級
  • 名前が存在しない — 電話帳に載っていない。「サーバが見つかりません」になる
  • 電話帳が古い — 引っ越し直後は、しばらく古い番号を案内されることがある
  • 電話帳が応答しない — DNSサーバに届かないと、名前を打っても番号が引けない

名前から引いた番号(IP)で外へ出る出口は ルーター が担い、家の住所を公開住所に変える NATとポート とセットで働きます。

理解度チェック

そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。

1. リゾルバが知らない名前を引くとき、正しい問い合わせの順序はどれ?

2. DNSのTTLの役割として正しいのは?

3. リゾルバと権威サーバの役割の違いとして正しいのは?

4. 端末がリゾルバに「答えそのものを持ってきて」と頼む聞き方を何と呼ぶ?

5. AAAAレコードが返すのはどれ?

6. レコードのTTLを短く設定したときの傾向として正しいのは?

7. メールの宛先サーバを指し示すレコードの種類を英字2文字で答えてください。

8. 「この名前は、あの名前の別名」と別名を表すレコードの種類を英字で答えてください。