The Cable Guy

名前解決ポリシー テーブル

Joseph Davies

通常、DNS (ドメイン ネーム システム) 名のクエリ ホストは、ネットワーク インターフェイスでクエリを処理する DNS サーバーの 1 つ以上の IPv4 アドレスまたは IPv6 アドレスを指定することで構成されています。通常、Windows Vista または Windows Server 2008 を実行しているコンピューターでは、動的ホスト構成プロトコル (DHCP) または DHCP for IPv6 (DHCPv6) により、この構成が自動的に行われます。Windows Vista または Windows Server 2008 を実行しているコンピューターでは、DNS 名前空間全体に対する DNS 名のクエリは、ネットワーク インターフェイスで構成されている DNS に転送されます (これ以降、この DNS を "インターフェイスで構成された DNS サーバー" と言います)。

一部のテクノロジでは、DNS 名前空間の特定の部分についての名前クエリで特殊な処理が必要になります。DNS 名が名前空間の指定した部分と一致する場合は、特殊な処理を適用します。DNS 名が名前空間の指定した部分と一致しない場合は、インターフェイスで構成された DNS サーバーを使用して、通常の DNS クエリを実行します。このニーズに対応するため、Windows 7 と Windows Server 2008 R2 では名前解決ポリシー テーブル (NRPT) が導入されました。

NRPT には、DNS 名または DNS 名前空間ごとに管理者が構成した規則と適用する必要がある特殊な処理の設定が格納されています。DNS 名前解決を実行する際には、DNS 名のクエリを送信する前に、DNS クライアント サービスで、要求された名前が NRPT に格納されている各規則と比較されます。NRPT に格納されている規則と一致するクエリと応答には、指定の特殊な処理が適用されます。NRPT に格納されている規則と一致しないクエリと応答は、通常どおりに処理されます。つまり、DNS クライアント サービスでは、名前のクエリをインターフェイスで構成された DNS サーバーに送信します。

Windows 7 と Windows Server 2008 R2 では、DirectAccess と DNS セキュリティ拡張機能 (DNSSEC) で DNS 名のクエリについて特殊な処理が必要になります。インターネットに接続している場合、DirectAccess クライアントは、イントラネット リソースの DNS クエリを NRPT で指定されている DNS サーバーに送信します。特定の名前や特定の名前空間に含まれる名前 (通常、高い価値があるセキュリティで保護されたイントラネット リソースの名前です) を解決する場合、DNS クライアント サービスでは、DNSSEC を使用して、解決した名前が DNS サーバーで検証されるようにすることができます。

NRPT を構成する

NRPT は、Windows レジストリ (HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DnsClient\DnsPolicyConfig) を使用してグループ ポリシーで構成したり、DirectAccess ベースの規則については、DirectAccess セットアップ ウィザードを使用して NRPT を構成できます。NRPT を構成するコマンド ライン インターフェイスはありません。DNSSEC ベースの規則については、グループ ポリシーを使用して構成することをお勧めします。DirectAccess ベースの規則については、DirectAccess セットアップ ウィザードを使用して構成することをお勧めします。

グループ ポリシーで NRPT を構成するには、適切なグループ ポリシー オブジェクトのグループ ポリシー アドインの "コンピューターの構成\ポリシー\Windows の設定\名前解決ポリシー" の設定を使用します。図 1 に例を示します。

 

図 1 グループ ポリシーで構成する NRPT

このグループ ポリシーのアドインでは、新しい NRPT の規則を作成したり、既存の規則を編集または削除できます。各規則について、規則を適用する名前空間の部分、その規則の特殊な処理が特定の証明機関 (CA) に関連付けられているかどうか、規則が DNSSEC ベースの規則で関連設定があるかどうか、規則が DirectAccess ベースの規則で関連設定があるかどうかを指定する必要があります。また、すべての Windows 7 および Windows Server 2008 R2 ベースの DNS クライアントに適用されるグローバルな詳細設定もあります。

規則を適用する名前空間を指定する際には、サフィックス、FQDN、サブネット (IPv4)、サブネット (IPv6)、プレフィックス、または任意を指定できます。特定の複合文字列で終わる DNS 名を指定するには、[サフィックス] を選択して、サフィックス名を入力します。たとえば、contoso.com という文字列で終わる、すべての DNS 名に適用する規則では、[サフィックス] を選択し、「contoso.com」と入力します。特定の単一文字列で始まる DNS 名を指定するには、[プレフィックス] を選択して、プレフィックス名を入力します。たとえば、secsvr という文字列で始まる、すべての DNS 名に適用する規則では、[プレフィックス] を選択し、「secsvr」と入力します。

すべての DNS 名に適用する場合は、[任意] を選択します。DirectAccess ベースの NRPT 規則で [任意] を選択できるのは、"内部ネットワーク経由ですべてのトラフィックをルーティングする" で DirectAccess による強制トンネリングが有効になっている場合に限ります (このポリシーの設定は、"コンピューターの構成\ポリシー\管理用テンプレート\ネットワーク\ネットワーク接続" にあります)。名前が複数の規則と一致する場合、優先順位の最も高いものが適用されます。優先順位は、FQDN、プレフィックス、サフィックス、任意の順です。

IPv4 サブネットを逆解決する DNS 名を指定するには、[サブネット (IPv4)] を選択し、ネットワーク プレフィックス長の表記を使用して IPv4 サブネットのプレフィックスを入力します。たとえば、17.168.192.in-addr.arpa で終わる、すべての DNS 名に適用する規則については、[サブネット (IPv4)] を選択し、「192.168.17.0/24」と入力します。IPv6 サブネットを逆解決する DNS 名を指定するには、[サブネット (IPv6)] を選択し、IPv6 サブネットのプレフィックスを入力します。たとえば、1.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa で終わる、すべての DNS 名に適用する規則については、[サブネット (IPv6)] を選択し、「2001:db8:0:1::/64」と入力します。

規則で DNSSEC を有効にする際には、DNS クライアント サービスでクエリした名前の応答を DNS サーバーで検証する必要があるかどうか、インターネット プロトコル セキュリティ (IPsec) を使用して、DNS 名のクエリのやり取りを保護するかどうかを指定できます。IPsec による保護については、[暗号化なし (整合性のみ)]、[低: 3DES、AES (128、192、256)]、[中: AES (128、192、256)]、および [高: AES (192、256)] を指定できます。DES は、Data Encryption Standard (データ暗号化標準)、AES は Advanced Encryption Standard (高度暗号化標準) の略称です。

規則で DirectAccess を有効にする際には、DirectAccess クライアントがインターネットに接続しているときの名前解決に使用するイントラネットに配置されている一連の DNS サーバーの IPv6 アドレス、Web プロキシを使用するかどうか、DNS 名のクエリのやり取りを保護するのに IPsec を使用するかどうかを指定できます。IPsec による保護についても同じオプションを指定できます。

Windows 7 または Windows Server 2008 R2 を実行しているコンピューターで「netsh namespace show policy」というコマンドを実行すると、そのコンピューターで構成されている一連の NRPT の規則を確認できます。また、「netsh namespace show effectivepolicy」というコマンドを実行すると、一連のアクティブな NRPT の規則を確認できます。

グローバル ポリシーの詳細設定

[グローバル ポリシーの詳細設定] をクリックすると、NRPT グループ ポリシーのアドインでは、既定の [グローバル ポリシーの詳細設定の構成] ダイアログ ボックスが表示されます。図 2 に例を示します。

 

図 2 [グローバル ポリシーの詳細設定の構成] ダイアログ ボックス

[ネットワークの場所の依存関係] では、DirectAccess クライアントの動作を構成できます。選択できるオプションは、[ネットワーク ID (NID) で、DirectAccess 設定を使用する時間を指定する]、[常に NRPT の DirectAccess 設定を使用する]、または [NRPT で DirectAccess を使用しない] です。

[クエリ エラー] では、クエリ エラーのオプションを有効にして、その動作を構成できます。ここでは、DNS 名のクエリの応答で名前が存在しないことが通知された場合にのみローカルでの名前解決 (リンクローカル マルチキャスト名前解決 (LLMNR) と NetBIOS ブロードキャスト) を使用する、名前が存在しないかプライベート IPv4 アドレスを使用するネットワークに配置された DNS サーバーにアクセスできない場合にローカルでの名前解決を使用する、または名前解決に関するエラーが発生した場合には、その種類にかかわらずローカルでの名前解決を使用するという 3 つのいずれかの動作を構成できます。

[クエリ解決] では、クエリ解決のオプションを有効にして、名前を IPv6 アドレスに解決するのか、IPv6 と IPv4 の両方のアドレスに解決するのかを指定できます。

「netsh dns show state」というコマンドを実行すると、これらの設定の現在の構成を確認できます。

NRPT の除外規則

関連する名前空間をできる限り網羅する名前空間を指定すると、NRPT の規則の数を最小限に抑えられます。ただし、このような名前空間に含まれる個別の名前や名前空間に特殊な処理が適用されないように指定しなければならないこともあります。このような場合には、NRPT の除外規則を構成する必要があります。たとえば、waystation.secure.corp.contoso.com という DNS 名は例外とし、secure.corp.contoso.com 名前空間に含まれている、すべての DNS 名に DNSSEC を使用する必要があるとします。

NRPT の除外とは、特殊な処理を適用しないことを指定する規則です。DNSSEC ベースの規則では、DNSSEC を有効にしますが、検証や IPsec による保護は必要としません。また、DirectAccess ベースの規則では、DirectAccess を有効にしますが、イントラネットに配置された一連の DNS サーバー、Web プロキシ、または IPsec による保護は指定しません。NRPT の除外規則で指定した DNS 名は、インターフェイスで構成された DNS サーバーを使用して処理されます。

必要な NRPT の除外規則は、DirectAccess ネットワーク ロケーション サーバーの FQDN 規則です。この規則は、DirectAccess クライアントが、イントラネットに接続しているかどうかを判断するために使用します。DNS 名のクエリをイントラネット サーバーに送信するため、DirectAccess クライアントの NRPT では、イントラネットの名前空間のサフィックスの規則 (たとえば、corp.contoso.com) とイントラネットに配置されている DNS サーバーの IPv6 アドレスが定義されています。ネットワーク ロケーション サーバーは、通常、同じ名前空間 (たとえば、nls.corp.contoso.com) に配置されています。ただし、IPv6 インフラストラクチャによっては、イントラネットに配置されている DNS サーバーに、指定の IPv6 アドレスを使用してアクセスできなくても、インターフェイスで構成された IPv4 アドレスを使用するとアクセスできることがあります。

除外規則がなければ、イントラネットに接続している DirectAccess クライアントは、IPv6 アドレス経由でネットワーク ロケーション サーバーの名前解決を試みます。DirectAccess クライアントは、イントラネットに配置されている DNS サーバーにアクセスできないので、ネットワーク ロケーション サーバーにアクセスできず、イントラネットではなくインターネットに接続していると判断します。この状態では、DirectAccess クライアントは、イントラネット リソースに名前でアクセスできません。そのため、ネットワーク ロケーション サーバー (nls.corp.contoso.com) の除外規則を設定して、イントラネットが正常に検出されるようにする必要があります。DirectAccess のセットアップ ウィザードでは、イントラネット名前空間の NRPT の規則とネットワーク ロケーション サーバーの除外規則が自動的に作成されます。

NRPT のしくみ

ここでは、Windows 7 と Windows Server 2008 R2 で行われる名前解決の処理を紹介します。

  1. アプリケーションでは、DnsQuery() API、GetAddrInfo() または GetHostByName() Windows Sockets API を使用して名前を解決します。フラット名の場合、DNS クライアント サービスでは、構成された DNS サフィックスを使用して FQDN を作成します。
  2. DNS クライアント サービスでは、DNS リゾルバー キャッシュで FQDN を確認します。このキャッシュには、ホスト ファイルのエントリと、最近行われた名前のクエリ結果 (成功と失敗) が含まれています。エントリが検出されると、その結果が使用され、これ以上の処理は行われません。
  3. DNS クライアント サービスでは、NRPT 経由で FQDN を渡して、FQDN の名前空間と一致する名前空間を指定する規則を特定します。
  4. FQDN がどの規則にも一致しない、または一致した規則が除外規則だけの場合、DNS クライアント サービスでは、インターフェイスで構成された DNS サーバーを使用して FQDN の解決を試みます。
  5. FQDN が、1 つの規則に一致し、その規則が除外規則ではない場合、DNS クライアント サービスでは指定の特殊な処理を適用します。
  6. FQDN が複数の規則に一致する場合、DNS クライアント サービスでは、優先順位に従って一致した規則を並べ替えます。優先順位は、FQDN、最も長く一致するプレフィックス、最も長く一致するサフィックス (IPv4 サブネットと IPv6 サブネットを含む)、任意の順です。FQDN に最も厳密に一致するものが最も優先順位の高い規則と判断されます。
  7. 最も厳密に一致する規則を判断したら、DNS クライアント サービスでは指定の特殊な処理を適用します。

まとめ

Windows 7 と Windows Server 2008 R2 の NRPT を使用すると、規則という形で DNSSEC と DirectAccess で必要な DNS 名前クエリの特殊な処理を指定できます (規則では、名前空間、プレフィックス、FQDN、除外を指定できます)。

補足記事: DirectAcces ベースの NRPT 規則の例

Contoso Corporation では、インターネット DNS 名には contoso.com、イントラネット DNS 名には corp.contoso.com という DNS 名前空間を使用しています。ネットワーク ロケーション サーバーの URL (Uniform Resource Locator) は https://nls.corp.contoso.com で、DirectAccess サーバーとして 10.0.0.1 という IPv4 アドレスの DNS サーバーがイントラネット インターフェイスで構成されています。この構成に基づいて、DirectAccess セットアップ ウィザードでは、DirectAccess に対応した次の 2 つの NRPT 規則を作成します。

  1. DNS クエリを 2002:836b:2:1:0:5efe:10.0.0.1 という IPv6 アドレスに送信する corp.contoso.com のサフィックス規則。これは、DirectAccess サーバーのパブリック IPv4 アドレスと DNS サーバーの IPv4 アドレスから派生した IPv6 アドレスです。
  2. nls.corp.contoso.com の除外規則。

DirectAccess クライアントで「netsh namespace show policy」というコマンドを実行すると、これらの規則は次のように表示されます。

 

DNS Name Resolution Policy Table SettingsSettings for nls.corp.contoso.com----------------------------------------------------------------------Certification authority                 : DC=com, DC=contoso, DC=corp,                                          CN=corp-DC1-CADNSSEC (Validation)                     : disabledDNSSEC (IPsec)                          : disabledDirectAccess (DNS Servers)              :DirectAccess (IPsec)                    : disabledDirectAccess (Proxy Settings)           : Bypass proxySettings for .corp.contoso.com----------------------------------------------------------------------Certification authority                 : DC=com, DC=contoso, DC=corp,                                          CN=corp-DC1-CADNSSEC (Validation)                     : disabledDNSSEC (IPsec)                          : disabledDirectAccess (DNS Servers)              : 2002:836b:2:1:0:5efe:10.0.0.1DirectAccess (IPsec)                    : disabledDirectAccess (Proxy Settings)           : Bypass proxy 

Joseph Davies は、マイクロソフトの Windows ネットワーク ライティング チームのプリンシパル テクニカル ライターです。『Windows Server 2008 Networking and Network Access Protection (NAP)』、『Understanding IPv6, Second Edition』、『Windows Server 2008 TCP/IP Protocols and Services』など、Microsoft Press 発行の多数の書籍の著者または共著者です。

関連コンテンツ