【問題】
 あなたの会社には,複数のドメインによって構成されたWindows Server 2008 Active Directoryフォレストがあります。

 あなたは,このフォレストにあるWindows Server 2003ベースのWINSサーバーを廃止しようと考えています。WINSサーバーには,NetBIOSベースのアプリケーション用に使われている静的に登録されたレコードがいくつか残っています。あなたは,この静的レコードをWindows Server 2008ベースのDNSサーバーにGlobalNamesゾーンを作成することで,WINSサーバーを代用することにしました。

 あなたは,DNSサーバーにGlobalNamesゾーンを作成し,必要なレコードを記述しましたが,名前解決ができません。GlobalNamesゾーンを使った名前解決ができるようにするには,どの操作コマンドをDNSサーバー上で実行する必要があるか。次の中から適切なものを選択しなさい。

A. 「dnscmd . /config /enableglobalnamessupport 1」コマンドを実行する
B. 「netsh . /config /enableglobalnamessupport 1」コマンドを実行する
C. 「netdom . /config /enableglobalnamessupport 1」コマンド実行する
D. 「net stop dns」および「net start dns」コマンドを実行する

正解:A

【解説】
 GlobalNamesゾーンは,Windows Server 2008で新たにサポートされたゾーンである。利用するには,前方参照ゾーン(ゾーン名はGlobalNames)として作成し,CNAMEレコードまたはAレコードを主として記述する。このゾーンを有効にするには,次のコマンドを実行するか,DNSサーバーのレジストリを操作する。

●コマンドの場合

dnscmd DNSサーバー名 /config /enableglobalnamessupport 1

  DNSサーバー上で実行の場合,DNSサーバー名はピリオドでも可

●レジストリの場合

レジストリ・キー
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters

値(エントリ追加)
EnableGlobalNamesSupport REG_DWORD 1

 よって正解はAである。

 なお,「dnscmd」コマンドのヘルプ(dnscmd /config /?コマンドを実行)には,「/enableglobalnamessupport 1」に関する記載がないので注意のこと。また,コマンドの実行またはレジストリの操作は,GlobalNamesゾーンを有効にしたい全てのDNSサーバー上で行う必要がある(GlobalNamesゾーンがゾーン転送されただけでは,GlobalNamesゾーンの機能が有効にはならない)。GlobalNamesゾーンそのものについての働きは後述する。

  選択肢Bの「netsh」コマンドは,様々ネットワーク機能に対して設定をするコマンドであるが,ことDNSに関してはサポートされていない。選択肢にあるようなオプションも存在しない。よって選択肢Bは誤りである。  選択肢Cのコマンドはコンピュータ名を変更したり,ドメインへ参加したり,信頼関係を設定したりすることのできるコマンドであるが,DNSに関した設定ができるわけではない。選択肢にあるようなオプションも存在しない。よって選択肢Cは誤りである。

 選択肢Dのコマンドを実行するとDNSサービスを再起動できる。しかしGlobalNamesゾーンを有効にするために再起動の必要はない。よって選択肢Dは誤りである。

 それでは,GlobalNamesゾーンの働きについて説明しよう。

GlobalNamesゾーンの役目は「単一名の名前解決」を行うことである。

 GlobalNamesゾーンの役目を理解してもらうために,次のような名前のコンピュータの存在するネットワークを考えてほしい。

FileServer1.West.Contoso.msft
FileServer2.East.Contoso.msft
Client.West.Contoso.msft

 この様なネットワークにおいて,クライアントが「FileServer1」の名前解決を試みると,ドメイン名無しでも名前解決は成功するが,「FileServer2」の名前解決には,ドメイン名無しでは名前解決が失敗する(コマンドでならば,「PING FileServer1」は通るが,「PING FileServer2」は通らない)。

  これはドメイン名が無い場合,プライマリDNSサフィックスを自動的に追加し名前解決が試みられていることに起因する。つまり,「PING FileServer1」は「PING FileServer1.West.Contoso.msft」と解釈され名前解決が成功するが,「PING FileServer2」は「PING FileServer2.West.Contoso.msft」と解釈されてしまい名前解決が失敗するのだ(図1

図1●クライアントのプライマリDNSサフィックス
図1●クライアントのプライマリDNSサフィックス
どのようなサフィックスが追加されるかは,[コンピュータ]の[プロパティ]-[システムの詳細設定] -[ コンピュータ名]タブ,[ 変更]-[ 詳細]で確認できる(画面ショットはWindows Vistaのもの)
[画像のクリックで拡大表示]

 この様な状況を補正する方法として,ホスト名の名前解決は失敗させ,その後に続くNetBIOS名の名前解決(WINSサーバー)を使って名前解決を成功させる方法がある。NetBIOS名には元々ドメイン名は存在しないので,ホスト名(正確にはNetBIOS名)のみで名前解決が実行されるため,FilesServer2のみで名前解決が成功する。

 あるいはクライアント側で,[以下のサフィックスを順に追加する]を利用するという方法もある(図2)。この機能で名前を補正することによって,「FileServer2」に対してもドメイン名無しで名前解決を成功させられる。つまり,「PING FileServer2」は「PING FileServer2.West.Contoso.msft」と解釈され名前解決が失敗する。その後[以下のサフィックスを順に追加する]によって,「PING FileServer2.East.Contoso.msft」と新たに解釈され名前解決が成功するのだ。

図2●
図2●クライアントで,DNSサフィックスを追加する
[ネットワーク]の[プロパティ]-[ネットワーク接続の管理]-[ローカル エリア接続]の[プロパティ]-[インターネット プロトコル バージョン4]の[プロパティ]-[詳細設定]-[DNS]タブで確認することができる(画面ショットはWindows Vistaのもの)
[画像のクリックで拡大表示]

 クライアント側の設定ではあるが,グループ・ポリシーを活用することで設定労力は削減できる。しかし,[以下のサフィックスを順に追加する]の設定はホスト名による名前解決用であり,NetBIOS名の名前解決用ではない。WINSサーバーを廃止すると,ホスト名の補正は[以下のサフィックスを順に追加する]を利用するとしても,NetBIOS名での名前解決に不自由することになる。そこで新たにサポートされたのがGlobalNamesゾーンである。

 GlobalNamesゾーンを使って補正するには,次のレコードをGlobalNamesゾーンに追加する(図3)。

図3●GlobalNamesゾーンを使う
図3●GlobalNamesゾーンを使う
[画像のクリックで拡大表示]

FileServer2 CNAME FileServer2.East.Contoso.msft

 または

FileServer2 A 192.168.0.206

 (192.168.0.206はFileServer2のアドレスである)

 これによって,WINSサーバーに頼っていた名前解決をDNSサーバーで代用することが可能になる。つまりコマンドでならば,「Net View \\FileServer2」で名前解決が成功するようになる。PINGはホスト名による名前解決を使用するコマンドなので,真にNetBIOS名の名前解決を確認するには,「Net View」系のコマンドでなければならない。

 簡単に言うと,「GlobalNamesゾーン≒WINSデータベース」「GlobalNamesゾーン内のレコード≒WINSデータベース内の静的レコード」と考えるとよいかもしれない。ただし,GlobalNamesゾーンは完全なWINSの代替ではないということも留意しておいてほしい。