LoginSignup
0
2

More than 3 years have passed since last update.

今さら聞けないDNSの基礎知識

Posted at

今回はDNSの基本的な仕組みを改めて確認しようと思い、下記書籍の内容を一部まとめました。
非常にわかりやすく、体系的に知識を習得できました。

DNSとは

DNSにおける階層化と委任

ドメイン名に対応する形で管理範囲を階層化し、管理を委任することで管理を分散する。
委任によって管理を任された範囲を「ゾーン」と呼ぶ。

ゾーンを委任するためには、サブドメインを作ることから始める。
サブドメインは、委任元で作られる。
それぞれのゾーンの管理者は、「ネームサーバー」というサーバーで情報を管理する。

ネームサーバーに保存される情報は下記2つ。

  • そのゾーンに存在するホストのドメイン名とIPアドレス
  • 委任の情報
    • 委任先のネームサーバーの情報

親は子の委任の情報を管理し、委任先を案内する役割を持つ。

委任先をルートから順にたどり、最終的にドメインのIPアドレスを管理するネームサーバーにたどり着く仕組みが基本的な動作になる。

DNSとレジストリの関係

ドメイン名とDNSによる階層構造を導入した場合、それぞれの階層を管理する管理者(レジストリ)が必要になる。

レジストリが担う責任は下記。

  • 自分が委任されたゾーンを管理する
  • ゾーンを委任した場合、そのゾーンを委任した人が誰かを管理する

レジストリとは

レジストリの役割

ドメイン名を使うためには、レジストリに対して「このドメイン名を使いたい」という登録申請を行う。

レジストリの主な役割は下記。

  • 登録情報を蓄積し管理する登録簿「レジストリデーターベース」を運用する。
  • Whoisサービスの提供
    • 自身の管理するドメイン名の情報をWhoisサービスで提供する。
  • ネームサーバーの運用

Whoisとその役割

Whoisは、ドメイン名やIPアドレスのレジストリが、管理する情報をインターネットに公開し、利用者が参照できるようにするサービス。

レジストリ・レジストラモデル

ドメイン名の登録管理を、下記の通り分離する。

  • ドメイン名の一元管理を行う役割を担うレジストリ
  • ドメイン名登録者からの申請を取り次ぐレジストラ

登録されるドメイン名を一意に保ちつつ、価格やサービスにおける多様性を確保するため。

ドメイン名を使えるようにする

登録したドメイン名を使ってWebサイトにアクセスできるようにするためには、ネームサーバーを登録する必要がある。

最近では、ネームサーバーを提供する事業者のサービスを利用することも一般的。

自分でネームサーバー(以下、NS)を運用する場合は下記。

  • 自分のドメイン名を取り扱うNSをインターネット上で動かす
    • このNSはインターネットのどこからでもアクセスできるようにする必要がある
  • 指定したドメイン名の情報をNSに設定する
  • NSがインターネットから聞かれたことに答えられるか確認する

名前解決

階層構造取る場合に、子の情報を参照する際は、親が子に委任しているという情報を返す必要がある。

実際に階層構造をたどって名前解決すると、負荷と時間がかかる。
そこで、名前解決を担当する別サーバーを準備し、名前解決を代行する仕組みが考えられた。

一定時間、代行サーバーは名前解決の情報を保持する。
時間内に代行サーバーに要求がこれば、保持している情報を返す。

名前解決に必要なこと

委任元(親)が応答する委任先(子)のNS情報のことを、委任情報という。

正しい委任情報が登録されなければ、名前解決ができなくなってしまう。

DNSの構成要素

  1. 情報がほしい人
  2. 名前解決をする人
  3. 情報を提供する人

上記をそれぞれ、下記と呼ぶ。

  1. スタブリゾルバー
  2. フルリゾルバー、フルサービスリゾルバー
  3. 権威サーバー

スタブリゾルバー

PCやスマホの機器上で動作し、フルリゾルバーに名前解決を依頼する。
スタブリゾルバーからフルリゾルバーへ名前解決を依頼することを、「名前解決要求」という。
スタブには「末端」という意味がある。

フルリゾルバー

主な役割は下記。

  • 名前解決の実行
  • 名前解決の際に得られた情報を蓄積する
    • しばらくの間蓄積する仕組みのことを、「キャッシュ」という

権威サーバー

権威サーバーは自分が委任を受けたゾーンの情報と、自分が委任しているゾーンの委任情報を保持する。
これまでNSとよんでいたサーバーが、権威サーバー。

自分が保持している情報のみを応答する。
ゾーン内の情報と、委任情報のみを応答する。

スタブリゾルバーやフルリゾルバーは問い合わせの際、知りたい情報の名前(ドメイン名)と種類(タイプ)を指定する。

権威サーバーはそのゾーンの設定内容(ゾーンデータ)を「リリースレコード」という形で保持する。
リソースレコードは、「ドメイン名」「タイプ」「クラス」という3種類の情報で構成される。

リソースレコード

よく使われるリソースレコードのタイプは下記。

  • A
    • IPv4アドレス
  • AAAA
    • IPv6アドレス
  • NS
    • そのゾーンの権威サーバーのホスト名
  • MX
    • そのドメイン宛の電子メールの配送先と優先度

冗長化

権威サーバーは複数台置かれることが普通。
冗長性の向上と負荷分散を図るため。
同一ゾーン内のどの権威サーバーに問い合わせても、同じ応答を得ることができる。
この仕組を「ゾーン転送」と呼ぶ。

ゾーン転送では、ゾーンデータを持つ権威サーバーがコピー元となり、コピー先の権威サーバーにゾーンデータをコピーする。
コピー元となるサーバーを「プライマリサーバー」、コピー先となるサーバーを「セカンダリサーバー」と呼ぶ。

権威サーバーが複数ある場合、フルリゾルバーはどの権威サーバーにアクセスすべきだろうか。

RTT(Round Trip Time)が短い権威サーバーに優先的に問い合わせる。

正引きと逆引き

ドメイン名に対応するIPアドレスを検索することを、「正引き」と呼ぶ。
その逆は「逆引き」。

リソースレコードの情報

SOA

委任により分割されたゾーンの境目をゾーンカットといい、ゾーンカットの小ゾーン側では、ゾーンカットのドメイン名をゾーン頂点という。
jpexample.jpを委任している場合、example.jpというドメイン名はゾーン頂点になる。
ゾーン頂点には、SOA(Start of Authority)リソースレコードを設定する。
委任されたゾーンを管理する際に必要な情報を設定する。

NS

委任に関する情報を設定する。
ゾーンカットの親側と、子側の双方のゾーンに設定する必要がある。

自分のゾーンのNSリソースレコードと、子側双方を設定する。

NSリソースレコードには、ゾーンの権威サーバーのホスト名を設定する。
ゾーンを管理する権威サーバーが複数ある場合、全てを列挙する。

権威サーバーについては、必要に応じてAレコードやAAAAレコードを登録する。

MX

設定したドメイン名のメールを受け取れるようにするための情報も、そのゾーンの権威サーバーへ設定する。
MXレコードには、メールサーバーの優先順位が符号なしの数値で設定されている。リストの中で最も小さい値のメールサーバーから順に、メールの配送を試みる。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2