DNSサーバの概要

この記事ではDNSの仕組みの詳細までは取り上げていない。更に深い理解が必要であれば、こちらの書籍を参考にしてほしい。

この記事は、ドメイン取得代行事業者(お名前.comなど)が管理するDNSレコードの情報を編集するときに必要になる事前知識をまとめたものである。

DNS関連用語の確認

DNSの関連用語について確認する。

ドメイン

DNSで扱うドメインとは、ネットワーク上のコンピュータのグループ(集まり)を表す単位のこと。単位名としては「jp」、「com」、「org」などがあげられる。このドメインは階層構造(ツリー構造)になっており、頂点に「.」(ルートドメイン)が存在する。ドメイン名「www.lpi.or.jp.」は、「.」(ルートドメイン)に各ドメイン(「jp」,「or」,「lpi」)とホスト名「www」を連結させたものとなる。

FQDN

各ドメイン名(ルートサーバ「.」を除く)を省略せずに記述する場合、「Fully Qualified Domain Name」(完全修飾ドメイン名)と言う。例えば「www.lpi.or.jp」はFQDNと言える。

ゾーン

ドメイン名の管理において、あるDNSサーバ(ネームサーバ)が自ら管理するドメインの範囲のこと。管理権限(オーソリティ)を持つドメインとそのサブドメインが含まれるが、管理を他のサーバに委任したサブドメインはそのゾーンから外れる。

リソースレコード

DNSサーバーに登録する情報のこと。資源レコードとも呼ぶ。リソースレコードには登録情報別にいくつかのカテゴリがある。主なカテゴリとしては,一般的なホストのIPアドレス用のAレコード,メール・サーバー用のMXレコード,DNSサーバー用のNSレコード,別名定義用のCNAMEレコード,逆引き用のPTRレコード,管理者情報用のSOAレコードなどがある。

ネームサーバの3つの働き

ネームサーバとは、基本的にDNSサーバを指す。DNSサーバは以下の3つの働きが組み合わさって動作する。

DNSコンテンツサーバ

DNSコンテンツサーバ(権威DNSサーバや権威ネームサーバとも呼ばれる)は、ドメイン名とIPアドレスなどの対応付けを、ドメイン名空間の「ゾーン」と呼ばれる単位で管理する。
DNSコンテンツサーバの役割は、Domain Name Systemにおいて自ゾーンで管理するサーバのIPアドレスなどの各種リソースレコード(RR)を保持し、問い合わせ要求があったときに応答することである。自分が管理しているゾーンに対する問い合わせだけに応答するので、名前解決ができなくても他のネームサーバへの問い合わせはせず、自らが管理しているデータベースに該当する情報がなければ「情報はない」と答える。

DNSキャッシュサーバ(フルサービスリゾルバ)

DNSキャッシュサーバは、フルサービスリゾルバとも呼ばれ、ドメイン名の検索業務をおこない、結果をキャッシュする。DNSキャッシュサーバの役割は、DNSクライアント(Windowsなど)から名前解決を依頼されたとき、再帰検索を行いドメイン名の解決を図ることである。
Webブラウザで、www.wikipedia.orgなどを入力した際、そのコンピュータがまず名前解決しに行くのがDNSキャッシュサーバである。DNSキャッシュサーバのIPアドレスは、Dynamic Host Configuration Protocol(DHCP)などから取得するほか、設定ファイルとしてマシン内に保存することもある。

スタブリゾルバ(Stub Resolver)

スタブリゾルバは、利用者側から出される要望を基にフルサービスリゾルバと交信し、調べたいドメイン名を渡して必要な情報を教えてもらう、クライアント側で動作する検索プログラムである。単に「リゾルバ」と呼ばれることもある。

DNSサーバの3つの働きについての図解
dns_001

※上記の図はこちらの記事から引用させていただいた。

プライマリDNSとセカンダリDNSについて

もし、DNSサーバに障害が発生して停止してしまうと、名前解決が行うことができず、公開しているほとんどのサービスが利用できなくなってしまう。そこで、DNSサーバは、ドメインごとに最低2台以上用意することが求められている。
DNSコンテンツサーバには、メインとなるプライマリDNSと予備となるセカンダリDNSがある。プライマリDNSは通常、ドメインに1つ用意して自分のドメインの情報(ゾーン情報)を設定し管理を行う。セカンダリDNSは、プライマリDNSや他のセカンダリDNSの予備となるDNSサーバで、何台あっても良いことになっている。プライマリDNSは、セカンダリDNSへゾーン情報のコピーを転送し、セカンダリDNSにプライマリDNSの設定情報のコピーを置いておく。このことをゾーン転送と呼ぶ。

ゾーンファイルについて

ゾーンファイルとは、あるゾーンに関する情報がすべて記載されたファイルで、そのドメインの管理者によって作成される。このファイルの内容は、プライマリDNSとなるコンテンツサーバによって読み込まれ、必要に応じて、セカンダリのネームサーバに転送される。ゾーンファイルの中身は、リソースレコードの集合となる。ヘッダに当たる部分と、それ以外のリソースレコード群で構成されている。

リソースレコードについて

DNSサーバのソフトウェアによって多少差異があるかもしれないが、リソースレコードには以下の情報が設定できる。

種類データ長意味
所有者(Owner)そのドメインの名前
名前(Name)可変長リソースレコードの名前
タイプ(Type)16ビットリソースのタイプ
クラス(Class)16ビットクラス。使用プロトコルが入る。通常は0x0001の値を取る。
TTL32ビットリソースレコードのキャッシュ時間(秒)
RD長(RDLength)16ビットRDATAの長さ(オクテット)
RDATA可変長リソースの中身。TypeとClassによって中身が変化する。
 

リソースレコードの具体例

OwnerNameTypeclassTTLRDLengthRDATA
3min.co.jpwww00010001864004192.168.0.1
 

例についての説明

  1. Ownerカラムにはドメイン名を設定している。
  2. Nameカラムにはwwwというサブドメイン名を設定している。
  3. Typeカラムは0001が設定されているが、これはAレコード(ホストのアドレス)を指している。
  4. classカラムにも0001が設定されているが、ここには使用するプロトコルが設定でき、現在では0x0001で指定されるInternet(in)しか使用されない。※他にはカオスシステム(ch)やヘシオド(hs)などもある。
  5. TTLにはリゾルバがリソースレコードのキャッシュを保持する時間を設定している。
  6. RDLengthにはRDATAの長さが入り、単位がオクテット(8bit)で、32bitなので今回はRDATAが4オクテットだから、4と設定している。
  7. RDATAはTypeとClassカラムによって中身が変化する。今回はTypeがAレコードなのでIPアドレスを設定している。Classは基本的に固定なので意識しない。

リソースレコードタイプ(Typeカラムに入るデータ)には以下のようなものがある。

コード名前意味
1Aホストのアドレス
2NSそのドメインが管理するネームサーバ
3MDそのドメインのメールエージェントをもつホスト
4MFそのドメインのためにメール送信可能なホスト
5CNAMEエイリアス
6SOAオーソリティゾーン情報
7MB指定されたメールボックスを持つホスト
8MGそのメールグループに属するメールボックスを持つホスト
9MR改名メールボックスのドメイン名
10NULLその他情報
11WKSウェルノウンサービス
12PTR(逆引きに使用する)ポインタ
13HINFOそのホストが使うCPUとOSのタイプ
14MINFOメーリングリストを担当するメールボックス
15MXそのドメインのメールサーバ
16TXTテキスト文字列

参考
3 Minutes Networking No.63
リソースレコードとは — Key:雑学事典
DNSサーバ – Wikipedia 小悪魔女子大生のサーバエンジニア日記 BINDの設定をしよう!
小悪魔女子大生のサーバエンジニア日記 DNSのお仕事 その2
TCP/IP – DNSとは その3
@IT:DNS Tips:ネームサーバの3つの働きとは