DNS / Domain Name System
■ DNS。Domain Name System。
ホスト名とIPアドレスの相互変換をする機能。
またはその機能を実装した分散データベースシステム。
ポート番号53を使用し、TCPとUDPの両方で動作する。
DNSでは、組織や企業が自らのネットワーク内に
ホスト情報データベースを集中管理するネームサーバを設けて、
それらを用いて効率よく名前解決を行う。
ただし、個々のネームサーバが保持するホスト名の情報は、
自ドメイン内のものに限られ、それ以外のホスト情報ついては、
他のネームサーバに問合せることにより解決する。
DNSを構成するネームサーバは、
世界中に無数に存在ずるが、これらは
ルートネームサーバとローカルネームサーバに分類できる。
■ ルートネームサーバ
最上位に位置するネームサーバ群。
ルートネームサーバは、世界中に13組存在しか存在しない。
13組すべてが同じ情報を同期保持し、負荷分散を行っている。
具体的には、IANA、欧州RIPE-NCC、米PSINet社、米VeriSign社(2台)、
米国防総省、米陸軍研究所、米NASA、米ISI、米ISC、米Maryland大学、
ノルウェーNORDUnet、日本WIDEが管理している。
一般のネームサーバは、
自分の管轄外のドメイン名について問合せを受けた場合、
何はともあれ最初にルートネームサーバに問合せることになっている。
このためルートネームサーバには、
世界中のネームサーバからのアクセスが集中することになる。
するとルートネームサーバは、
該当するトップレベルドメインを管理するネームサーバの情報を返答するので、
一般のネームサーバは今度はここに回答を求める。
■ ローカルネームサーバ
一般のネームサーバ。
各組織、各企業に設置されるネームサーバ。
ローカルネームサーバは、
WWWやメールなど、多くのサービスの基盤となっている。
このためたいへん負荷が高く、仕様上冗長構成を採ることが決まっている。
したがってどのような企業や組織であっても、
独自ドメインを使用する限り、
プライマリ、セカンダリの2つのネームサーバを運用している。
(1) プライマリネームサーバ。
メインのネームサーバ。
ホスト情報データベースのマスターを管理している。
(2) セカンダリネームサーバ。
2台目以降のネームサーバ。
ホスト情報データベースのコピーを管理している。
■ リゾルバ。Resolver。
上位アプリケーションの要求に従い、
ネームサーバに名前解決の問合せをするソフトウェアのこと。
通常はOSに実装されている。
リゾルバは、一度調べたドメイン名/IPアドレスは、
しばらくの間テーブルに保管(キャッシュ)しておく。
こうすることで応答の高速化を図ることができる。
■ DNSの手順。
リゾルバがDNSを使って、
ホスト名からIPアドレスを解決する手順を、
順に追っていく。
(1) ユーザ(リゾルバ)は、
まずローカルネームサーバにアクセスして、名前解決を要求する。
(2) ローカルネームサーバは、
自身のキャッシュを参照して
検索対象ホストの情報が保持されているかどうかを確認し、
保持されていれば、この情報を回答する。
(3) もし検索対象ホストの情報が保持されていなければ、
ローカルネームサーバはルートネームサーバに問合せ、
ホストが所属するトップレベルドメインを管理する
下位ネームサーバのIPアドレスを教えてもらう。
(4) 次にローカルネームサーバは、
教えてもらったネームサーバにアクセスして、
ホストが所属するセカンドレベルドメインを管理する
下位ネームサーバのIPアドレスを教えてもらう。
(5) さらにローカルネームサーバは、
教えてもらったネームサーバにアクセスして、
ホストが所属する企業または組織の運営する
ネームサーバのIPアドレスを教えてもらう。
(6) こうしてローカルネームサーバは、
教えてもらったネームサーバに順にアクセスして、
最終的には、正に宛先ホストを定義したネームサーバに到達する。
ここでようやくIPアドレスを解決することができ、
リゾルバに対してこれを回答する。
(7) ローカルネームサーバとリゾルバは、
一旦問い合わせた情報はしばらくの間キャッシュに保存する。
キャッシュは一定時間後には破棄される。
■ 正引きと逆引き
(1) 正引き
ドメイン名から対応するIPアドレスを調べること。
DNSのメインの仕事。
これさえ動いていれば、大抵のケースで問題は起こらない。
(2) 逆引き
IPアドレスから対応するドメイン名を調べる仕組み。
あまり使わない。
しかしWebサーバ等で、不正IPアドレスをはじくために、
アクセス元のIPアドレスを1つ1つ逆引きする場合がある。
■ ゾーン転送。
プライマリとセカンダリの両ネームサーバの内容を同じに保つために、
セカンダリネームサーバが、プライマリネームサーバから、
定期的にゾーン情報を受け取ること。
セカンダリネームサーバでは、
一定期間ごとにプライマリネームサーバに接続し、
ゾーンデータの更新が必要かどうかを聞く。
もしゾーンデータが変更されていれば、
変更されているのが1レコードのみであっても、
全てのゾーン情報が転送される。
ゾーンデータには、ドメイン内の多くのホスト情報が記述されている。
これが第3者に流出することを防ぐため、
ゾーンデータの転送先は、セカンダリネームサーバに制限していることが多い。
以上。
2004/03/09 pm