WindowsでDNSの逆引きゾーンを定義する(イントラネット編)Tech TIPS

DNSの逆引きゾーンを定義しておくと、IPアドレスからホスト名(FQDN名)を求めることができる。逆引きゾーンを定義するには、ウィザードでIPアドレスの上位3bytesを指定するだけでよい。使用しているネットワークアドレスに応じて、逆引きゾーンを全て定義しておくこと。

» 2006年05月13日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 2000 / Windows Server 2003



解説

 DNSサーバは、TCP/IPネットワークにおいて、名前解決機能を提供する重要なサービスである。主要な機能としては、名前(FQDN名)からIPアドレスを求めるだけでなく(これを「正引き」という)、IPアドレスから名前(FQDN名)を求めるというサービス(「逆引き」サービス)を提供している。

 Active Directory環境では、このDNSサービスを利用してログオンするためのドメインコントローラの検出を行うなど、重要な役割を担っている。

 Windows OSでActive Directoryネットワークを構築した場合、デフォルトではドメインコントローラ上にDNSサービスが導入され、初期セットアップが行われる。具体的には、Active Directoryで指定したドメイン名を元にDNSのゾーンが定義され、必要なレコードなどがDNSサーバに登録される。

 これにより、ユーザーは例えばexserver01.example.co.jpといったFQDN名から(ここでexserver01はドメインコントローラのコンピュータ名、example.co.jpはドメイン名)、10.20.5.11というIPアドレスを取得できる。

 だが、DNSのもう1つの機能である「逆引き」ゾーンの設定に関しては、デフォルトではセットアップされない。Windows OSネットワークでは、基本的にはDNSの逆引きゾーンが定義されていなくても問題となることはあまりないが、使用するアプリケーションやネットワーク環境、サービスによっては逆引きが定義されていないと不便なことがある。

 逆引きとは、IPアドレスからFQDN名を求めるサービスである。例えば10.20.5.11を与えると、exserver01.example.co.jpという名前が返される(nslookupを使った逆引きの確認方法については、TIPS「nslookupの基本的な使い方(イントラネット編)」参照)。

 DNSの逆引きは、サーバソフトウェアのログ解析やネットワークのトラブルシューティング時などに、IPアドレスからそのアクセス元のコンピュータ名を調べるためによく利用される。またソフトウェアによっては、アクセス元の情報(コンピュータ名)を取得してログなどに記録するために、利用したりする。

 IPアドレスだけしか分からないと、どのようなコンピュータからアクセスされたかが分かりづらい。一方、コンピュータ名が分かっていると、その名前からさまざまな情報が得られ(サーバかクライアントか、どこのドメインか、誰が管理しているコンピュータか、など)、トラブルシューティング作業などがスムーズに行える。

※逆引きが定義されていないと、トラブルシューティング作業などもスムーズに行えなくなる

C:\>nslookup ……逆引きレコードが定義されていない場合の例
*** Can't find server name for address 10.20.5.11: Non-existent domain
Default Server:  UnKnown ……ホスト名が不明となっている
Address:  10.20.5.11

>


C:\>nslookup ……逆引きレコードが定義されている場合の例
Default Server:  exserver01.example.co.jp ……正しいホスト名が表示される
Address:  10.20.5.11

>



 またサーバソフトウェアの設定によっては、アクセス元のIPアドレスからいったん逆引きでドメイン名を求め、そのドメイン名に基づいてアクセス制限をかけることができるものがある(例:IISのディレクトリセキュリティにおける、ドメイン名によるアクセス制限機能)。このようなシステムを利用している場合は、正しく逆引き情報をセットアップしておかないと、サーバを利用することができない。

 本TIPSでは、イントラネットで利用されているWindows OSのDNSサーバにおいて、この逆引きゾーンを設定する方法について解説する。インターネットの逆引きゾーンでは、プロバイダとのやりとりなども必要になるし、特別なゾーン名の定義方法などが使われていることが多いので、ここでは取り上げない(今後別TIPSで取り上げる予定)。

操作方法

 Windows Server OSにActive Directoryをインストールする場合、デフォルトでDNSサービスが導入されるようなっている(もしくは、あらかじめDNSサーバを設定しておいてからActive Directoryの導入を開始する)。

 しかし、正引きゾーンと違って、逆引きゾーンの重要性は低いため(Active Directoryにとっては逆引きゾーン情報は必須ではない。どちらかというとWindows OS以外の環境で利用されることの方が多い)、デフォルトでは導入されないようになっている。そのため、必要ならば管理者自身が自分で逆引きゾーンを定義しなければならない。

 といっても、その定義方法は非常に簡単である。DNSサーバのIPアドレスに基づいて逆引きゾーンを定義するだけである。作業はウィザードを起動して、IPアドレスを指定するだけなので、手間はかからない。以下、順にその手順を見ていこう。

●逆引きゾーンのウィザードによる作成

 逆引きゾーンを定義するには、ウィザードを利用すると簡単である。まずDNSサーバの管理ツールを起動し([管理ツール]−[DNS]を実行)、[逆引き参照ゾーン]を右クリックして、ポップアップメニューから[新しいゾーン]を選択する。

逆引きの定義ウィザードの起動 逆引きの定義ウィザードの起動
逆引きのプライマリゾーンを新規作成するには、ウィザードを利用するのが簡単である。以下はWindows Server 2003のDNSサーバの例だが、Windows 2000でも操作は同じである。
  (1)これを選択する。
  (2)これを選択して、新しいゾーン定義のウィザードを起動する。

 最初に作成するゾーンのタイプを指定する。DNSのゾーン定義では、マスターとなる「プライマリ ゾーン」と、プライマリゾーンのミラーとして機能する「セカンダリ ゾーン」の2つがあるが、最初はプライマリゾーンを作成しなければならない。2台目以降のDNSサーバの場合はセカンダリゾーンにする。

作成する逆引きゾーンの種類の定義 作成する逆引きゾーンの種類の定義
最初に定義するゾーンは「プライマリ ゾーン」。
  (1)これを選択する(デフォルト)。
  (2)Active Directory環境では、これをオンにして(デフォルト)、DNSのゾーンデータをActive Directoryを管理、複製すればよい。UNIXなどのDNSサーバと連携する場合は、ファイル経由でコピーするなどの手段を利用する。

 Active Directoryを利用する場合は(上で(2)をオンにした場合は)、ゾーンデータの複製方法を指定する。デフォルトのままでよい。

データの複製方法の指定 データの複製方法の指定
Active Directoryに格納されたデータの複製方法の指定。このあたりはネットワークやActive Directoryの構成などに応じて変えること。
  (1)フォレスト内の全DNSサーバで複製する。
  (2)デフォルトでは、ドメイン内の全DNSサーバ間で複製される。
  (3)ドメイン内の全DCで複製する。

 次が一番重要であるが、逆引きのゾーン名を定義する。具体的には、ゾーンの元となるIPアドレス(上位3bytes)を指定すると、それに基づいて、自動的に逆引きゾーン名が決定される。必要ならば、手動で逆引き用のゾーン名を定義することもできるが、イントラネットの逆引き用途では、デフォルトのままでよい。

 逆引きのゾーン名のデフォルトはIPアドレスから自動的に求めることができる。例えば「10.20.5.11」というIPアドレスがあるとすると、最終byteのデータ(「11」)の部分を削除して「10.20.5」とし、これを逆順に並べて(「5.20.10」となる)、最後にドメイン名として「.in-addr.arpa」を追加する。最終的には「5.20.10.in-addr.arpa」となる。

 「in-addr.arpa」は、逆引きのゾーンの最後に付けられる特殊な名前であり(Internet Address、ARPAの意味)、DNSの規格で決まっている。

 つまり「10.20.5.11」というIPアドレスに対応する逆引き名(FQDN名)は「11.5.20.10.in-addr.arpa」となる。この文字列は、「5.20.10.in-addr.arpa」というゾーンにおける「11」という名前のホスト、という意味である。10.20.5.11は数字が4つつながったものに見えるが、DNSサーバから見ると、正引きのFQDN名と同じく、「10」や「20」「5」「11」という「文字列」が「.」で連結されたもの、と解釈されている。

 逆引きゾーンを定義する場合は、このように、DNSサーバのIPアドレスの上位3bytesをゾーン名として指定する。最下位の1byteの値は、このゾーン内におけるレコード名として使用されるため、指定する必要はない

このようなケースでは、「10.in-addr.arpa」という逆引きドメインの下に、「20」というサブドメインを定義し、さらにその下に「11」というサブドメインを定義する方法もある。具体的な方法や、ここで解説している方法との違いについては、TIPS「DNSの逆引きゾーンを定義する(イントラネットサブドメイン編)」を参照していただきたい。


ゾーン識別用のネットワークID(IPアドレス)の指定 ゾーン識別用のネットワークID(IPアドレス)の指定
逆引きゾーン名は「数字.数字.数字.in-addr.arpa」となるが、その3つの数字の部分には、IPアドレスの上位3bytes(10進数表現)を逆順に並べたものが使われる。ここではIPアドレスの上位3bytesを指定すると、自動的にゾーン名が入力される。
  (1)デフォルト設定。指定したIPアドレスに基づいて自動的にソーン名を決定する。
  (2)IPアドレスの上位3bytesを、1byteずつ区切って入力すること。DNSサーバのIPアドレスの上位3bytes(もしくはネットワークアドレスの上位3bytes)を指定する。サブネットマスクの値はここでは関係ない。
  (3)逆引きゾーン名を手動で設定する場合はこれを選択する。インターネット向け逆引きゾーンを作成するような場合に使用する。
  (4)逆引きゾーン名を手動指定する場合はここに入力する。グレーで表示されている「5.20.10.in-addr.arpa」は、(2)の指定に基づいて自動生成された逆引きゾーン名。

 次は動的更新を許可するかどうかを指定する。Windows OSではDHCPによってIPアドレスが動的に決まることが多いため、どのIPアドレスが、現在どのコンピュータに割り当てられているかを知るためには、DNSサーバに対する動的更新を許可しておくのがよい。

動的更新の許可の指定 動的更新の許可の指定
どのIPアドレスがどのコンピュータに割り当てられているかを知るためには、動的更新を許可しておくとよい。
  (1)デフォルト設定。ドメインに登録されているコンピュータのみが更新を許可される。
  (2)どのコンピュータでも更新要求を送信できる。が、セキュリティ的に脆弱なので(不正なクライアントが偽の逆引きレコードを登録するかもしれない)、使用する場合は注意する。
  (3)動的更新を許可しない場合はこれを選択する。

●登録内容の確認

 以上で設定は終わりである。ウィザードを進めて設定を終了すると、逆引きゾーンが新規作成されているはずである。以下は、逆引きゾーンが作成され、さらにDNSサーバ自身のレコードが作成された直後の状態である。ただしゾーン名は「10.20.5.x Subnet」というふうに分かりやすく表示されているが、これを実際の「5.20.10.in-addr.arpa」と表示させるためには、[表示]メニューの[詳細設定]をオンにする。

定義されたゾーンデータの確認 定義されたゾーンデータの確認
逆引きゾーンが作成され、さらに自分自身(10.20.5.11のレコード)が登録された状態。しばらく運用していると、さらにほかのクライアントのレコードが順次登録されていくことが分かるだろう。
  (1)作成した逆引きゾーン。実際のゾーン名は「5.20.10.in-addr.arpa」であるが、ユーザーに分かりやすいように「10.20.5.x Subnet」と表示されている。実際のゾーン名を表示させるには、[表示]メニューの[詳細設定]をオンにする。
  (2)登録された逆引きレコード(これは自分自身)。
  (3)この2つは、ゾーン作成時に登録されたSOAとNSレコード。このゾーンを定義しているDNSサーバの情報が登録されている。

●ほかのネットワークアドレスの登録

 以上の例では、「10.20.5.*」というIPアドレスに対する逆引きレコードを登録した。だが実際には、ネットワーク上にはそれ以外のネットワークアドレスも多数使われているだろう。例えば、「10.20.1.0/24」や「192.168.0.0/16」「172.16.0.0/20」などだ(「/」を使ったアドレスの表記方法については、基礎から学ぶWindowsネットワーク「IPアドレスとネットマスク」参照)。

 このような場合は、さらに別の逆引きゾーンを定義しておく必要がある。例えば「10.20.1.1」というIPアドレスを利用しているなら「1.20.10.in-addr.arpa」という逆引きゾーンが必要だし、「192.168.2.3」なら「2.168.192.in-addr.arpa」というゾーンが必要だ。

 サブネットマスクの値(bit幅)は関係ない。IPアドレスを10進数4組で表した場合、その上位3組に相当するゾーン名が必ず必要になる。例えば「192.168.0.0/16」を全て使用しているならば「0.168.192.in-addr.arpa」〜「255.168.192.in-addr.arpa」の256個のゾーン定義が必要である。

 というわけで、次の画面に示すように、使用しているIPアドレス(ネットワークアドレス)に相当する分だけ、全ての逆引きゾーンを定義していただきたい。作成には少々手間がかかるかもしれないが(多数のサブネットを使っている場合)、1度作ってしまえば特にメンテナンスする必要もないので、作っておくとよいだろう。

多数の逆引きゾーンを定義した例 多数の逆引きゾーンを定義した例
使用しているIPアドレス(ネットワークアドレス)に相当する分だけ、全ての逆引きゾーンを定義しておくこと。
  (1)定義された多数の逆引きゾーン。

■更新履歴

【2006/05/13】サブドメインを使って逆引きゾーンを定義するTIPS記事へのリンクを追加しました。

【2006/04/22】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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