トップ > スキル : ネットワーク > プロトコル(DNS)

ネットワーク

DNSサーバの中身を知る

このページでは、DNSサーバの仕組みを見ていきます。DNSサーバが問い合わせを受けたときの動きやどのような登録がなされていくかを見ることで、DNSの基本的な意義が理解できます。

問い合わせ方法

DNSサーバはソフトウェアになります。その基本的役割は「リゾルバからの問い合わせに対して回答する」ことです。リゾルバから問い合わせを受けた場合、その答えの見つけ方には大きく3つの方法に分かれます。
まず、1つ目は目的のDNSサーバを反復的な問い合わせによって探し出し、結果を見つけてリゾルバに返してあげる方法。2つ目は、ルートDNSサーバのように、自分が管理しているゾーン情報の中から答えを見つけ出して返す方法。最後の3つ目は、リゾルバからの問い合わせを他のDNSサーバに丸投げしてしまう方法で、大事な点は他のDNSサーバに転送する問い合わせが再帰的問い合わせであることです。この機能を「フォワーダ」と呼びます。

1つ目の方法は主に、企業内に置いているDNSサーバが取り入れている方法です。この方法のDNSサーバは、見つけ出した答えをキャッシュし、それをうまく使います。問い合わせがあると、キャッシュからその答えを見つけ出したり、答えを知っていそうなDNSサーバを見つけ出し、反復的な問い合わせをはじめます。

2つ目の方法は、インターネット事業者(プロバイダ)が運用しているDNSサーバに取り入られています。このDNSサーバは、ユーザのゾーン情報を管理していることになり、同じゾーンの中の問い合わせであれば即対応できます。

3つ目の方法は、社内ネットとインターネットを結ぶ回線が低速な場合、なるべくトラフィックを減らす努力をします。フォワーダを使うと、どんなドメイン名を問い合わせても、1つの問い合わせに対する答えが、低速な回線を通るのは1度だけで済むことになります。家庭用のルータでDNS機能がある場合、このフォワーダを実装していることになります。

ドメインとゾーン

例えば、sample.comというドメイン名を取得したとしましょう。このsample.comというドメイン名は、あるコンピュータの名前を表すときに使えますが、同時にsample.comを含むドメイン名全体を意味します。このように、ある領域のドメイン全体のことを「ドメイン空間」あるいは単に「ドメイン」と呼びます。ドメインには上位と下位があり、sample.comであれば上位がcomドメインとなります。下位はinfo.sample.comなどのサブドメインと呼ばれるものになります。

ゾーンは、DNSサーバが管理する範囲を意味します。通常、DNSサーバが管理する範囲は、どこかのドメイン名空間と言えます。例えば、sample.comを管理するDNSサーバは、sample.comという文字列を含むすべてのドメイン名についての対応表を持つことになります。ただし、DNSサーバは、サブドメインの管理を他のDNSサーバに委任できる仕組みがあります。これによって、ユーザは自分のドメイン名を取得でき、そのドメイン名空間の範囲で自由に名前を付けられるわけです。委任に関して大事な点は、DNSサーバ同士の管理権限がドメインとサブドメインの間ではなく、ゾーンを単位として線引きされているところになります。

対応表の中身

では、対応表の中身、つまりゾーン情報を見ていきます。ゾーン情報は、ゾーン・ファイルとしてDNSサーバ内に保存されています。このファイルはテキスト形式で、1行で一つの対応付けを記述したデータベースとなっています。このデータベースの1行を「リソース・レコード(資源レコード)」と呼びます。リソース・レコードは、名前・クラス・タイプ・値という書式で記述されています。よって、DNSサーバにドメイン名とIPアドレスの対応関係を登録するということは、ゾーン・ファイルにドメイン名とIPアドレスを対応付けする1行のリソース・レコードを追加するということになります。また、リソース・レコードに何を記述しているかは「タイプ」で指定します。よく使われるタイプにはAレコード、NSレコード、MXレコード、CNAMEレコード、PTRレコード、SOAレコードの6つがあります。

Aレコードは、ドメイン名にIPアドレスを対応付けたもの。NSレコードは、ドメイン名と、そのドメイン名を管理するDNSサーバを対応付けたものです。よって、AレコードとNSレコードが最も基本的なレコードであり、必要不可欠なものです。簡単に言うと、この二つを知っていれば、DNSサーバの仕組みをほぼすべて説明できます。例えば、www.sample.comにアクセスするとき、リゾルバがローカル・サーバに問い合わせているのは、www.sample.comのAレコードとなります。そして、ローカル・サーバが反復的問い合わせをすると、NSレコードとAレコードが返ってきます。NSレコードでドメイン名を管理するDNSサーバの名前、そしてAレコードでDNSサーバのIPアドレスを知ることになります。これを繰り返して最終目的のDNSサーバを見つけ出し、www.sample.comのAレコードを問い合わせることになります。

MXレコードはメール用のリソース・レコードで、ドメイン名とメール・サーバを対応付けています。例をあげると、user@sample.com宛のメールを送るとき、メール・サーバは最初にsample.comドメインのメール・サーバを探します。具体的には、sample.comのDNSサーバにMXレコードを問い合わせ、これに対してsample.comのDNSサーバは、MXレコードとAレコードを返信します。

CNAMEレコードは、サーバに別の名前を付けるときに使用します。もし、www.sample.comが東京本社にあると、その管理者がそのサーバを東京にあるサーバとして管理したくなることがあります。こうしたときに、www.sample.comにtokyo.sample.comという別名を付けると、管理しやすくなります。要するに、CNAMEレコードを使って、tokyo.sample.comの正式な名前がwww.sample.comであると登録することで実現できます。

PTRレコードは、IPアドレスからドメイン名を調べる逆引きという仕組みで利用するレコードです。

最後のSOAレコードは、ゾーン・ファイルを作るときに必要なリソース・レコードで、ゾーン情報を管理する責任者や情報の有効期限などを指定するレコードになります。

【DNS:DNSサーバの中身を知る】