2013年3月9日土曜日

コンピュータ名での名前解決ができない

下記の環境でクライアントから、サーバのコンピュータ名で名前解決を行うとすると、解決できない問題がありました。

サーバ:Windows Server 2008 R2
クライアント:Windows 7

クライアントPCで、「ping コンピュータ名」を実行してもホストが見つかりませんと表示されるのですが、「nbtstat -c」で調べるとNBT (NetBIOS over TCP/IP)のキャッシュには存在する状態でした。

結果的に解決方法は、『サーバのIPv6を無効』にすることでした。

プロトコルの有効・無効状態が下記のようになっていると、Windows Server 2008以降でLLMNR(Link Local Multicast Name Resolution)による名前解決が正常動作しないため、クライアントからサーバのコンピュータ名による名前解決ができないようです。
サーバ:IPv6 有効
    IPv4 有効
クライアント:IPv6 無効
       IPv4 有効

他の解決方法として、LLMNR 機能を停止方法する方法があるようです。
グループ ポリシーの使用、もしくはレジストリ値の直接編集にて停止可能です。

<グループ ポリシー>
1. ドメインの GPO、もしくはローカルのグループ ポリシーを開きます。
2. [コンピュータの構成] - [管理用テンプレート] - [ネットワーク] - [DNS クライアント] と展開します。
3. "マルチキャスト名前解決をオフにする" を "有効" にします。

<レジストリ>
1. レジストリ エディタを起動します。
2. 以下のレジストリ キーを展開します。(キーが存在しない場合は作成します)
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient
3. 以下のレジストリ値を編集します。(存在しない場合は作成します)
値の名前: EnableMulticast
値の種類: REG_DWORD
値: 0

** 設定後、システムの再起動が必要です。