ITの教科書検索

第5章 アプリケーション層|5-1|コース全体 19本中16本目

入門読了 約8分更新日 2026-09-27

DNSとは ― 名前解決のしくみ

DNSとは、ドメイン名をIPアドレスに変える仕組みです。キャッシュDNSサーバがルート・TLD・権威サーバの順にたどる流れと、再帰問い合わせと反復問い合わせの違いを図で解説します。

目次
  1. DNSは名前をIPアドレスに変える
  2. 名前解決の流れ
  3. 反復問い合わせと再帰問い合わせ
  4. キャッシュとTTL
  5. 主要なレコードの種類
  6. 使うポートとプロトコル
  7. 練習問題

通信で使われるのはIPアドレス。名前から住所を引くのがDNS

通信で使う住所はIPアドレスですが、人間が覚えて打ち込むにはwww.example.com のような名前の方が向いています。この名前からIPアドレスを引く仕組みがDNS(Domain Name System)です。このような名前を、ドメイン名と呼びます。

DNSの実体は、世界中に分散した住所録です。PCは名前を調べるとき、近くのDNSサーバに代わりに調べてもらいます。このサーバをキャッシュDNSサーバと呼びます。

キャッシュDNSサーバは、住所録を分担して持つサーバを上から順にたどります。たどり着いた答えのIPアドレスを、PCに返します。

名前解決の流れ:キャッシュ → ルート → TLD → 権威

www.example.com のIPアドレスを調べる例で、問い合わせの順番を追います。

  1. 1

    PC内のキャッシュとhostsファイルを先に見る

    PCは外部に問い合わせる前に、自分の中に答えがないかを確かめます。確かめる場所の1つは、過去に調べた答えの控えです。この控えをDNSキャッシュと呼びます。

    もう1つは hosts ファイルです。このファイルには、名前とIPアドレスの対応を手動で書いておけます。どちらかに答えがあれば、手順2以降は行われません。

  2. 2

    PCがキャッシュDNSサーバに聞く

    どちらにも答えがなければ、PCはキャッシュDNSサーバへ問い合わせます。このサーバは、PCに設定されています。そのIPアドレスは、DHCPによって自動で配られていることが多いです。

    PCは、最終的な答えまで丸ごと調べるように頼みます。PCの中で、こうして問い合わせる仕組みをスタブリゾルバと呼びます。キャッシュDNSサーバは、フルサービスリゾルバとも呼ばれます。

  3. 3

    キャッシュになければルートDNSサーバへ

    キャッシュDNSサーバは、まず自分のキャッシュを探します。過去に調べた答えが残っていなければ、ルートDNSサーバに問い合わせます。ルートDNSサーバは、住所録を分担して持つサーバのうち、一番上の階層を受け持つサーバです。

  4. 4

    ルートは「.comはここ」とTLDサーバを教える

    ルートDNSサーバは、最終的な答えを知りません。そこで、.comを管理するサーバの場所だけを教えます。 .comのような名前の一番右の部分を、TLD(Top Level Domain)と呼びます。この部分を管理するサーバがTLDサーバです。

    上の階層が、下の階層の管理をほかのサーバに任せることを委任と呼びます。ルートDNSサーバが返したのは、この委任の情報です。

  5. 5

    TLDサーバが権威DNSサーバの場所を教える

    キャッシュDNSサーバは、同じ質問をTLDサーバに送ります。TLDサーバは、example.comを管理するサーバの場所を教えます。そのドメインの答えを正式に持つサーバを、権威DNSサーバと呼びます。

  6. 6

    権威DNSサーバがIPアドレスを答える

    最後に、キャッシュDNSサーバは権威DNSサーバへ問い合わせます。権威DNSサーバは、203.0.113.50のような最終的なIPアドレスを返します。

再帰問い合わせ(1往復)反復問い合わせ(上から順に3往復)PC(スタブリゾルバ)キャッシュDNSサーバ(フルサービスリゾルバ)www.example.comのIPを教えて203.0.113.50ですルートDNSサーバ(すべての起点)www.example.comのIPは?.comの権威はTLDサーバへTLDサーバ(.com)(同じ質問をそのまま)example.comの権威は権威サーバへ権威DNSサーバ(example.com)(同じ質問をそのまま)203.0.113.50です
点線は問い合わせ、実線は回答です。左側のPCとキャッシュDNSサーバの間は、1往復だけで済みます。PCは、まるごと調べてもらう再帰問い合わせを送るからです。右側では、キャッシュDNSサーバが同じ質問を各サーバに送り直します。この問い合わせ方が反復問い合わせです。答えを知らないサーバは、委任の情報として次の行き先だけを教えます。そのため、3往復かかります。

何往復もするのは、キャッシュDNSサーバです。PCに返ってくるのは、最終的なIPアドレス1つだけです。PC自身が、ルートDNSサーバやTLDサーバに直接問い合わせることはありません。

反復問い合わせと再帰問い合わせの違い

上の図の左側と右側では、問い合わせの頼み方が違います。図の左側では、PCがキャッシュDNSサーバに「知らなくてもいいので、とにかく代わりに調べて最終的な答えだけ返して」と頼みます。この頼み方を再帰問い合わせと呼びます。頼まれたキャッシュDNSサーバは、自分で最後まで調べ切る責任を負います。

図の右側では、キャッシュDNSサーバがルート・TLD・権威の各サーバに「知っていれば答えて、知らなければ次に聞くべき場所を教えて」と頼みます。この頼み方を反復問い合わせと呼びます。

ルートDNSサーバやTLDサーバは、「自分は知らないが、この先のサーバなら知っている」という委任情報だけを返します。調べ切る責任は、キャッシュDNSサーバ側に残ったままです。

誰が誰に問い合わせるか種類答え方
PC → キャッシュDNSサーバ再帰問い合わせ最終的な答えだけを返す(1往復)
キャッシュDNSサーバ → ルート・TLD・権威反復問い合わせ知らなければ次の行き先だけを教える(複数往復)
キャッシュDNSサーバは、2つの役割を同時に持ちます。PCから見ると、再帰問い合わせを引き受ける側です。ルート・TLD・権威の各サーバから見ると、反復問い合わせを行う側です。

キャッシュとTTL:毎回ルートから聞かない理由

世界中のアクセスのたびにルートDNSサーバまで問い合わせていては、ルートDNSサーバが負荷に耐えられません。そこでキャッシュDNSサーバは、一度得た答えを保存しておきます。同じ質問が来たら、ルートまで聞きに行かずに、保存した答えをそのまま返します。

答えを保存してよい期間は、答えと一緒に届きます。DNSの応答には、秒単位の有効期間が付いているからです。この有効期間をTTL(Time To Live)と呼びます。日本語では生存時間と訳します。

TTLが切れると、キャッシュDNSサーバは答えを破棄します。改めて調べ直すのは、次に同じ質問が来たときだけです。

ただし、.comなどTLDサーバの委任情報は、別途長いTTLで残っていることが多いです。その場合は、ルートDNSサーバまで戻らずに、TLDサーバから先だけを調べ直します。

TTLを短くすると、IPアドレスの変更がすぐ反映されます。その代わり、キャッシュが早く切れます。そのぶん、キャッシュDNSサーバから権威DNSサーバへの問い合わせが増えます。

TTLを長くすると、問い合わせは減りますが、変更の反映は遅れます。TTLは、答えの新しさと問い合わせの効率のバランスを取るための値です。

ルーティングの記事で説明したIPヘッダにも、TTLがあります。IPヘッダのTTLは、ルータを1台通過するたびに1減る値です。DNSのTTLは、応答が持つ秒数です。同じ「TTL」という略語でも、何を数えているかが違います。

主要なレコードの種類

名前解決の例で、権威DNSサーバは www.example.com のIPアドレスとして 203.0.113.50 を返しました。DNSサーバは、このような名前と情報の対応を1件ずつ持っています。この1件ずつの情報をレコードと呼びます。

レコードにはいくつかの種類があります。よく出てくる5種類を説明します。

種別何を返すか
AIPv4アドレス
AAAAIPv6アドレス
CNAME別のドメイン名への別名(エイリアス)
MXメールを受け取るサーバの宛先
NSそのドメインを管理する権威DNSサーバ

ここまでの例の、名前からIPアドレスを引く動きには、AレコードとAAAAレコードを使います。

CNAMEは、あるドメイン名を別のドメイン名に付け替えるための別名です。最終的には、付け替え先のドメイン名がAレコードで解決されます。CDNを使うサイトは、CNAMEで名前をCDN側に向けます。送信側のメールサーバは、MXレコードで宛先のサーバを探します。その流れはメールが届く仕組みで説明しています。文字列を入れるTXTレコードは、メールの送信元を確かめるSPF・DKIM・DMARCの記事で使います。

1つの名前に、複数のAレコードを登録することもできます。答えの並び順を問い合わせごとに入れ替えれば、利用者のつなぎ先を複数のサーバに分けられます。この方法をDNSラウンドロビンと呼びます。専用の装置で振り分ける方法との違いは、ロードバランサの記事で比べています。

AWSのマネージド型のDNSサービスには、Amazon Route 53があります。Route 53でルーティングポリシーを使って振り分け先を変える方法は、Route 53の記事にあります。

使うポートとプロトコル

DNSの問い合わせと応答は、通常UDPの53番ポートを使います。UDPは、1回のやり取りで完結する軽い通信に向いています。多くのDNS問い合わせは、UDPで十分です。

応答のデータサイズが大きい場合は、TCPの53番ポートに切り替わります。サーバ間で大量のデータをやり取りする場合も同じです。TCPは、届いたかどうかを確かめながら送る方式です。

TCPとUDPの違いはTCP/UDPの記事で、ポート番号の基本はポート番号の記事で確認できます。DNSサーバに実際に問い合わせて答えを見るには、dig や nslookup を使います。出力の読み方は、netstat・ss・digの記事を見てください。

DNSの安全性を高める拡張には、目的の違う2種類があります。

1つは、答えが途中で書き換えられていないかを検知する仕組みです。検知には、応答に付けた電子署名を使います。この仕組みをDNSSECと呼びます。DNSSECは、通信内容自体は暗号化しません。

もう1つは、問い合わせと応答のやり取り自体を暗号化する仕組みです。経路上の第三者に読まれないようにします。HTTPSで暗号化する方式をDoH(DNS over HTTPS)と呼びます。TLSで暗号化する方式はDoT(DNS over TLS)です。

DNSの応答は、問い合わせより大きくなることがあります。送信元を偽装した問い合わせでこの性質を悪用する攻撃が、DoS攻撃・DDoS攻撃の記事で説明する増幅攻撃です。

問い合わせと応答が実際のパケットとしてどう見えるかは、Wiresharkの記事で確かめられます。

練習問題(全5問)

Q1キャッシュDNSサーバのキャッシュが空の状態で、ある名前の問い合わせを受けたとき、最初に問い合わせるのはどのサーバ?
Q2再帰問い合わせの説明として正しいものは?
Q3ルートDNSサーバに「www.example.comのIPは?」と問い合わせたとき、ルートDNSサーバが返す内容として正しいものは?
Q4キャッシュとTTLの説明として正しいものは?
Q5レコード種別の組み合わせとして正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

おすすめの本 PR

この記事の内容を扱っている本です。

目的別の本の選び方を見る

入門コースを読み進める

入門コース 全19本中16本目