はじめに
URLとかURIは知ってるけど、DNSについてはあまり理解しておらず
危機感を感じたので、DNSについて勉強しようと思いました。
(あとQiitaでブログを書く習慣を身につけたい...)
本記事ではDNSを理解する上で必要な用語、仕組みを簡略的に
まとめる方針で書かせてもらいます。
(投稿主の文章力が壊滅的に乏しいです)
目次
- ドメイン名の構成
- DNSにおける階層化と委任の仕組
- レジストリ、レジストラ
- ドメイン名を登録する
- ドメイン名を使えるようにする
- DNSの構成要素
- DNSの処理の効率化と可用性の向上
- 参考文献
ドメイン名の構成
ドメイン
- 名前空間の範囲
ドメイン名
- その範囲を識別するために付けられた名前
- ドメイン名は文字列を「.(ドット)」で繋げた形でされる
- それぞれの文字列をラベルという
- https://example.co.jp
- info@example.jp
DNSにおける階層化と委任の仕組み
階層化と委任の仕組み
- ドメイン名に対応する形で管理範囲を階層化し、委任することで管理を分散する
- 委任した人(委任元)と委任された人(委任先)は「親」と「子」の関係になる
ゾーン
- 委任によって管理を任された範囲
- ゾーンを委任するためには、サブドメインを作ることから始める
- サブドメインは委任元で作られる
ネームサーバー
- ゾーンを管理するサーバー
- 以下の2種類の情報を管理する
- そのゾーンに存在するホストのドメイン名とIPアドレス
- それぞれのゾーンのネームサーバーが、ドメイン名とIPアドレスの対応づけを管理する
- 委任の情報
- 委任先(子)のネームサーバーの情報で、委任先(親)のネームサーバーが管理する
- そのゾーンに存在するホストのドメイン名とIPアドレス
レジストリ、レジストラとは
レジストリの役割
- IPアドレスやドメイン名の割り当て・登録を担当する組織
- ドメイン名を使えるようにするためには、レジストリに対して「このドメイン名を使いたい」という登録申請をする
- 登録情報を蓄積し管理する登録原簿「レジストリデータベース」の運用管理
- ネームサーバーの運用・管理
- Whoisサービスの提供
- レジストリが管理する登録・割り当て情報をインターネットに公開し、利用者が参照できるようにするサービス
レジストリ・レジストラモデル
- レジストリ:ドメイン名の一元管理を行う役割を担う
- レジストラ:ドメイン名登録者からの申請を取り次ぐ役割を担う
- 1つのTLDに対してレジストリは1つだが、レジストラは複数存在する
レジストラの役割
- 登録者からの登録申請を受け付ける
- レジストリデータベースへの登録依頼
- 自身が取り扱うドメイン名に関するWhoisサービスを提供する
- ドメイン名の登録申請を受け付けた登録者の情報を管理する
ドメイン名を登録する
登録者が行うこと
- ドメイン名が登録可能であるか調べる
- Whoisサービスで登録されていないドメイン名を調べる
- ドメイン名を申請可能な事業者を選ぶ
- 提出するべき情報を揃える
レジストラが行うこと
- 申請内容を確認する
- レジストリデータベースへの登録を申請する
レジストリが行うこと
- 登録申請の内容が登録要件(レジストリが定める登録要件)を満たしているか確認する
- レジストリデータベースに情報を登録する
- ドメイン名の登録が完了したら、レジストラへ登録完了通知を返す
- レジストラは登録者へドメイン名の登録完了を知らせる
ドメイン名を使えるようにする
登録者が行うこと
- 自分のドメイン名を取り扱うネームサーバーをインターネット上で動かす
- 登録したドメイン名の情報をネームサーバーに設定する
- ネームサーバーがインターネットから聞かれたことに答えられるか確認する
- 上記確認が完了したら、レジストラに、ネームサーバー情報の設定を申請する
レジストラが行うこと
- レジストリデータベースへネームサーバー情報を設定するための申請を、レジストリに提出する
レジストリが行うこと
- ネームサーバー情報をレジストリデータベースに登録し、レジストリの関するネームサーバーにその情報を設定する
- レジストリと登録者の関係がDNSにおける親子関係になる
DNSの構成要素
スタブリゾルバー
- 名前解決の窓口のような役割を持ち、パソコンやスマホで動作する (ブラウザ、アプリ)
- 自身では名前解決を行わず、予め設定されたフルリゾルバーに名前解決の依頼を出す(名前解決要求)
フルリゾルバー
- スタブリゾルバーから名前解決要求を受け付けて名前解決を行い、結果をスタブリゾルバーに返す
- スタブリゾルバーから名前解決要求を受け付けたフルリゾルバーは、以下の2つを行う
- 名前解決を行う
- 名前解決の際に得られた情報を蓄える(キャッシュ)
権威サーバー(ネームサーバー)の役割
- 自分が委任を受け付けたゾーンの情報と、自分が委任しているゾーンの委任情報を保持している
- ゾーンの設定内容(ゾーンデータ)を「リソースレコード」という形で保持する
リソースレコード
項目 | 意味 |
---|---|
ドメイン名 | example.jp |
TTL | キャッシュの保持時間 |
クラス | ネットワークの種類(IN) |
タイプ | 情報の種類 |
データ | クラスとタイプによって異なる、リソースレコードのデータ |
リソースレコードのタイプ
項目 | 意味 |
---|---|
A | IPv4 |
AAAA | IPv6 |
NS | 権威サーバーのホスト名 |
MX | 電子メール |
DNSの処理の効率化と可用性の向上
キャッシュ
- フルリゾルバーが権威サーバーの応答を保持することで2回目の名前解決に要する負荷と時間を軽減できる
ネガティブキャッシュ
- 目的のリソースレコードが存在しなかったという結果を保持する
TTL
- キャッシュの保持時間
- リソースレコードに含まれる
ゾーン転送
- 同じゾーンデータを持つ権威サーバーを複数台設置する仕組み
- プライマリサーバー:コピー元となる権威サーバー
- セカンダリサーバー:コピー先となる権威サーバー
RTT
- 問い合わせを送ってから応答が返るまでの時間
- 複数の権威サーバーがある場合、RTTをチェックして時間の短い権威サーバーを問い合わせる