この記事は、 「ネットワーク初級編|通信の仕組みをゼロから学ぶ」 の第21回です。
第4章では、DNS、DHCP、NAT、HTTPなど、普段のネットワーク利用を支える身近なサービスを学びます。
DNSとは?名前解決の仕組み・サーバー・レコードを初心者向けに図解
Webサイトへアクセスするとき、私たちはIPアドレスではなく、覚えやすいドメイン名を入力します。 この記事では、ドメイン名からIPアドレスを調べるDNSの役割、名前解決の流れ、キャッシュとTTL、主なDNSレコード、障害時の確認方法を図解します。
ブラウザへ https://www.example.com/ と入力しただけで、なぜ目的のWebサーバーへ接続できるのでしょうか。
ネットワーク通信で実際に宛先として使われるのはIPアドレスです。 そのため、通信を始める前に、ドメイン名に対応するIPアドレスを調べる処理が必要です。 この役割を担うのがDNSです。
この記事を読み終えるとできること
- DNSの役割を自分の言葉で説明できる
- 名前解決の問い合わせ順序を説明できる
- DNSキャッシュとTTLの意味を説明できる
- A・AAAA・CNAMEなどの主なレコードを区別できる
- DNS障害が疑われる状況を判断できる
- nslookupを使って名前解決を確認できる
DNSとは何か
DNSとは、ドメイン名とIPアドレスなどの情報を対応付け、 必要な情報を問い合わせによって取得できるようにした仕組みです。
DNSは Domain Name System の略です。 初心者向けには、よく「インターネットの電話帳」と説明されます。
電話帳では人の名前から電話番号を調べます。 DNSでは、Webサイトなどの名前から、通信先を示すIPアドレスを調べます。
| 人が扱いやすい情報 | 機器が通信に使う情報 |
|---|---|
www.example.com |
192.0.2.10 などのIPアドレス |
DNSは、Webサイト専用の仕組みではありません。
メールの配送先、利用するDNSサーバー、サービスの所在確認、IPアドレスから名前を調べる逆引きなど、さまざまな用途で使われます。
なぜDNSが必要なのか
DNSがなくても、IPアドレスを直接入力すれば通信できる場合があります。 しかし、すべてのWebサイトやサーバーのIPアドレスを人が覚えるのは現実的ではありません。
人が覚えやすい
数字のIPアドレスより、意味のあるドメイン名の方が覚えやすく、入力もしやすくなります。
IPアドレスを変更しやすい
サーバーのIPアドレスが変わっても、DNSの登録を変更すれば、利用者は同じ名前でアクセスできます。
複数のサーバーを使える
1つの名前に複数のIPアドレスを登録し、複数サーバーへ通信を分散させる構成も作れます。
役割ごとの情報を管理できる
Web接続先だけでなく、メール配送先や権威DNSサーバーなどもDNSレコードとして管理できます。
DNSがある場合のWebアクセス
ドメイン名は階層構造になっている
DNSは、世界中の名前情報を1台のサーバーで管理しているわけではありません。 ドメイン名を階層に分け、それぞれの範囲を分担して管理しています。
たとえば www.example.com. という名前は、右側から次のように分けられます。
右側ほど上位の階層
ドメイン名は、右側から左側へ向かうほど具体的になります。
com の管理者が、その下にあるすべてのWebサーバーのIPアドレスを直接管理しているわけではありません。
上位のDNSサーバーは、目的の情報そのものではなく、次にどのDNSサーバーへ問い合わせればよいかを案内します。
末尾のドットはルートを表します。通常のブラウザ入力では省略されるため、
www.example.com と書くことがほとんどです。
FQDNとは
階層上の位置を省略せずに表した完全な名前を、FQDN(Fully Qualified Domain Name)と呼びます。
たとえば www.example.com. はFQDNです。
現場では末尾のドットを省略し、www.example.com と記載することが一般的です。
DNSで使われる4つの役割
DNSの名前解決を理解するには、問い合わせに登場する役割を分けて考えることが重要です。
1.端末側のリゾルバー
パソコンやスマートフォンのOSにある機能です。 アプリケーションから名前解決の依頼を受け、設定されたDNSサーバーへ問い合わせます。
2.キャッシュDNSサーバー
端末の代わりに必要な情報を調べ、最終的な回答を返します。 過去の回答を一定時間保存するため、再問い合わせを高速化できます。
3.ルート・TLD DNSサーバー
目的のドメインを管理する権威DNSサーバーまで、次に問い合わせる場所を案内します。
4.権威DNSサーバー
担当するドメインについて正式な情報を保持し、Aレコードなどの回答を返します。
| 役割 | 主な仕事 | 持っている情報 |
|---|---|---|
| 端末側リゾルバー | アプリケーションから依頼を受けてDNS問い合わせを行う | 端末のキャッシュ、DNSサーバー設定など |
| キャッシュDNSサーバー | 端末に代わって名前解決し、最終回答を返す | 一時保存したDNS回答 |
| ルート・TLD DNSサーバー | 次に問い合わせる権威DNSサーバーを案内する | 下位の管理先情報 |
| 権威DNSサーバー | 担当ドメインの正式な情報を回答する | A、AAAA、MX、NSなどのDNSレコード |
初心者が混同しやすいポイント
キャッシュDNSサーバーは「代わりに調べるサーバー」、権威DNSサーバーは「担当範囲の正式な情報を持つサーバー」です。
DNSの名前解決はどのように進むのか
ここでは、利用者が www.example.com へアクセスする場合を例に、名前解決の流れを確認します。
-
ブラウザが名前解決をOSへ依頼する
ブラウザは、接続先ホスト名
www.example.comのIPアドレスを知る必要があります。 - 端末内の情報を確認する ブラウザやOSのキャッシュ、hostsファイルなどに利用できる情報があれば、その情報を使います。
- キャッシュDNSサーバーへ問い合わせる 端末に情報がなければ、設定されているDNSサーバーへ問い合わせます。
- キャッシュDNSサーバーがキャッシュを確認する 有効な回答が保存されていれば、外部へ問い合わせずに端末へ返します。
-
ルートDNSサーバーへ問い合わせる
キャッシュに情報がなければ、ルートDNSサーバーへ問い合わせ、
comを担当するDNSサーバーの情報を得ます。 -
comのTLD DNSサーバーへ問い合わせる
TLD DNSサーバーから、
example.comを担当する権威DNSサーバーの情報を得ます。 -
権威DNSサーバーへ問い合わせる
権威DNSサーバーから、
www.example.comに対応するIPアドレスなどの正式な回答を受け取ります。 - 回答を端末へ返してキャッシュする キャッシュDNSサーバーは回答を一定時間保存し、端末へ返します。
- 取得したIPアドレスへ通信を始める 名前解決が完了した後、ブラウザは取得したIPアドレスを使ってWebサーバーとの通信を始めます。
キャッシュに情報がない場合の問い合わせイメージ
再帰問い合わせと反復問い合わせ
| 問い合わせ | 意味 | 代表的な場面 |
|---|---|---|
| 再帰問い合わせ | 最終的な答え、または答えが得られない結果まで返してもらう | 端末からキャッシュDNSサーバーへの問い合わせ |
| 反復問い合わせ | 分かる範囲の回答、または次に問い合わせる先を教えてもらう | キャッシュDNSサーバーがルート・TLD・権威DNSへたどる処理 |
実際には、ルートやTLDへの問い合わせが毎回発生するわけではありません。 キャッシュDNSサーバーが必要な情報を保存していれば、途中の問い合わせを省略できます。
DNSキャッシュとTTL
DNSの問い合わせを毎回ルートからやり直すと、応答に時間がかかり、各DNSサーバーの負荷も高くなります。 そこで、問い合わせ結果を一時保存するキャッシュが使われます。
キャッシュがある場合
2回目以降の名前解決
TTLとは
キャッシュをいつまでも使い続けると、DNSの登録が変更された後も古い情報が残ってしまいます。 そこで、DNSレコードにはキャッシュしてよい時間を示すTTL(Time To Live)が設定されます。
| TTLの状態 | 動作 |
|---|---|
| TTLが残っている | 保存済みの回答を利用できる |
| TTLが0になる | キャッシュを期限切れとして扱い、必要に応じて再問い合わせする |
DNS変更がすぐに全利用者へ反映されるとは限りません。
権威DNSの設定を変更しても、利用者側やキャッシュDNSサーバーに以前の回答が残っている間は、古いIPアドレスが使われることがあります。
「DNSの浸透待ち」とは何か
DNS変更後に「浸透するまで待つ」と表現されることがあります。 実際には、変更情報がインターネット全体へ一斉に配送されているわけではありません。
多くの場合は、各場所に残っている古いキャッシュのTTLが切れ、新しい情報が再取得されるのを待っています。
主なDNSレコード
DNSに登録される情報をリソースレコード、またはDNSレコードと呼びます。 名前からIPアドレスを調べるAレコード以外にも、目的に応じて複数の種類があります。
| レコード | 主な役割 | 例 |
|---|---|---|
| A | 名前とIPv4アドレスを対応付ける | www.example.com → 192.0.2.10 |
| AAAA | 名前とIPv6アドレスを対応付ける | www.example.com → 2001:db8::10 |
| CNAME | ある名前を別の正式名へ対応付ける | shop.example.com → web.example.net |
| MX | メールを受け取るサーバーを指定する | example.com → mail.example.com |
| NS | そのドメインを担当する権威DNSサーバーを示す | example.com → ns1.example.net |
| TXT | 文字列情報を登録する | メール認証やドメイン所有確認など |
| PTR | IPアドレスから名前を調べる逆引きに使う | 192.0.2.10 → www.example.com |
AレコードとCNAMEレコードの違い
| レコード | 回答先 |
|---|---|
| A | IPv4アドレス |
| CNAME | 別のドメイン名 |
CNAMEで別名が返された場合、最終的なIPアドレスを得るために、その名前についてさらにAレコードやAAAAレコードを調べます。
正引きと逆引き
| 種類 | 調べる方向 | 主なレコード |
|---|---|---|
| 正引き | 名前からIPアドレスを調べる | A、AAAA |
| 逆引き | IPアドレスから名前を調べる | PTR |
正引きで得た名前と、逆引きで得た名前が必ず同じになるとは限りません。 正引きと逆引きは別々の情報として管理されます。
DNSが使うポート番号
DNSは、一般的にポート番号53を使用します。 通信にはUDPとTCPの両方が使われます。
| 通信方式 | 代表的な用途 |
|---|---|
| UDP 53 | 通常の名前解決で広く使われる |
| TCP 53 | 応答が大きい場合の再問い合わせやDNSサーバー間の一部通信などで使われる |
ファイアウォールでUDP 53だけを許可すれば十分とは限りません。 DNSを正常に利用するには、構成や用途に応じてTCP 53も考慮する必要があります。
少し先の知識:暗号化DNS
通常のDNS問い合わせは、問い合わせ内容自体を暗号化しない形で送られることがあります。 DNS over HTTPS(DoH)やDNS over TLS(DoT)は、DNS問い合わせを暗号化して送るための方式です。 初級段階では「DNSには従来の53番ポート以外を使う方式もある」と知っておけば十分です。
DNSとURLの関係
DNSは、ブラウザに入力したURL全体をIPアドレスへ変換するわけではありません。 URLの中にあるホスト名の部分を名前解決します。
| 部分 | 例 | DNSとの関係 |
|---|---|---|
| スキーム | https |
どの通信方式を使うかを示す |
| ホスト名 | www.example.com |
DNSでIPアドレスなどを調べる |
| パス | /products/item1 |
Webサーバーへ接続した後、HTTPリクエストで指定する |
DNSで分かるのは、主に「どこへ接続するか」です。 「Webサーバーのどのページを取得するか」は、DNSではなくHTTPやHTTPSの処理で指定します。
DNS障害はどのように見分けるのか
DNSに問題があると、ネットワーク自体は使えるのに、ドメイン名を使った通信だけ失敗することがあります。
IPアドレスでは通信できる
IPアドレスを直接指定すると到達できるのに、名前では到達できない場合、DNSの名前解決が疑われます。
すべての名前解決が失敗する
端末に設定されたDNSサーバー、DNSサーバーへの経路、ファイアウォール、キャッシュDNSサーバーの障害などを確認します。
特定の名前だけ失敗する
対象ドメインの権威DNS設定、レコード登録、委任、期限切れキャッシュなどが原因候補です。
古いIPアドレスが返る
端末やキャッシュDNSサーバーに、TTLが残った古い回答が保存されている可能性があります。
代表的なDNSエラー
| 表示例 | 意味のイメージ | 主な確認先 |
|---|---|---|
| NXDOMAIN | 問い合わせた名前が存在しないという回答 | 入力ミス、レコード未登録、対象ドメイン |
| SERVFAIL | DNSサーバーが正常な回答を返せなかった | 権威DNS、委任、DNSSEC、上位問い合わせ |
| Timeout | 一定時間内に回答を受け取れなかった | DNSサーバーへの経路、FW、DNSサーバー状態 |
| 古い回答 | 変更前の情報がキャッシュされている | TTL、端末キャッシュ、キャッシュDNS |
初心者向けの確認順序
- 入力したドメイン名に誤りがないか確認する 文字の打ち間違いや、存在しない名前への問い合わせではないかを確認します。
- 端末のDNSサーバー設定を確認する DNSサーバーのIPアドレスが正しく設定されているか確認します。
- DNSサーバーへ到達できるか確認する 経路や通信制御に問題がないか確認します。
- nslookupなどで名前解決を試す どのDNSサーバーが回答したか、どのIPアドレスが返ったかを確認します。
- 別の名前でも同じ症状か確認する すべての名前で失敗するのか、特定のドメインだけ失敗するのかを分けます。
- キャッシュの影響を確認する 古い回答が残っていないか、TTLや端末キャッシュを確認します。
IPアドレスを直接指定してWebサイトへ接続する確認には注意が必要です。
HTTPSの証明書や、1つのIPアドレスで複数サイトを提供する構成などにより、IPアドレスを直接入力しても正常表示されない場合があります。 「IP指定で表示できない=ネットワーク障害」とは限りません。
nslookupでDNSを確認する
Windowsでは、nslookup コマンドを使ってDNSの名前解決を確認できます。
実行結果では、主に次の項目を確認します。
- 問い合わせに使用したDNSサーバー
- 回答された名前
- 回答されたIPv4またはIPv6アドレス
- エラーやタイムアウトの有無
上の例では、端末が 192.0.2.53 のDNSサーバーへ問い合わせ、
example.com に対応するIPアドレスとして 192.0.2.10 を得ています。
問い合わせ先DNSサーバーを指定する
DNSサーバーを明示すると、通常利用しているDNSサーバーと別のDNSサーバーで回答が異なるかを比較できます。
Windowsでキャッシュを確認・削除する
ipconfig /displaydns:端末のDNSキャッシュを表示するipconfig /flushdns:端末のDNSキャッシュを削除する
キャッシュ削除は、古い情報が端末に残っている場合に有効です。 ただし、権威DNSの設定ミスやキャッシュDNSサーバー側の問題は、端末のキャッシュ削除だけでは解決しません。
Linuxでよく使われる確認コマンド
Linuxでは環境によって使用できるコマンドが異なります。
中級編では、dig の出力から応答コード、TTL、権威情報などを読み取る方法を詳しく扱います。
DNSに関するよくある勘違い
DNSは階層化・分散された仕組みです。ルート、TLD、各ドメインの権威DNS、キャッシュDNSなど、多数のサーバーが役割を分担しています。
DNSが名前解決するのは、URL内のホスト名です。ページのパスは、Webサーバーへ接続した後のHTTP通信で指定します。
以前の回答がキャッシュされている場合、TTLが切れるまで古い情報が使われることがあります。
通常の問い合わせではUDPが広く使われますが、応答が大きい場合などにはTCPも使われます。
名前解決に成功しても、TCP・QUIC、HTTPS、Webサーバー、ファイアウォールなど別の場所に問題があれば、Webサイトは表示できません。
ドメイン名で接続する場合、まず名前解決によって接続先IPアドレスなどを取得し、その後に実際の通信を開始します。
理解度チェック
記事の内容を確認するため、次の6問に答えてください。 解答を見る前に、一度自分で考えてみましょう。
問題1.DNSの主な役割として最も適切なものはどれですか。
- LANケーブルの断線を検出する
- ドメイン名とIPアドレスなどの情報を対応付ける
- Webページの内容を暗号化する
- 端末へIPアドレスを自動配布する
解答を見る
DNSは、ドメイン名からIPアドレスなどの情報を調べるための仕組みです。 IPアドレスの自動配布は、次の記事で扱うDHCPの役割です。
問題2.端末の代わりにルートDNSや権威DNSへ問い合わせ、最終回答を返す役割はどれですか。
- キャッシュDNSサーバー
- Webサーバー
- DHCPサーバー
- デフォルトゲートウェイ
解答を見る
キャッシュDNSサーバーは、端末の代わりに名前解決を行い、取得した回答を端末へ返します。
問題3.名前とIPv4アドレスを対応付けるDNSレコードはどれですか。
- MX
- PTR
- A
- NS
解答を見る
Aレコードは名前とIPv4アドレスを対応付けます。IPv6アドレスにはAAAAレコードを使います。
問題4.DNSキャッシュを利用できる時間を示す値は何ですか。
解答を見る
TTLはTime To Liveの略で、DNS回答をキャッシュとして保持できる時間の目安です。
問題5.DNSで一般的に使われるポート番号は何番ですか。また、UDPとTCPのどちらが使われますか。
解答を見る
通常の問い合わせではUDPが広く使われますが、応答が大きい場合などにはTCPも使用されます。
問題6.IPアドレスでは通信できるのに、ドメイン名では通信できません。最初に疑うべき仕組みは何ですか。
解答を見る
IP通信そのものはできていても、名前からIPアドレスを得られなければ、ドメイン名を使った通信は開始できません。
実践演習:DNS障害を切り分けよう
次の状況を読み、どこに問題がありそうか考えてください。
演習用ネットワーク
確認結果
課題1.どの機能に問題がありそうですか
課題1の解答例を見る
DNSの名前解決に問題がある可能性が高いです。
IPアドレス 192.0.2.10 への通信は成功しているため、端末から外部までのIP通信はできています。
一方、DNSサーバー 192.168.1.53 から回答を受け取れていません。
課題2.次に確認する項目を3つ挙げてください
課題2の解答例を見る
- PCからDNSサーバー
192.168.1.53へ到達できるか - DNSサーバーのサービスが起動しているか
- UDP 53およびTCP 53がファイアウォールで遮断されていないか
- PCに設定されたDNSサーバーのIPアドレスが正しいか
- 別のDNSサーバーを指定した場合に名前解決できるか
課題3.名前解決の順番を並べ替えてください
次の項目を、キャッシュに情報がない場合の順番に並べてください。
- 権威DNSサーバーへ問い合わせる
- 端末がキャッシュDNSサーバーへ問い合わせる
- TLD DNSサーバーへ問い合わせる
- ルートDNSサーバーへ問い合わせる
- 取得した回答を端末へ返す
課題3の解答を見る
正解:B → D → C → A → E
端末から依頼を受けたキャッシュDNSサーバーが、ルート、TLD、権威DNSの順に問い合わせ、取得した回答を端末へ返します。
自分の言葉で説明する課題
最後に、次の質問へ自分の言葉で答えてください。
「DNSは何をしている仕組みですか?」とITを知らない人から質問されました。 30秒程度で説明してください。
説明例を見る
DNSとは、人が覚えやすいWebサイトなどの名前から、コンピューターが通信に使うIPアドレスを調べる仕組みです。 端末から問い合わせを受けたDNSサーバーは、必要に応じて複数のDNSサーバーをたどり、最終的な接続先情報を返します。
模範解答と同じ言葉でなくても問題ありません。
「名前からIPアドレスを調べる」「DNSサーバーが分担して回答する」「回答はキャッシュされる」 という要素を説明できれば、この記事の目標は達成です。
まとめ
- DNSは、ドメイン名とIPアドレスなどの情報を対応付ける仕組み
- ドメイン名は、ルートを頂点とする階層構造で管理される
- 端末は通常、キャッシュDNSサーバーへ名前解決を依頼する
- キャッシュに情報がない場合、ルート、TLD、権威DNSの順に情報をたどる
- 権威DNSサーバーは、担当ドメインの正式なDNSレコードを保持する
- DNS回答はキャッシュされ、TTLが切れるまで再利用される
- AはIPv4、AAAAはIPv6、CNAMEは別名、MXはメール配送先を表す
- DNSは通常ポート53を使い、UDPとTCPの両方が利用される
- IPアドレスでは通信でき、名前では失敗する場合はDNS障害が疑われる
- Windowsではnslookupやipconfigを使って名前解決とキャッシュを確認できる
DNSは、利用者が覚えやすい名前と、機器が通信に使うIPアドレスをつなぐ重要な仕組みです。 名前解決の順番を理解すると、Webサイトが表示できないときの切り分け範囲を広げられます。

コメント