中級では名前解決の流れ・キャッシュ・レコードを見ました。上級では、誰が答えを持つのか・どうたどるのか・その答えが本物だとどう保証するのか(DNSSEC)・盗聴からどう守るのか(暗号化DNS)という「信頼と防御の仕組み」を掘り下げます。
概要 — まず全体をつかむ
詳細 — 1段階ずつ追う
権威サーバとリゾルバ——本人と代理人
DNSの登場人物は役割で3つに分かれます。混同すると全体像がぶれます。
- スタブリゾルバ※1 — あなたの端末に組み込まれた最小の窓口。自分では探さず、フルサービスリゾルバに丸投げする
- フルサービスリゾルバ※2 — 実際に世界中をたどって答えを集める代理人。キャッシュを持つのもここ(キャッシュDNSサーバとも呼ぶ)
- 権威サーバ※3 — そのドメインの答えを正式に保持する本人。ゾーン(管理範囲)ごとにプライマリとセカンダリで冗長化する
つまり「端末が代理人に頼み、代理人が本人に聞く」二段構えです。答えを持っているのは常に権威サーバで、リゾルバはあくまで探して控える係にすぎません。
登場人物メモ:
- ※1 スタブリゾルバ — 端末側の最小窓口。探索はせず丸投げする
- ※2 フルサービスリゾルバ — 階層をたどって答えを集めキャッシュする代理人
- ※3 権威サーバ — ゾーンの答えを正式に持つ本人。プライマリ/セカンダリで冗長化
やさしく言うと(中級)
DNSの答えを実際に探しに行くのがリゾルバ※1です。リゾルバは、自分が知らなければ住所帳の階層を上から順にたどって答えを持ち帰ります。
- リゾルバ(フルサービスリゾルバ)— あなたの代わりに世界中へ聞いて回る窓口
- 権威サーバ※2 — 「この名前の答えはこれ」と正式に持っているサーバ
この2つは役割が違います。リゾルバは「聞いて回る人」、権威サーバは「答えを持っている本人」です。
登場人物メモ:
- ※1 リゾルバ — 名前解決を代行する窓口。ふつうプロバイダかルーターにある
- ※2 権威サーバ — そのドメインの答えを正式に管理するサーバ
ルートからたどる——反復問い合わせと再帰
中級で見た「ルート→TLD→権威」の流れを、問い合わせの種類まで正確にします。ここは取り違えやすい要所です。
-
再帰問い合わせ — 端末(スタブ)がフルサービスリゾルバへ出す「答えそのものを持ってきて」という依頼。受けた側が最後まで責任を持つ
-
反復問い合わせ — リゾルバがルート・TLD・権威へ順に出す「次はどこに聞けばいい?」という問い合わせ。各サーバは紹介(委任)だけを返す
-
ルートサーバ — 世界の目次。
.comなどTLDの権威の在りかを返す(13系統の名前で運用され、実体はAnycastで多数) -
TLDサーバ —
.comの目次。example.comの権威の在りかを返す -
権威サーバ —
example.com本人。最終的なレコードを返す
アニメーション『DNSの名前解決(再帰)』を開く
- あなた(リゾルバ) — 名前からIPを調べる係。知らなければ上位へ聞きに行く
- ルートサーバ — 住所帳の最上位(世界の目次)。「.com」の担当を教えてくれる
- TLDサーバ(.com) — 「.com」を束ねる担当。「example.com」の担当を教えてくれる
- 権威サーバ(example.com) — この名前の最終回答(Aレコード)を持つサーバ
要点は「再帰は端末→リゾルバの1回だけ・リゾルバから上位への往復はすべて反復」という非対称です。リゾルバが階層を上りながら委任をたどり、最後に得た答えを1つにまとめて端末へ返します。
やさしく言うと(中級)
リゾルバが答えを持っていないとき、階層を上からたどります。
- リゾルバがルートサーバに聞く(「.com はどこが管理?」)
- TLDサーバ(.com の担当)に聞く(「example.com はどこが管理?」)
- 権威サーバ(example.com 本人)に聞く(「IPアドレスは?」)
- 得られた答えを、リゾルバがあなたに返す
あなたの端末がリゾルバに「答えそのものを持ってきて」と頼む聞き方を再帰問い合わせ、リゾルバが各サーバに「次はどこへ聞けばいい?」と紹介をたどって聞くやり取りを反復問い合わせと呼びます。
アニメーション『DNSの名前解決(再帰)』を開く
- あなた(リゾルバ) — 名前からIPを調べる係。知らなければ上位へ聞きに行く
- ルートサーバ — 住所帳の最上位(世界の目次)。「.com」の担当を教えてくれる
- TLDサーバ(.com) — 「.com」を束ねる担当。「example.com」の担当を教えてくれる
- 権威サーバ(example.com) — この名前の最終回答(Aレコード)を持つサーバ
キャッシュ・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の値で期間が決まる
やさしく言うと(中級)
毎回この階層を全部たどると遅いので、一度引いた答えはキャッシュ※3にしばらく残します。
- TTL※4 — 答えの賞味期限。この期間はキャッシュを使い回せる(2回目が速い理由)
- TTLが短いと最新に追随しやすく、長いと負荷は減るが更新が遅れる
答えは用途別のレコードとして管理されます。
- A — 名前に対するIPv4アドレス
- AAAA — 名前に対するIPv6アドレス
- CNAME — 別名(「この名前は、あの名前の別名」)
- MX — そのメールの宛先サーバ
登場人物メモ:
- ※3 キャッシュ — 一度引いた答えの控え。2回目のアクセスが速い主因
- ※4 TTL — 控えの賞味期限。切れたら引き直す
DNSSEC——署名で答えの正当性を守る
素のDNSには弱点があります。返ってきた答えが本物か確かめる手段がないのです。ここを埋めるのが DNSSEC です。
- 権威サーバは各レコードに RRSIG(署名)を付け、検証用の公開鍵を DNSKEY で公開する
- 上位ゾーンは子ゾーンの鍵の指紋を DS レコードとして持ち、「この子の鍵は正しい」と保証する
- こうしてルート→TLD→権威と署名が数珠つなぎになり(信頼の連鎖)、応答が改ざんされていないことをたどって検証できる
考え方は 電子署名 とまったく同じで、「秘密鍵で署名し公開鍵で検証する」を階層に適用したものです。重要なのは、DNSSECは暗号化ではないという点。答えは平文のまま流れ、守るのは「盗聴」ではなく「すり替え」です。
キャッシュポイズニングと対策
DNSSECが必要な理由が、キャッシュポイズニング(キャッシュ汚染)です。
- 攻撃の筋 — リゾルバが権威に問い合わせている隙に、攻撃者が偽の応答を先回りで送り込む。当たればリゾルバは偽IPをキャッシュし、以後その名前のアクセスが攻撃者のサーバへ吸い込まれる
- なぜ成立しうるか — 素のDNSはUDPで、応答の正しさをトランザクションIDと送信元ポートの一致でしか確かめない。ここが推測されると偽装が通る(カミンスキー型攻撃)
- 当座の対策 — トランザクションIDと送信元ポートをランダム化し、偽応答を当てにくくする
- 根本の対策 — DNSSEC。署名を検証すれば、たとえ偽応答が先に届いても「署名が合わない」として捨てられる
つまりポート乱数化は「当たりにくくする」確率的な守り、DNSSECは「偽物を数学的に弾く」本質的な守り、という違いです。
Anycast——同じIPを世界中に置く
ルートサーバや大規模DNSは、Anycastで運用されます。
- 同じIPアドレスを世界中の複数拠点から広告し、利用者は経路的に最も近い拠点へ自動的に届く
- 効果は3つ——低遅延(近い拠点に当たる)・負荷分散(拠点で分ける)・DDoS耐性(攻撃も拠点ごとに吸収される)
- 「13のルートサーバ」が世界の膨大なアクセスを捌けるのは、実体がAnycastで数百拠点に散っているからです
暗号化DNS——DoHとDoT
DNSSECは「答えの正しさ」を守りますが、やり取り自体は丸見えです。誰がどのサイトを引いたかは経路上で観測できてしまいます。これを隠すのが暗号化DNSです。
- DoT(DNS over TLS)— DNSをTLSで包む。専用ポート853を使い、DNSだと分かる形のまま暗号化する
- DoH(DNS over HTTPS)— DNSをHTTPSに載せる。ポート443で普通のWeb通信に紛れるため、DNSだけを狙って遮断・監視しにくい
- どちらも守るのは経路上の盗聴・改ざんであり、DNSSEC(出自の署名)とは目的が別・両立可能
この名前解決はページ表示の第一歩です。引いたIPで実際に接続・注文・組み立てへ進む全体像は URLを開くと何が起きるか でたどれます。
理解度チェック
そのまま解けます(成績は保存されません)。無料アカウントを作ると、学習の記録と進捗の山登りが始まります。
問1. DNSSECが提供する保証として正しいのは?
問2. 暗号化DNS(DoH/DoT)とDNSSECの違いとして正しいのは?
問3. 再帰問い合わせと反復問い合わせの関係として正しいのは?
問4. 「その名前は存在しない(NXDOMAIN)」というネガティブキャッシュの保持期間を決めるのはどれ?
問5. キャッシュポイズニングに対する「送信元ポートのランダム化」と「DNSSEC」の位置づけとして正しいのは?
問6. ルートサーバや大規模DNSで使われるAnycastの説明として正しいのは?
問7. 親ゾーンが子ゾーンの権威サーバを指し示し、委任を表現するのに使うレコードの種類を英字2文字で答えてください。
問8. DoH(DNS over HTTPS)が普通のWeb通信に紛れるために使うポート番号を数字で答えてください。