DNSについて

日時:

昔DNSについて調べたときにまとめたもの.

ドメインとドメイン名とその構造

example.comやwww.example.co.jpのような文字列はドメイン名と呼ばれる.人間にとって比較的分かりやすいドメイン名にIPアドレスを紐づけることで,そのサーバをドメイン名で見つけられる.

TLD(Top Level Domain)とはドメイン名の一番最後につくcomとかnetなどで表される(ルードドメインのちょうど一つ下の)ドメインのこと.

TLDの子のドメイン(*.example.comだったらexampleのドメイン)は2LD(セカンドレベルドメイン)と呼ばれる.

ゾーンについて

そのドメイン名をネットワークで使えるようにするための仕組みとして,DNSがある.

DNSではドメインの木構造に合わせた管理・委任の仕組みを備えている.全てのドメインの情報を一元的に一か所で管理するわけではなく,各ドメインに対応させて情報を分散管理させる仕組みになっている.

権威サーバはそのゾーンの情報と委任したゾーンの委任情報をリソースレコード(各ドメインに関連付けられた情報)として保持する.

リソースレコードの概要

例えばcomドメインを含むゾーンの権威サーバでの

といった内容を含んだリソースレコードをテキスト形式で表すと以下のようになる.

example.com.     86400 IN NS   ns1.example.com.
example.com.     86400 IN NS   ns2.example.com.

ns1.example.com. 86400 IN A    192.0.2.59
ns2.example.com. 86400 IN A    192.0.2.60
ns1.example.com. 86400 IN AAAA 2001:db8:94d2::d12:2023
ns2.example.com. 86400 IN AAAA 2001:db8:94d2::d12:2024

一般に,リソースレコードをテキスト形式で表すと以下のようになる.

NAME TTL CLASS TYPE RDATA

名前解決

DNSの重要な役割の一つにドメイン名から対応するIPアドレスを見つけ出す名前解決がある.名前解決の流れは以下のとおり.

いくつか別の名称もある.

www.example.comというドメインを例にした,名前解決の手順とそれを表した図のは以下のようになる.

                  |        |--------->| .ドメイン(ルートドメイン)の
                  |        |<---------|        権威サーバ
                  |        | 
                  |        |--------->| .comドメイン(ルートドメイン)の                      
ブラウザ等 ⇌ スタブリゾルバ ⇌ | フルリゾルバ |<---------|        権威サーバ                 
                  |        |         
                  |        |--------->| .example.com(ルートドメイン)の                       
                  |        |<---------|        権威サーバ                      
  1. ブラウザ等のプログラムがwww.example.comの名前解決のためにスタブリゾルバを呼び出す.
  2. スタブリゾルバ自体は名前解決をせず,フルリゾルバに代わりに名前解決をするよう要求する(名前解決要求).
  3. フルリゾルバには過去に依頼されて得た応答結果を保持する仕組み(キャッシュ)がある.依頼されたフルリゾルバは,キャッシュを調べ,www.example.comに対応するIPアドレスの情報があるかを確認する.あればそれをスタブリゾルバに返す(この場合はここで名前解決終了).なければ次の4番へ.
  4. フルリゾルバはルートゾーンの権威サーバ(特にこれをルートサーバという)のIPアドレスなどの情報をあらかじめ持っている.これをもとに,ルートサーバにwww.example.comのIPアドレスを問い合わせる.
  5. ルートサーバはcomドメイン以下の情報はcomドメインのゾーンの権威サーバに委任していたため,その委任先の権威サーバのIPアドレスなどの情報を返す.
  6. フルリゾルバはその情報をキャッシュする.そして,その情報をもとに,comドメインのゾーンの権威サーバにwww.example.comのIPアドレスを問い合わせる.
  7. comドメインのゾーンの権威サーバはexample.comドメインに関する情報をexample.comドメインのゾーンの権威サーバに委任していたため,その委任先のサーバのIPアドレスなどの情報を返す.
  8. フルリゾルバはその情報をキャッシュする.そして,その情報をもとに,example.comドメインのゾーンの権威サーバにwww.example.comのIPアドレスを問い合わせる.
  9. example.comドメインのゾーンの権威サーバはwww.example.comドメインのIPアドレスの情報を保持していた(もしこれを別の権威サーバにさらに委任していたらまた今までのような手続きを繰り返す).その情報をフルリゾルバに返す.
  10. フルリゾルバはその情報をキャッシュする.結果が返ってきたため,それをスタブリゾルバに返す.その時間の間は再びwww.example.comの問い合わせが来たときはこのキャッシュした値を返す(上で述べた3番の手続き).
  11. スタブリゾルバはそのIPアドレスを呼び出し元のプログラム(ブラウザなど)に返す.
  12. そのIPアドレスを用いてwww.example.comにアクセスする.

このようにして,www.example.comのIPアドレスを得ることができる.

もしexample.comのドメイン名を登録申請し,サイトを立ち上げるためにwww.example.comというドメインを何かしらのウェブサーバに対応させるには以下の手続きをする.

  1. comを含むゾーンの権威サーバにexample.comの権威サーバの情報を登録する.
  2. www.example.comに関連付ける情報(ウェブサーバのIPアドレスなど)をexample.comを含むゾーンの権威サーバに登録する.

DNSは浸透しない

TTLの時間が経てばフルリゾルバのキャッシュは消える.そしたら再度権威サーバに問い合わせが行く.そのため,サイトをのっけてたサーバを移行してIPアドレスが変わったとしても,移行後も少なくともそのTTLの時間が経てばここの世にあるフルリゾルバは全て正しい値に更新されている.浸透するという表現に値するような手続きはない.

レジストリとレジストラおよびリセラ

ではexample.comといったドメインを登録申請する.その時対峙するのがレジストラ.

参考文献

  1. Mockapetris, P., "Domain names - concepts and facilities", RFC 1034, 1987, https://www.rfc-editor.org/info/rfc1034
  2. Mockapetris, P., "Domain names - implementation and specification", RFC 1035, 1987, https://www.rfc-editor.org/info/rfc1035
  3. Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS Terminology", RFC 8499, 2019, https://www.rfc-editor.org/info/rfc8499
  4. 株式会社日本レジストリサービス(JPRS)渡邉結衣・佐藤新太・藤原和典, 『DNSがよくわかる教科書』, SBクリエイティブ, 2018
  5. mochikoAsTech, 『DNSをはじめよう ~基礎からトラブルシューティングまで~ 改訂第2版』, 2019
  6. JPRS用語辞典, https://jprs.jp/glossary/