DNS(Domain Name System)とは?名前解決とは?

目次
DNSとは何か?名前解決の仕組み
Webサイトを閲覧したり、メールを送受信したりするとき、私たちは普段あまり意識せずに「ドメイン名」を使っています。
たとえば、Webブラウザに www.example.com のような名前を入力すれば、目的のWebサイトが表示されます。しかし、コンピュータ同士の通信では、基本的にこのような名前ではなく、IPアドレスを使って相手を識別します。
この「人間にとって分かりやすいドメイン名」と「コンピュータが通信で利用するIPアドレス」を対応付ける仕組みが DNS です。
DNSとは
DNSは Domain Name System の略です。日本語では「ドメイン名システム」と呼ばれます。
DNSの主な役割は、ドメイン名とIPアドレスを対応付けることです。
www.example.com → 93.184.216.34
このように、ドメイン名からIPアドレスを調べる処理を 名前解決 と呼びます。
なぜDNSが必要なのか
もしDNSが存在しなければ、WebサイトにアクセスするたびにIPアドレスを直接入力しなければなりません。
しかし、IPアドレスは人間にとって覚えにくく、管理もしにくいものです。また、サーバ移転やクラウド環境の変更によってIPアドレスが変わることもあります。
DNSを使えば、利用者はドメイン名だけを覚えておけばよく、裏側のIPアドレスが変更されてもDNSの設定を変更することで対応できます。
名前解決の流れ
PCから www.example.com にアクセスする場合、大まかには次のような流れになります。
- PCがDNSキャッシュを確認する
- キャッシュに情報がなければDNSサーバへ問い合わせる
- キャッシュDNSサーバが情報を持っていれば結果を返す
- 情報がなければルートDNSサーバへ問い合わせる
- TLD DNSサーバへ問い合わせる
- 権威DNSサーバへ問い合わせる
- 最終的なIPアドレスを取得する
- PCへ結果が返される
- PCは取得したIPアドレスへ通信を開始する
DNSは階層構造になっている
DNSの大きな特徴は、階層構造になっている点です。
www.example.com
このドメイン名は、次のような階層で構成されています。
.:ルートcom:トップレベルドメインexample:セカンドレベルドメインwww:ホスト名またはサブドメイン
DNSは、この階層をたどりながら「どのDNSサーバに聞けばよいか」を順番に調べます。
ルートDNSサーバ
ルートDNSサーバは、DNS階層の最上位に位置するDNSサーバです。
ルートDNSサーバは、すべてのドメインのIPアドレスを直接知っているわけではありません。
たとえば www.example.com を調べる場合、ルートDNSサーバは「.com については、このDNSサーバに聞いてください」という情報を返します。
TLD DNSサーバ
TLDは Top Level Domain の略です。
.com、.jp、.net などが代表的なTLDです。
TLD DNSサーバは、そのトップレベルドメイン配下のドメイン情報を管理します。
たとえば、.com のTLD DNSサーバは、example.com の権威DNSサーバがどこにあるかを教えます。
権威DNSサーバ
権威DNSサーバは、特定のドメインに関する正式な情報を持っているDNSサーバです。
たとえば、example.com の権威DNSサーバは、次のような情報を管理します。
www.example.comのIPアドレスexample.comのメールサーバexample.comのTXTレコードexample.comのNSレコード
キャッシュDNSサーバ
キャッシュDNSサーバは、利用者のPCやサーバからDNS問い合わせを受け取り、名前解決を代行するDNSサーバです。
問い合わせ結果を一時的に保存することで、同じドメイン名への問い合わせを高速化します。
家庭用ルータ、プロバイダのDNSサーバ、企業内DNSサーバ、Google Public DNS、Cloudflare DNSなどがキャッシュDNSサーバとして使われます。
DNSキャッシュとTTL
DNSでは、問い合わせ結果を一定時間キャッシュできます。
このキャッシュ時間を制御する値が TTL です。TTLは Time To Live の略です。
www.example.com. 3600 IN A 93.184.216.34
この例では、www.example.com のAレコードが3600秒キャッシュされることを意味します。
TTLが長いとDNS問い合わせの回数を減らせますが、DNS変更後に古い情報が残りやすくなります。
TTLが短いと変更は反映されやすくなりますが、DNS問い合わせの回数は増えます。
代表的なDNSレコード
| レコード | 役割 |
|---|---|
| Aレコード | ドメイン名とIPv4アドレスを対応付ける |
| AAAAレコード | ドメイン名とIPv6アドレスを対応付ける |
| CNAMEレコード | 別名を定義する |
| MXレコード | メールサーバを指定する |
| TXTレコード | 任意の文字列情報を登録する |
| NSレコード | 権威DNSサーバを指定する |
| PTRレコード | IPアドレスからホスト名を調べる逆引きに使う |
Aレコード
Aレコードは、ドメイン名とIPv4アドレスを対応付けるレコードです。
www.example.com. 3600 IN A 192.0.2.10
AAAAレコード
AAAAレコードは、ドメイン名とIPv6アドレスを対応付けるレコードです。
www.example.com. 3600 IN AAAA 2001:db8::10
CNAMEレコード
CNAMEレコードは、ある名前を別の名前の別名として扱うためのレコードです。
blog.example.com. 3600 IN CNAME example.com.
MXレコード
MXレコードは、メール配送先のメールサーバを指定するレコードです。
example.com. 3600 IN MX 10 mail.example.com.
先頭の数値は優先度を表し、数値が小さいほど優先度が高くなります。
TXTレコード
TXTレコードは、任意の文字列情報を登録するためのレコードです。
現在では、SPF、DKIM、DMARC、Google Search Consoleの所有権確認、Google WorkspaceやMicrosoft 365のドメイン確認などでよく使われます。
example.com. 3600 IN TXT "v=spf1 include:_spf.example.net ~all"
NSレコード
NSレコードは、そのドメインを管理する権威DNSサーバを指定するレコードです。
example.com. 3600 IN NS ns1.example.com.
example.com. 3600 IN NS ns2.example.com.
DNSで使われるポート番号
DNSは通常、UDPの53番ポートを使います。
DNS問い合わせは小さなデータで済むことが多いため、UDPが使われます。
ただし、応答サイズが大きい場合やゾーン転送を行う場合には、TCPの53番ポートも使われます。
Webアクセス時のDNS処理
ブラウザに次のURLを入力したとします。
https://www.example.com/
このとき、内部では次のような処理が行われます。
- ブラウザがURLを解釈する
www.example.comのIPアドレスをDNSで調べる- IPアドレスが分かる
- そのIPアドレスへTCP接続を開始する
- HTTPSの場合はTLSの処理を行う
- HTTPリクエストを送信する
- Webサーバからレスポンスを受け取る
- ブラウザがHTMLやCSSを表示する
DNSとhostsファイル
DNS名前解決の前に、OSはhostsファイルを確認することがあります。
Linuxでは一般的に次の場所にあります。
/etc/hosts
Windowsでは一般的に次の場所にあります。
C:\Windows\System32\drivers\etc\hosts
hostsファイルに次のような設定があれば、DNSへ問い合わせる前にこの内容が参照されます。
192.0.2.10 www.example.com
DNSが原因のトラブル例
ドメイン名が引けない
DNSサーバが停止している、DNS設定が間違っている、DNSサーバへ到達できない、といった理由で名前解決に失敗することがあります。
古いIPアドレスに接続される
DNSレコードを変更したあとも、キャッシュに古い情報が残っている場合があります。
メールが届かない
MXレコードが間違っている、SPFやDKIM、DMARCの設定に問題がある、逆引きDNSが適切でない、といった理由でメール配送に問題が発生することがあります。
digコマンドでDNSを確認する
DNSの確認には、dig コマンドがよく使われます。
dig www.example.com A
MXレコードを確認する場合は、次のように実行します。
dig example.com MX
特定のDNSサーバへ問い合わせる場合は、次のように指定します。
dig @8.8.8.8 www.example.com A
nslookupコマンド
DNS確認コマンドとしては、nslookup もよく使われます。
nslookup www.example.com
Windows環境では特に利用される機会が多いコマンドです。
一方で、DNSレコードの詳細確認やトラブルシューティングでは、dig のほうが情報を確認しやすい場面があります。
DNS変更がすぐに反映されない理由
DNS設定を変更したのに、すぐに反映されないことがあります。
これは多くの場合、DNSキャッシュとTTLが関係しています。
権威DNSサーバ側で新しいIPアドレスに変更しても、キャッシュに古い情報が残っている間は古いIPアドレスが返されることがあります。
そのため、サーバ移転やメールサーバ切り替えの前には、事前にTTLを短くしておく運用がよく行われます。
DNSとメールの関係
DNSはWebだけでなく、メールにも深く関係しています。
メール配送では、送信側メールサーバが宛先ドメインのMXレコードを調べます。
たとえば、user@example.com 宛てにメールを送る場合、送信側メールサーバは example.com のMXレコードをDNSで確認します。
また、迷惑メール対策として、SPF、DKIM、DMARCなどのDNS設定も重要です。
DNSとクラウドサービス
クラウド環境でもDNSは重要です。
AWS、Azure、Google Cloudなどでは、DNSを使ってロードバランサ、仮想マシン、ストレージ、CDN、APIエンドポイントなどへアクセスします。
また、独自ドメインをクラウドサービスに接続する場合、CNAMEレコードやTXTレコードを設定する場面も多くあります。
DNSを理解するメリット
DNSを理解すると、ネットワークやサーバ運用の見え方が大きく変わります。
Webサイトにアクセスできないとき、単に「サーバが落ちている」と考えるのではなく、DNS、ネットワーク、Webサーバ、SSL証明書、アプリケーションなどに分けて原因を切り分けられます。
- ドメイン名が正しいIPアドレスを返しているか
- どのDNSサーバが応答しているか
- MXレコードが正しく設定されているか
- TXTレコードにSPFやDKIMが正しく登録されているか
- DNS変更が反映されているか
- キャッシュの影響を受けていないか
まとめ
DNSは、ドメイン名とIPアドレスを対応付けるための仕組みです。
人間にとって分かりやすい名前を、コンピュータが通信に利用できるIPアドレスへ変換することで、Webサイト、メール、クラウドサービスなどを自然に利用できるようにしています。
DNSの名前解決では、PC、キャッシュDNSサーバ、ルートDNSサーバ、TLD DNSサーバ、権威DNSサーバなどが連携します。
また、DNSにはAレコード、AAAAレコード、CNAMEレコード、MXレコード、TXTレコード、NSレコードなど、さまざまなレコードがあります。
DNSトラブルは、Webやメールの障害として表面化することが多くあります。そのため、DNSの基本構造、名前解決の流れ、キャッシュとTTL、代表的なレコード、digコマンドによる確認方法を理解しておくことは重要です。
DNSは普段は意識されにくい仕組みですが、インターネットや社内ネットワークを支える基盤技術の一つです。DNSを理解することで、Webアクセス、メール配送、クラウドサービス、サーバ運用の仕組みをより深く理解できるようになります。





