この特集のトップページへ
Chapter 4:DNS(Domain Name System) 〜委任と内部ルート〜

4.2 内部ルート

 インターネットに接続されている環境では,ルートネームサーバーにアクセスすることができるため,自分の解決できないドメイン名の問い合わせをルートネームサーバーに問い合わせることができる。しかし,インターネットに接続されていない環境でDNSを利用する場合には,ルートネームサーバーにアクセスすることはできない。

 従来のWindowsネットワークを構築する場合には,DNSが動作していなくとも問題はなかったので,インターネットに接続されているか否かによって設定が大きく変化することはなかった。しかし,Windows 2000 Serverに搭載されているActive Directoryは名前解決にDNSを利用するため,Active Directoryの導入にあたっては必ずDNSサーバーを構築しなければならない。では,インターネットに接続されていない環境では,Active Directoryを利用できないのだろうか?

 DNSの動作自体は,Windows 2000 Serverに搭載されているMicrosoft DNSでも,Unixで一般的に利用されているBINDでも,大きな違いはない。いずれの場合も,自分が解決できないドメイン名に対する問い合わせは,ルートネームサーバーに問い合わせて解決しようと試みる。ところが,インターネットに接続されていない状況下では,ルートネームサーバーに接続できないため,DNSがタイムアウトするまで待ち続けなければならない。もちろんルートネームサーバーから回答は返されないので,ドメイン名を解決することもできない。多くの場合,DNSがタイムアウトするまでの時間は非常に長いので,ルートネームサーバーを参照するような設定のままでは,ネットワークの利用に支障をきたすおそれもある。

 この問題を解決するのが,「内部ルート」と呼ばれる内部ネットワーク用のルートネームサーバーである。ここでは,内部ネットワーク用のルートネームサーバーの必要性と,その役割について説明する。具体的にどのように設定するのかについては,利用するDNSサーバー製品によって異なってくるため,ここでは概念のみを説明するにとどめる。Windows 2000 Serverに添付されているMicrosoft DNSを利用する場合の設定方法は,「Chapter 8 MS DNS 〜Windows 2000のみでの構成〜」で説明する予定である。

 それでは,Fig.4-2のようなドメイン名を使用するイントラネットを考えてみよう。

Fig.4-2 イントラネットの構成例
fig.4-2

 このイントラネットには,dsl.localというドメインと,publish.localというドメインが存在し,それぞれ192.168.1.0と192.168.2.0というネットワークアドレスを使用している。dsl.localドメインを管理するDNSサーバーはns.dsl.localであり,publish.localドメインを管理するDNSサーバーはns.publish.localである。

 この環境に内部ネットワーク用のルートネームサーバーを設置する場合,そのルートネームサーバーには,dsl.localドメインの管理をns.dsl.localに,publish.localドメインの管理をns.publish.localに,それぞれ委任するため,次のようなレコードを記述しなければならない。

dsl.local.     IN NS ns.dsl.local.
publish.local. IN NS ns.publish.local.
ns.dsl.local.  IN A 192.168.1.254
publish.local. IN A 192.168.2.254

 最初の2行では,各ドメインを委任するDNSサーバーを設定している。これにより,ns.dsl.localとns.publish.localは,それぞれの管理するドメインに対して権威を持つことになる。

 最後の2行にあるAレコードは,ドメイン名やホスト名とIPアドレスとを関連付けるアドレスレコードである。これらのレコードは,各DNSサーバーのIPアドレスを解決するために記述されている。たとえば,ns.dsl.localというDNSサーバーがwww.publish.localというドメイン名の問い合わせを受けたとしよう。このとき,ns.dsl.localはルートネームサーバーに問い合わせを転送し,publish.localドメインがns.publish.localによって管理されていることがわかったとする。しかし,肝心のns.publish.localのIPアドレスがわからなければ,ns.publish.localに問い合わせを送信することはできない。なぜなら,このAレコードがなければ,どうやってもns.publish.localのIPアドレスを解決できないからである。

 読者のなかには,「ns.publish.localはpublish.localドメインに所属しているのだから,ns.publish.localに問い合わせればよいのではないか」と疑問に思われる人がいるかもしれない。しかし,Aレコードがなければ,そのns.publish.localのIPアドレスがわからないのである。IPアドレスがわからなければ,ホスト名がわかっても通信することはできない。サブドメインに管理を委任する場合には,DNSサーバーのIPアドレスを記述することを忘れないようにする必要がある。

 なお,内部ネットワーク用のルートネームサーバーを構築するときには,逆引きを委任することも忘れないようにしてほしい。逆引きを委任するには,DNSに次のようなレコードを記述する。この設定を忘れると,逆引きができなくなってしまうため,注意を要する。

1.168.192.in-addr.arpa. IN NS ns.dsl.local.
2.168.192.in-addr.arpa. IN NS ns.publish.local.
PREV 5/14 NEXT