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

DNSとはなにか

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 にアクセスする場合、大まかには次のような流れになります。

  1. PCがDNSキャッシュを確認する
  2. キャッシュに情報がなければDNSサーバへ問い合わせる
  3. キャッシュDNSサーバが情報を持っていれば結果を返す
  4. 情報がなければルートDNSサーバへ問い合わせる
  5. TLD DNSサーバへ問い合わせる
  6. 権威DNSサーバへ問い合わせる
  7. 最終的なIPアドレスを取得する
  8. PCへ結果が返される
  9. 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/

このとき、内部では次のような処理が行われます。

  1. ブラウザがURLを解釈する
  2. www.example.com のIPアドレスをDNSで調べる
  3. IPアドレスが分かる
  4. そのIPアドレスへTCP接続を開始する
  5. HTTPSの場合はTLSの処理を行う
  6. HTTPリクエストを送信する
  7. Webサーバからレスポンスを受け取る
  8. ブラウザが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アクセス、メール配送、クラウドサービス、サーバ運用の仕組みをより深く理解できるようになります。