DNS(ドメインネームシステム)とは?仕組みと種類を徹底解説【初心者向け完全ガイド】
DNS(Domain Name System:ドメインネームシステム)は、インターネットやコンピュータネットワークの仕組みを理解するうえで欠かせない基盤技術です。本記事では、DNSの基本概念から、DNSサーバーの種類、DNSクエリの種類、そしてDNS伝播の仕組みまで、体系的にわかりやすく解説します。
そもそもDNSとは何か?
ホスト名だけでは、通信したい相手のマシンやハードウェアが世界のどこに存在するのかを特定できません。そのため、インターネット上のすべての通信はIPアドレスによって行われています。
DNSサーバーは、ホスト名と、サービスが稼働しているマシンのIPアドレスを対応付ける(マッピングする)役割を担うデバイスです。人間にとって覚えやすい「example.com」のようなドメイン名を、コンピュータが理解できる「35.195.226.230」のようなIPアドレスへ変換する、いわばインターネットの電話帳と言えるでしょう。
DNSリゾルバ(DNS Resolver)とは
DNSリゾルバは、ISP(インターネットサービスプロバイダ)などが利用するコンピュータで、ユーザーから要求されたホスト名に対応するIPアドレスをデータベース内で検索(ルックアップ)し、その結果をユーザーへ返す役割を持ちます。DNS名前解決において中核となる存在です。
キャッシュとTTL(Time To Live)
DNSリゾルバは取得したデータをキャッシュします。たとえば、あるWebサイト example.com が IPアドレス 35.195.226.230 のマシンでホストされている場合、世界中のDNSリゾルバのキャッシュには次のような対応関係が保存されます。
example.com → 35.195.226.230
ここで、将来このサイトを別のサーバー(IPアドレス 35.192.247.235 など)へ移行したとしましょう。DNS伝播(プロパゲーション)が完了するまでの間、世界中のリゾルバのキャッシュには依然として古いIPアドレスが残っているため、従来の手段ではサイトへアクセスできない期間が発生する可能性があります。
リゾルバのキャッシュにレコードが保持される時間のことをTTL(Time To Live)と呼びます。TTLの値は、ドメインを購入したレジストラ(ドメイン登録業者)の管理画面から設定できます。
DNSサーバーの種類
1. ルートDNSサーバー(Root DNS Server)
ルートDNSサーバーは、すべてのTLD(トップレベルドメイン)DNSサーバーのアドレスを管理しているサーバーです。ホスト名からIPアドレスを取得する過程で、最初に問い合わせを受けるのがこのルートDNSサーバーです。
2016年時点で、世界には13のルートDNSサーバー(A〜Mと命名されています)が存在します。ただし、これは「全世界からのリクエストを13台のマシンだけで処理している」という意味ではありません。実際には、各地に多数のサーバーが分散配置され、負荷を分散させています。
ルートDNSサーバーは、複数の異なる組織によって運営管理されています。
出典:https://iana.org
2. TLDドメインサーバー(TLD Domain Server)
TLDドメインサーバーは、トップレベルドメイン(.com、.jp、.orgなど)ごとに分類されたサーバーです。反復クエリにおいて、ルートDNSサーバーの次に問い合わせられるのが一般的で、各TLDに固有のレコード情報を保持しています。
たとえば medium.com のIPアドレスを要求する場合、「.com」のTLDドメインサーバーに対して問い合わせが行われます。TLDドメインサーバーは、該当ドメインを管理する権威DNSサーバー(Authoritative DNS Server)のアドレスをリゾルバへ返します。
図:TLDネームサーバーが権威ネームサーバーを指し示す様子
ここで疑問が生じます。「TLDネームサーバーは、どうやって権威ネームサーバーのアドレスを知るのか?」答えはシンプルです。GoDaddyやNamecheapなどのレジストラでドメインを購入すると、レジストラ側からTLDネームサーバーへドメイン情報が登録・通知されるためです。これにより、TLDネームサーバーは権威ネームサーバーと連携できるようになります。
なお近年では、サードパーティ製の権威ネームサーバーを利用できるレジストラも増えています。レジストラの管理画面から権威ネームサーバーを設定することが可能です。
3. 権威DNSサーバー(Authoritative DNS Server)
権威DNSサーバーは、リゾルバによる一連の問い合わせの最後に参照されるサーバーです。Aレコード、NSレコード、CNAMEレコード、TXTレコードなど、実際のDNSレコードを保持しています。
そのため、要求されたホスト名のIPアドレスが存在すればそれを返します。仮に権威DNSサーバーにも該当するレコードが存在しなかった場合は、エラーメッセージとともに処理が終了し、ネームサーバー間でのIPアドレス検索もそこで打ち切られます。
DNSクエリの種類
DNSクエリには、主に以下の3種類があります。
1. 再帰クエリ(Recursive Query)
再帰クエリは、ユーザーからリゾルバに対して発行されるクエリです。DNSルックアップにおける最初の問い合わせにあたります。リゾルバはISPであることもあればネットワーク管理者である場合もありますが、ほとんどの場合はISPが担っています。
2. 非再帰クエリ(Non-recursive Query)
非再帰クエリでは、リゾルバがすでに答えを把握しているため、他のネームサーバーへの追加の問い合わせを行わずに即座に応答します。ローカルDNSサーバーのキャッシュに目的のIPアドレスが保存されているか、あるいは確実にレコードを保持している権威ネームサーバーへ直接問い合わせることで、再帰的な問い合わせを回避できます。
3. 反復クエリ(Iterative Query)
反復クエリは、リゾルバがキャッシュを持っておらず結果を即座に返せない場合に行われます。このときリゾルバはルートDNSサーバーへリクエストを送信します。ルートDNSサーバーは、目的のTLDドメインサーバーの場所を把握しています。
たとえば medium.com のIPアドレスを取得しようとする場合、ルートDNSサーバーは「.com」TLDサーバーのアドレスを保持しており、それをリゾルバへ返します。続いてリゾルバはTLDサーバーにIPアドレスを問い合わせます。TLDドメインサーバー自身はIPアドレスを直接知らないかもしれませんが、medium.com を管理する権威DNSサーバーのアドレスは把握しています。
DNS名前解決の流れを図解
理論の説明はここまでにして、実際の流れをステップごとに見ていきましょう。
図:DNS名前解決の全体像
- ユーザーがリゾルバへリクエスト: ユーザーは、IPアドレスを知りたいホスト名を指定してリゾルバに問い合わせます。これが再帰クエリです。
- リゾルバがキャッシュを確認: リゾルバは自身のキャッシュ内に該当するレコードが存在するかを調べます。
- キャッシュヒットの場合: キャッシュに存在すれば、そのままIPアドレスをユーザーへ返します。
- キャッシュミスの場合はルートDNSサーバーへ: キャッシュされていない場合、リゾルバは世界各地に存在するルートDNSサーバー(A〜Mの13台、2016年時点)へ反復リクエストを送信します。ルートDNSサーバーは要求されたドメインのTLDを特定します。たとえばホスト名が
medium.comならTLDは「.com」となり、ルートDNSサーバーは「.com」ドメインサーバーのエントリを持っているため、その結果をリゾルバへ返します。なお、リゾルバはすべてのルートドメインネームサーバーのアドレスを保持している必要があり、保持していない場合はDNSルックアップ自体が失敗する可能性があります。 - TLDドメインサーバーへの問い合わせ: リゾルバはさらにTLDドメインサーバーに対して、ドメインのIPアドレスを求める反復リクエストを送信します。TLDドメインサーバーは、要求されたドメインを管理する権威サーバーのアドレスを返します。
- 権威DNSサーバーが最終回答: 権威DNSサーバーには、ホスト名とIPアドレスを対応付けた実際のレコードが格納されているため、IPアドレスがリゾルバへ返され、リゾルバからユーザーへと返されます。
- レコードが見つからない場合: 権威ネームサーバーに一致するレコードが存在しなければ、「DNS_PROBE_FINISHED_NXDOMAIN」というエラーが発生し、要求されたホスト名のレコードが存在しないことが示されます。
- 結果のキャッシュ: リクエストが経由したすべてのネームサーバーでは、要求されたホスト名の結果がキャッシュされます。これにより、次に別のユーザーが同じドメインを要求した際には、すでにDNSキャッシュにレコードが存在する状態になります。
- 所要時間: DNSルックアップには最大4回のクエリが必要ですが、実際にかかる時間はわずか数ミリ秒程度です。
DNS伝播(DNS Propagation)とは
たとえば、DigitalOceanなどのプロバイダ上のIPアドレス「x」のマシンでWebサイトをホストしており、これを別のIPアドレス「y」のマシンへ移行したいとします。トラフィックを新しいIPアドレスへ誘導するには、権威レコード内のIPアドレスを変更する必要があります。
レジストラやネームサーバーの管理画面でレコードを更新しても、世界中のすべてのリゾルバのキャッシュに反映されるまでには時間がかかります。DNS伝播には最大で24〜72時間程度かかることがありますが、多くのISPがTTLを低めに設定しているため、実際にはそれより早く完了するのが一般的です。
まとめ
DNSは、人間が扱いやすいドメイン名をコンピュータ用のIPアドレスへ変換する、インターネットに不可欠な仕組みです。リゾルバ、ルートDNSサーバー、TLDドメインサーバー、権威DNSサーバーという階層構造と、再帰・非再帰・反復という3種類のクエリ、そしてTTLとDNS伝播の概念を理解することで、DNS全体の動作を深く把握できます。ドメイン移行やサーバー変更の際にも、今回学んだ知識がきっと役立つはずです。
-
WordPressブログのカスタマイズ入門:テーマのインストール方法を徹底解説
はじめに:ダッシュボードの基本を押さえよう ホスティングの設定とWordPressブログのインストールが完了したら、次はいよいよカスタマイズの段階です。この記事では、その第一歩となる「テーマのインストール」について詳しく解説します。WordPressのダッシュボードは、ブログのバックエンドにおける「ホーム画面」のような存在です。ここから、ブログの管理やカスタマイズを自由自在に行うことができます。 初期状態では、ダッシュボード左側のメニューは折りたたまれていますが、下部にある小さな矢印アイコンをクリックすると展開できます。各アイコンにマウスを合わせるとサブメニューが表示されますが、操作に
-
【Google Chrome】開いているすべてのタブのURLを一括コピーする2つの方法
複数のウェブページのリンクを同僚や友人と共有したいとき、開いているタブのURLを1つずつ手作業でコピーするのは非常に手間がかかります。実はGoogle Chromeには、開いているすべてのタブのURLを一度にまとめてコピーできる便利な方法があります。この記事では、その具体的なやり方を2つ紹介します。 方法1:ブックマーク機能を使う ブックマークとは、よく見るウェブサイトを保存しておき、後ですぐにアクセスできるようにする機能です。このブックマーク機能を応用すれば、開いているすべてのタブのURLをまとめて取得し、他の人と共有することも可能です。 手順 1. Google Chromeで「