DNSの基礎 3

ここでは、より詳しくDNSを学ぶための基礎を記述する。

委任とゾーンおよび権威

基礎1ですでにゾーンについて軽く触れていたが、ゾーンの解説はなかった。ここでは、DNSを管理する方法を分散管理の考え方で解説し、委任とゾーンについて説明する。

ドメイン名が表す空間は下位のサブドメインを含んでいる。(下図)


図6.ドメイン名空間における内包関係

上図のように、Unixのディレクトリツリー又はWindowsのフォルダと同様に、サブドメインは上位のドメイン空間に内包され、ドメイン名空間を形成する。

しかし、eduドメインを管理する場合、内包するberkeleyやstanfordなどの下位ドメインをすべて管理することは、管理データが膨大になり管理そのものが困難になる。そこで、委任という形でberkeleyのドメイン情報はberkeleyで、stanfordのドメイン情報はstanfordで管理するよう運用管理を委任(delegation)することができるようになった。


図7.ゾーンにより分割されたドメイン情報

上図のように、eduのドメイン情報は委任により分割され、berkeleyのドメイン情報はberkeley.eduゾーンに存在し、eduゾーンには委任情報があるのみになる。

このように、分割されたドメイン情報はゾーンと呼ばれ、委任していないその他の情報はすべてゾーン情報として記録し、委任したものは委任情報のみが記録管理されることになる。berkeleyのサブドメインcc、ceおよびcsは、berkeleyからそれぞれ委任され、berkeley.eduゾーンには、それらの委任情報と委任しなかったドメイン情報が記録管理される。cc,ceおよびcsゾーンでは、それぞれのサブドメイン情報が管理されることになる。

このようにして、膨大になるドメイン情報をゾーンに分割することで分散管理することができる。それぞれのゾーンは互いに重なりが無く、個々のゾーン情報は同じものを含まず独立している。しかし、DNSサーバが他のゾーン情報を全く持たないというわけではなく、後述するキャッシュ機能によって保持することはできる。ただし、キャッシュ機能はゾーン管理とは全く別物であり、明確に区別される。

それぞれのゾーンを管理するDNSサーバは、その管理に関するある一定の権限を有している。例えば、管理するドメイン名に対する命名法に決まり事を設定することができ、より下位のドメインを管理するDNSサーバに対して上位の強制力を持っている。それゆえ、より上位のDNSサーバが下位のDNSサーバに対してルールを設定することができる権限を持つことから、ゾーンを管理するサーバを権威サーバと呼ぶ。

DNSサーバの種類

一般に、DNSサーバには、ゾーンと呼ばれるドメイン名空間の一部についての完全な情報が記録されている。

DNSの仕様では、プライマリマスタとセカンダリマスタという2種類のDNSサーバが定義されている。プライマリマスタはゾーンのデータをホストのファイルから直接読み込むDNSサーバであり、オリジナルのゾーンデータを保持している。セカンダリマスタは、ゾーンの権威を持つ別のDNSサーバからゾーンのデータを取得し、ゾーンデータのコピーを保持している。セカンダリマスタは、起動時に別のDNSサーバに問い合わせ、必要なら、ゾーンデータを入手する。この動作をゾーン転送(zone transfer)と呼ぶ。

ゾーンデータを入手する別のDNSサーバはプライマリマスタではなくてもよく、他のセカンダリマスタでもかまわない。セカンダリマスタから見て参照するDNSサーバのことをマスタサーバと呼ぶ。マスタサーバはプライマリマスタとは限らず、セカンダリマスタの場合もあり得る。セカンダリマスタのことをスレーブと呼ぶこともある。

ゾーンデータファイル

プライマリマスタはオリジナルのゾーンデータファイルを読み込み、それに基づいて動作するが、セカンダリマスタはプライマリマスタが所持するオリジナルのゾーンデータを必要に応じて問い合わせて動作する。セカンダリマスタが所持するゾーンデータはファイルとして保存され、再起動時に読み込まれ活用されることになっているが、データが古い可能性がある。

それゆえ、ゾーンデータファイルにはタイムスタンプに対応したシリアル番号を付与することになっている。シリアル番号は小さいほど古く、大きいほど新しいということになっている。日付で設定することも多いが、その場合、必ず新しいほど大きくなるようにするため、YYYYMMDDNNという形式にする必要がある。YYYYは西暦、MMは月、DDは日、NNはその日の更新回数である。

セカンダリマスタは、自分が所持するゾーンデータのシリアル番号とマスタサーバのシリアル番号を比較し、値が小さければ古いので、マスタサーバからゾーン転送を行うことで、ゾーンデータを最新にすることができる。

IPアドレスからドメイン名を入手する逆引きの仕組み

ドメイン名からIPアドレスを入手する仕組みは解説したが、IPアドレスからドメイン名を入手する方法は、単純に考えると難しい。すべてのDNSサーバを検索し目的のIPアドレスを探すのは、膨大な時間を要し、現実的ではない。

ドメイン名と同じような仕組みでIPアドレスの検索システムを構築できないだろうか、と考えたのが、現在利用されている逆引きシステムである。IPアドレス、例えば、15.16.192.152のドットで区切られた数字を文字列として捉え、ドメイン名と同じように管理しようというのである。

IPアドレス15.16.192.152 の左側の15は上位のIPアドレスに対応するが、ドメイン名 winnie.corp.hp,com のように左側のサブドメイン名はより下位のドメイン名となり、IPアドレスとドメイン名の上位下位は逆になっている。それゆえ、右側が上位になるように、次のように記述する必要がある。

IPアドレス 15.16.192.152 のドメイン名形式の表記
152.192.16.15.in-addr.arpa

ここで、in-addr.arpa は逆引きIPアドレスを管理するサーバのドメイン名であり、現在、IANA(Internet Assigned Numbers Authority)というアメリカ ロサンゼルスに拠点を持つ組織で管理されている。

検索の順番は、ドメイン名の場合と同じように、

root -> arpa -> in-addr.arpa -> 15.in-addr.arpa -> 16.15.in-addr.arpa
-> 192.16.15.in-addr.arpa -> 152.192.16.15.in-addr.arpa

となる。

各DNSサーバが管理するIPアドレスに対して、逆引き用のデータファイルを作成することで、逆引き検索が可能となる。


参考文献

次は、BINDの設定である。

back    next