連載
» 2008年05月22日 00時00分 公開

Active Directory管理者のためのDNS入門:第1回 DNSの基礎知識 (2/3)

[伊藤将人,著]

 コンピュータ間の通信でTCP/IPを使用する場合、通信相手となるあて先を識別する値としては、「IPアドレス」が使用される。IPアドレスは、32bitのアドレス空間を用いてホストを識別するために割り当てられた、一意の値である。IPアドレスは通常、8bitずつピリオドで区切り、10進数で表記する(例「192.168.1.1」)。つまり、通信したい相手のIPアドレスが分かれば、データを相手に送ることができるということだ。

 しかし、世界中のコンピュータのIPアドレスをあらかじめ知っておくことは難しいし、通信相手をIPアドレスで覚えておくことも難しいだろう。そこで、あて先をIPアドレスで指定する代わりに、人間が分かりやすい名前をコンピュータにホスト名として割り当て、ユーザーやアプリケーションで通信相手を指定する際にはホスト名を使用できると便利である。ホスト名にはアルファベットや数字などが使用できるため、コンピュータの役割ごとに人間が分かりやすい名前を割り当てることができる。例えばWebサーバになっているコンピュータには、「www」といった名前を割り当てられる。ユーザーやアプリケーションがあて先を指定する情報としてホスト名を使用する場合でも、実際のTCP/IP通信ではIPアドレスがあて先情報として使用されるため、指定されたホスト名が割り当てられたコンピュータのIPアドレスを、(何らかの方法で)取得する必要がある。この処理を「名前解決(name resolution)」と呼ぶ。「名前(ホスト名)を解決して、IPアドレスにする」という意味だ。名前解決を提供するサービスとしては「DNS」サービスが使用される。DNSサービスを提供するサーバを「DNSサーバ」といい、名前解決する必要のあるホスト名をDNSサーバが持つ「ゾーン」と呼ばれるファイルにレコードとして登録しておく。DNSでは登録されたレコードのホストだけが解決の対象となる。また名前解決を依頼する機能(DNSサーバに問い合わせる処理/サービス)を「リゾルバ(resolver)」という。

DNSによる名前解決の仕組み
ユーザーのコンピュータが、あるホスト(この例では「Host1」)と通信したい場合、まずそのホスト名をIPアドレスに変換(名前解決)しなければならない。このためにDNSが利用される。DNSサーバには、ホスト名とそのIPアドレスがレコードとして登録されている。このレコードの集まりをゾーンという。DNSのクライアントが名前をDNSサーバに問い合わせると、DNSサーバはゾーンに登録されているレコードを検索してIPアドレスを求め、それをクライアントへ返す。IPアドレスが分かれば、クライアントはTCP/IPを使って目的のホストと通信が可能になる。
 (1)ユーザーは、通信相手をホスト名(この例では「Host1」)で指定する。
 (2)クライアントのリゾルバは、名前からIPアドレスを求める(名前解決する)ために、DNSサーバに対して、指定されたホスト名のIPアドレスを問い合わ要求を送信する。
 (3)DNSサーバは、ゾーンを検索し、要求されたホスト名のレコードを調べる。
 (4)レコードが発見された場合は、そのホスト名のIPアドレスを応答する。
 (5)通信要求を出したコンピュータは、DNSサーバから返されたIPドレスを使って、目的のホストとの通信を開始する。

 DNSのゾーンに登録されるレコードにはいくつか種類があるが、主要なレコードとしては次のものがある。

  • SOA(Start Of Authority)レコード
     ゾーン情報を記載する。SOAレコードには以下の情報が含まれる。
    • ドメインのDNSサーバ名
    • ドメイン管理者のメール・アドレス
    • シリアル番号
    • 更新間隔
    • 転送再試行時間
    • レコード有効時間
    • キャッシュ有効時間
  • NS(Name Server)レコード
     ドメインのDNSサーバ名を登録する。
  • A(IP Address)レコード
     ホストのIPアドレスを登録する。
  • CNAME(Canonical Name)レコード
     ホスト名のエイリアス(別名)を登録する。
  • MX(Mail eXchanger)レコード
     ドメインのメール・サーバ名を登録する。
  • SRV(Service)レコード
     サービスを実行するサーバ名を登録する(サービスごとに登録する)。Active Directory用のDNSにはとても重要なレコードとなる。
  • PTR(pointer)レコード
     IPアドレスに対応するホスト名を登録する。逆引き解決するために(IPアドレスからホスト名を取得するために)使用される。

インターネット環境でのDNS

 DNSによる名前解決の仕組みはインターネットでも利用されている。だがインターネットでの名前解決は少し複雑になる。

 ある1台のDNSサーバが、インターネット上のすべてのホスト名とIPアドレスを登録/保持することは現実的ではない。レコードの総数が膨大で、1台のコンピュータではとても管理できないからだ。そこでDNSでは、インターネットで利用される名前を「ドメイン」という単位で分割して管理する、分散管理モデルを採用している。ドメインは階層構造で定義されている。

ドメイン階層
インターネットの名前空間は、ルート・ドメインから階層的に定義されている。ルート・ドメインは形式的に「.(ピリオド)」と定義され、それ以下に、例えば「.com」「.net」「.jp」などのトップレベル・ドメイン(TLD)が定義されている。TLD以下にもさらにサブドメインが定義されている。例えば「microsoft.com」「atmarkit.co.jp」などがある。

 「ルート・ドメイン」や「トップレベル・ドメイン(TLD)」の管理や運営はICANN(Internet Corporation for Assigned Names and Numbers)が行っている。ICANNは、ドメイン名のほか、IPアドレス/ポート番号などの管理を指揮する国際的な非営利法人団体である

 インターネットの名前空間はルート・ドメインと呼ばれる、先頭となるドメインから階層的に定義されている。そして、基本的に各ドメインには、それぞれDNSサーバが存在する。

 これらの分散管理された環境での名前解決処理は次のように行われる。例えば、クライアントから、Webブラウザを使用して「http://www.example.com/」に接続したい場合、実際のアプリケーション・プロトコルとしてはHTTPプロトコルでアクセスするが、その前に、「www.example.com」というホストの名前解決処理(www.example.comのIPアドレスを求める処理)が必要となる。

 まず、クライアントに設定されたDNSサーバ(ローカルDNSサーバ)にwww.example.comの名前解決要求を送る。ローカルのDNSサーバには、インターネット上のすべてのIPアドレスが登録されているわけではないので、ここでは解決できない。このような場合、ルート・ドメインのDNSサーバに問い合わせを行う。

 ルート・ドメインDNSのゾーンにもwww.example.comが登録されているわけではない。ルート・ドメインのDNSサーバは、comドメインのDNSサーバを紹介(返答)する。その応答を受け、ローカルのDNSサーバは次は.comドメインのDNSサーバに問い合わせを行う。

 comドメインのDNSサーバは、example.comドメインのDNSサーバを紹介(返答)する。するとローカルのDNSサーバは、今度はexample.comドメインのDNSサーバに問い合わせを行う。example.comドメインのDNSサーバには、www.example.comのIPアドレスが登録されており、ここで初めて名前解決ができる。解決されたwww.example.comのIPアドレスはローカルのDNSサーバに戻され、要求元のクライアントに返される。そしてクライアントは取得したIPアドレスあてにHTTPプロトコルの要求を送ることができる。

インターネットでの名前解決□
クライアントはローカルのDNSサーバのアドレスさえ知っていればよい。上位のドメインのDNSサーバは、下位ドメインのDNSサーバを登録しておく必要がある。DNSサーバは、自分で解決できない場合は、知っていそうなDNSサーバを代わりに教える。
 (1)あるクライアントがWebブラウザで「http://www.example.com/」へアクセスしようとした場合、まず「www.example.com」のIPアドレスを求める(名前解決する)必要がある。
 (2)クライアントは、ローカルのDNSサーバへwww.example.comの名前解決を依頼する。
 (3)ローカルのDNSサーバは、ルート・ドメインのDNSサーバへ名前解決要求を送信する。
 (4)ルート・ドメインのDNSサーバは、自身の管理するドメインではないので、comドメインのDNSサーバを紹介する。
 (5)ローカルのDNSサーバは、comドメインのDNSサーバへ名前解決要求を送信する。
 (6)comドメインのDNSサーバは、自身の管理するドメインではないので、example.comドメインのDNSサーバを紹介する。
 (7)example.comドメインのDNSサーバは、自身の管理するゾーンなので、www.example.comレコードを検索してIPアドレスを求める。
 (8)求めたwww.example.comのIPアドレス情報をクライアントへ返す。
 (9)取得したIPアドレス情報を使って、目的のホストであるwww.example.comへ、HTTPプロトコルを使ってアクセスする。

 このようにインターネットで使用するDNSサーバは、インターネット上のルート・ドメインのDNSサーバに要求を送るため、ルート・ドメインのDNSサーバのIPアドレスを知っている必要がある。ルート・ドメインのDNSサーバのIPアドレスは公開されており、ルートヒントとして構成しておく必要がある。ルート・ドメインのDNSのIPアドレスは、以下のサイトから入手できる。また上位のドメインのDNSサーバには、下位のDNSサーバのIPアドレスをNSレコードとして登録しておく必要がある。

 インターネット上のホストの名前解決が解決要求のたびに発生すると、インターネット上のトラフィックや、ルート・ドメインのDNSサーバの負荷が多くなってしまう。そのため、一度解決された名前はDNSサーバにキャッシュされ、一定期間保存されるようになっている。同じホストの名前解決要求が来た場合、キャッシュにレコードが保持されていれば、そこですぐに解決できる。

 もしもインターネットに公開したいサーバがあれば、インターネット公開用のDNSサーバのゾーンにサーバの名前とIPアドレスのレコードを登録しておく必要がある。また公開用DNSサーバのレコードを、上位のドメインのDNSサーバにNSレコードとして登録してもらう必要がある。

DNSの可用性と負荷分散

 DNSは、通信したいあて先ホストのIPアドレスを取得するために使用するサービスである。そのためDNSによるIPアドレスの取得が失敗すれば、たとえあて先ホストが正常に稼働していても、あて先ホストとは通信できなくなる。

 そこでDNSでは通常、名前解決が失敗しないように、ゾーンの冗長構成を行う。クライアントが問い合わせた1台目のDNSサーバからの応答がない場合には、2台目のDNSサーバが応答できるように、ゾーンを持つサーバは、ほかのDNSサーバにゾーン情報のコピーを行う。この処理を「ゾーン転送」という。Windows OSが提供するMicrosoft DNSでは、マスタのゾーン(コピー元のゾーン)を「プライマリ・ゾーン」と呼び、コピーされたゾーンを「セカンダリ・ゾーン」と呼ぶ。

DNSのゾーン転送
ゾーン転送はプライマリ・ゾーンからセカンダリ・ゾーンに一方向で実行される。プライマリ・ゾーンは書き込み可能なゾーンとなり、セカンダリ・ゾーンは読み取り専用のゾーンとなる。新しいレコードの登録やレコードの修正といった管理作業は、マスタとなるプライマリ・ゾーンを保持するDNSサーバで行う。DNSクライアント(リゾルバ)は、どちらのサーバに問い合わせても同じ結果を得ることができる。

 クライアントの参照先となるDNSサーバは、プライマリ・ゾーンを持つDNSサーバでもセカンダリ・ゾーンを持つDNSサーバでもよい。

クライアント要求の負荷分散
クライアントからのクエリ(名前解決要求)は、プライマリ・ゾーンとセカンダリ・ゾーンに分散できる。だが、セカンダリ・ゾーンは読み取り専用のため、書き込み処理が必要な動的更新処理はプライマリ・ゾーンに集中する。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。