DNS ポリシーの概要

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016

このトピックを使用して、Windows Server 2016 の新機能である DNS ポリシーについて学習することができます。 DNS ポリシーを使用して地理的な場所に基づくトラフィック管理や時刻に基づくインテリジェント DNS 応答を実現し、スプリット ブレイン展開用に構成された単一の DNS サーバーを管理して、DNS クエリに対するフィルターの適用などを行うことができます。 次の項目では、これらの機能の詳細を示します。

  • アプリケーションの負荷分散。 複数の異なる場所にアプリケーションの複数のインスタンスをデプロイした場合は、DNS ポリシーを使用して、アプリケーションのトラフィック負荷を動的に割り当て、アプリケーション インスタンス間でトラフィック負荷のバランスを取ることができます。

  • 地理的な場所に基づくトラフィック管理。 DNS ポリシーを使用して、プライマリとセカンダリの DNS サーバーが、クライアントとクライアントが接続しようとしているリソースの両方の地理的な場所に基づいて DNS クライアントのクエリに応答でき、最も近いリソースの IP アドレスをクライアントに提供します。

  • スプリット ブレイン DNS。 スプリット ブレイン DNS では、DNS レコードが同じ DNS サーバー上の異なるゾーン スコープに分割され、DNS クライアントは、それらが内部、外部のどちらのクライアントであるかに基づいて応答を受信します。 スプリット ブレイン DNS は、Active Directory 統合ゾーン用またはスタンドアロン DNS サーバー上のゾーン用に構成できます。

  • フィルター処理します。 DNS ポリシーは、指定した条件に基づいてクエリ フィルターを作成するように構成できます。 DNS ポリシーのクエリ フィルターを使用すると、DNS クエリと DNS クエリを送信する DNS クライアントに基づくカスタムな方法で応答するよう、DNS サーバーを構成できます。

  • フォレンジクス。 DNS ポリシーを使用すると、悪意のある DNS クライアントを、それがアクセスしようとしているコンピューターではなく、存在しない IP アドレスにリダイレクトできます。

  • 時刻に基づくリダイレクト。 DNS ポリシーを使用すると、時刻に基づく DNS ポリシーにより、地理的に分散したアプリケーションのさまざまなインスタンス間でアプリケーションのトラフィックを分散できます。

新しい概念

上記のシナリオをサポートするポリシーを作成するには、ゾーン内のレコードのグループや、ネットワーク上のクライアントのグループなどの要素を識別できる必要があります。 これらの要素は、次の新しい DNS オブジェクトによって表現されます。

  • クライアント サブネット: クライアント サブネット オブジェクトは、DNS サーバーに送信されるクエリの送信元の IPv4 または IPv6 サブネットを表します。 サブネットを作成して、要求の送信元になるサブネットに基づいて適用されるポリシーを後で定義できます。 たとえば、スプリット ブレイン DNS シナリオでは、www.microsoft.com などの名前の解決要求に対して、内部サブネットのクライアントには内部 IP アドレス、外部サブネットのクライアントには別の IP アドレスで応答できます。

  • 再帰のスコープ: 再帰のスコープは、DNS サーバーで再帰を制御する設定のグループの一意のインスタンスです。 再帰のスコープは、フォワーダの一覧が含まれていて、再帰が有効になっているかどうかを指定します。 DNS サーバーは、多くの再帰スコープを持つことができます。 DNS サーバーの再帰ポリシーを使用すると、一連のクエリの再帰スコープを選択できます。 DNS サーバーが特定のクエリの権限を持っていない場合は、DNS サーバーの再帰ポリシーで、それらのクエリを解決する方法を制御できます。 使用するフォワーダと、再帰を使用するかどうかを指定できます。

  • ゾーン スコープ: DNS ゾーンには複数のゾーン スコープが存在する場合があります。各ゾーン スコープには、独自の DNS レコードのセットが含まれています。 同じレコードが、異なる IP アドレスで複数のスコープに存在する可能性があります。 また、ゾーン転送はゾーン スコープ レベルで行われます。 つまり、プライマリ ゾーン内の 1 つのゾーン スコープのレコードは、セカンダリ ゾーン内の同じゾーン スコープに転送されます。

ポリシーの種類

DNS ポリシーは、レベルと種類によって分類されます。 クエリ解決ポリシーを使用してクエリの処理方法を定義し、ゾーン転送ポリシーを使用してゾーン転送の実行方法を定義できます。 各ポリシーの種類は、サーバー レベルまたはゾーン レベルで適用できます。

クエリ解決ポリシー

DNS クエリ解決ポリシーを使用して、受信する解決クエリを DNS サーバーで処理する方法を指定できます。 すべての DNS クエリ解決ポリシーには、次の要素が含まれています。

フィールド 説明 設定可能な値
名前 ポリシー名 - 256 文字まで
- ファイル名に有効な任意の文字を含めることができます
State [ポリシーの状態] - 有効 (既定値)
- 無効
Level ポリシー レベル - サーバー
- ゾーン
[処理順序] クエリがレベルによって分類されて適用されると、サーバーはクエリが条件に一致する最初のポリシーを検索し、クエリに適用します - 数値
- 同じレベルを含み、値に適用されるポリシーごとの一意の値
操作 DNS サーバーによって実行されるアクション - 許可 (ゾーン レベルの場合の既定値)
- 拒否 (サーバー レベルでの既定値)
- 無視
条件 ポリシー条件 (AND/OR) と、ポリシーを適用するために満たされる条件の一覧 - 条件演算子 (AND/OR)
- 条件の一覧 (下の条件表を参照)
スコープ ゾーン スコープの一覧およびスコープごとの重み付け値。 重み付け値は負荷分散に使用されます。 たとえば、この一覧に重み 3 の datacenter1 と、重み 5 の datacenter2 が含まれる場合、サーバーは 8 回の要求のうち 3 回、datacentre1 からのレコードで応答します - ゾーン スコープの一覧 (名前別) と重み

注意

サーバー レベルのポリシーは、アクションとして Deny または Ignore の値のみを持つことができます。

DNS ポリシー条件フィールドは、次の 2 つの要素で構成されます。

名前 説明 サンプルの値
クライアント サブネット 定義済みのクライアントのサブネットの名前です。 クエリの送信元となるサブネットを確認するために使用します。 - EQ,Spain,France - サブネットが Spain または France のいずれかとして識別された場合、true に解決されます
- NE,Canada,Mexico - クライアント サブネットが Canada と Mexico 以外のサブネットの場合、true に解決されます
トランスポート プロトコル トランスポート プロトコル クエリで使用をします。 可能なエントリは UDPTCP です。 - EQ,TCP
- EQ,UDP
インターネット プロトコル クエリで使用されるネットワーク プロトコルです。 可能なエントリは IPv4IPv6 です。 - EQ,IPv4
- EQ,IPv6
サーバーのインターフェイスの IP アドレス 受信 DNS サーバー ネットワーク インターフェイスの IP アドレス - EQ,10.0.0.1
- EQ,192.168.1.1
FQDN ワイルドカードを使用する可能性があるクエリ内のレコードの FQDN - EQ,www.contoso.com - クエリが www.contoso.com FQDN の問題を解決しようとしている場合にのみ true に解決されます
- EQ,*.contoso.com,*.woodgrove.com - クエリが contoso.com または woodgrove.com で終わるレコードに対してである場合に true に解決されます
クエリの種類 クエリを実行するレコードの種類 (A、SRV、TXT) - EQ,TXT,SRV - クエリが TXT または SRV レコードを要求している場合に true に解決されます
- EQ,MX - クエリが MX レコードを要求している場合に true に解決されます
時刻 クエリが受信された時刻 - EQ,10:00-12:00,22:00-23:00 - クエリが午前 10 時から正午の間に受信された場合、または午後 10 時から午後 11 時の間に受信された場合に true に解決されます

上の表を出発点として使用して、次の表を使用して、インターフェイス 10.0.0.3 を介して午後 8 時から午後 10 時までの間に TCP 経由で 10.0.0.0/24 サブネット内のクライアントから送信される contoso.com ドメイン内の、SRV レコードを除くあらゆる種類のレコードに対するクエリと一致するために使用される条件を定義できます。

名前
クライアント サブネット EQ,10.0.0.0/24
トランスポート プロトコル EQ,TCP
サーバーのインターフェイスの IP アドレス EQ,10.0.0.3
FQDN EQ,*.contoso.com
クエリの型 NE,SRV
時刻 EQ,20:00-22:00

処理順序の値が異なっていれば、同じレベルの複数のクエリ解決ポリシーを作成できます。 複数のポリシーが使用可能な場合、DNS サーバーは次の方法で受信クエリを処理します。

DNS policy processing

再帰ポリシー

再帰ポリシーは、特別な種類のサーバー レベル ポリシーです。 再帰ポリシーでは、DNS サーバーがクエリの再帰を実行する方法を制御します。 再帰ポリシーは、クエリ処理が再帰パスに達した場合にのみ適用されます。 一連のクエリの再帰に対して DENY または IGNORE の値を選択できます。 または、一連のクエリに対して一連のフォワーダを選択できます。

再帰ポリシーを使用して、スプリット ブレイン DNS 構成を実装できます。 この構成では、DNS サーバーは、一連のクライアントに対してクエリの再帰を実行しますが、この DNS サーバーは、別のクライアントに対してそのクエリの再帰を実行しません。

再帰ポリシーには、通常の DNS クエリ解決ポリシーに含まれているのと同じ要素のほかに、次の表の要素が含まれています。

名前 説明
Apply on recursion (再帰時に適用する) このポリシーを再帰にのみ使用する必要がある場合に指定します。
Recursion Scope (再帰スコープ) 再帰スコープの名前。

注意

再帰ポリシーは、サーバー レベルでのみ作成できます。

ゾーン転送ポリシー

ゾーン転送ポリシーは、ゾーン転送が DNS サーバーによって許可されるかどうかを制御します。 ゾーン転送ポリシーは、サーバー レベルまたはゾーン レベルで作成できます。 サーバー レベル ポリシーは、DNS サーバーで実行されるすべてのゾーン転送クエリに適用されます。 ゾーン レベル ポリシーは、DNS サーバーでホストされているゾーンのクエリにのみ適用されます。 ゾーン レベル ポリシーの最も一般的な使用方法は、ブロック リストまたはセーフ リストを実装する場合です。

注意

ゾーン転送ポリシーでは、アクションとして DENY または IGNORE のみを使用できます。

次のサーバー レベルのゾーン転送ポリシーを使用して、特定のサブネットからの contoso.com ドメインのゾーン転送を拒否できます。

Add-DnsServerZoneTransferPolicy -Name DenyTransferOfContosoToFabrikam -Zone contoso.com -Action DENY -ClientSubnet "EQ,192.168.1.0/24"

処理順序の値が異なっていれば、同じレベルの複数のゾーン転送ポリシーを作成できます。 複数のポリシーが使用可能な場合、DNS サーバーは次の方法で受信クエリを処理します。

DNS process for multiple zone transfer policies

DNS ポリシーの管理

PowerShell を使用して DNS ポリシーを作成および管理できます。 次の例では、DNS ポリシーを使用して構成できるさまざまなサンプル シナリオを示します。

トラフィック管理

DNS クライアントの場所に応じて、FQDN に基づいてトラフィックを別のサーバーに送信できます。 次の例は、トラフィック管理ポリシーを作成して、顧客を特定のサブネットから北米のデータセンターに、別のサブネットからヨーロッパのデータセンターに送信する方法を示しています。

Add-DnsServerClientSubnet -Name "NorthAmericaSubnet" -IPv4Subnet "172.21.33.0/24"
Add-DnsServerClientSubnet -Name "EuropeSubnet" -IPv4Subnet "172.17.44.0/24"
Add-DnsServerZoneScope -ZoneName "Contoso.com" -Name "NorthAmericaZoneScope"
Add-DnsServerZoneScope -ZoneName "Contoso.com" -Name "EuropeZoneScope"
Add-DnsServerResourceRecord -ZoneName "Contoso.com" -A -Name "www" -IPv4Address "172.17.97.97" -ZoneScope "EuropeZoneScope"
Add-DnsServerResourceRecord -ZoneName "Contoso.com" -A -Name "www" -IPv4Address "172.21.21.21" -ZoneScope "NorthAmericaZoneScope"
Add-DnsServerQueryResolutionPolicy -Name "NorthAmericaPolicy" -Action ALLOW -ClientSubnet "eq,NorthAmericaSubnet" -ZoneScope "NorthAmericaZoneScope,1" -ZoneName "Contoso.com"
Add-DnsServerQueryResolutionPolicy -Name "EuropePolicy" -Action ALLOW -ClientSubnet "eq,EuropeSubnet" -ZoneScope "EuropeZoneScope,1" -ZoneName contoso.com

スクリプトの最初の 2 行で、北米とヨーロッパのクライアント サブネット オブジェクトを作成します。 その後の 2 行で、地域ごとに 1 つずつ、contoso.com ドメイン内にゾーン スコープを作成します。 その後の 2 行では、ww.contoso.com を異なる IP アドレスに関連付ける各ゾーンのレコードが作成されます (1 つはヨーロッパ用、もう 1 つは北米用)。 最後に、スクリプトの最後の行で 2 つの DNS クエリ解決ポリシーが作成され、1 つは北米のサブネットに、もう 1 つはヨーロッパのサブネットに適用されます。

ドメインのクエリをブロックする

DNS クエリ解決ポリシーを使用して、ドメインへのクエリをブロックできます。 次の例では、treyresearch.net へのすべてのクエリがブロックされます。

Add-DnsServerQueryResolutionPolicy -Name "BlackholePolicy" -Action IGNORE -FQDN "EQ,*.treyresearch.com"

サブネットからのクエリをブロックする

特定のサブネットからのクエリをブロックすることもできます。 次のスクリプトでは、172.0.33.0/24 のサブネットを作成し、そのサブネットからのすべてのクエリを無視するポリシーを作成します。

Add-DnsServerClientSubnet -Name "MaliciousSubnet06" -IPv4Subnet 172.0.33.0/24
Add-DnsServerQueryResolutionPolicy -Name "BlackholePolicyMalicious06" -Action IGNORE -ClientSubnet  "EQ,MaliciousSubnet06"

内部クライアントの再帰を許可する

DNS クエリ解決ポリシーを使用して、再帰を制御できます。 次のサンプルを使用すると、スプリット ブレイン シナリオで外部クライアントの再帰を無効にしながら、内部クライアントの再帰を有効にできます。

Set-DnsServerRecursionScope -Name . -EnableRecursion $False
Add-DnsServerRecursionScope -Name "InternalClients" -EnableRecursion $True
Add-DnsServerQueryResolutionPolicy -Name "SplitBrainPolicy" -Action ALLOW -ApplyOnRecursion -RecursionScope "InternalClients" -ServerInterfaceIP  "EQ,10.0.0.34"

スクリプトの最初の行では、再帰を無効にするために、単に "."(ドット) という名前で既定の再帰スコープを変更します。 2 行目では、再帰が有効にして、InternalClients という名前の再帰スコープが作成されます。 3 行目では、IP アドレスとして 10.0.0.34 を持つサーバー インターフェイスを介して入力されるあらゆるクエリに、新しく作成された再帰スコープを適用するポリシーを作成します。

サーバー レベルのゾーン転送ポリシーを作成する

DNS ゾーン転送ポリシーを使用して、ゾーン転送をより細かな形態で制御できます。 次のサンプル スクリプトを使用して、特定のサブネット上の任意のサーバーのゾーン転送を許可できます。

Add-DnsServerClientSubnet -Name "AllowedSubnet" -IPv4Subnet 172.21.33.0/24
Add-DnsServerZoneTransferPolicy -Name "NorthAmericaPolicy" -Action IGNORE -ClientSubnet "ne,AllowedSubnet"

スクリプトの最初の行では、IP ブロック 172.21.33.0/24 を使用する AllowedSubnet という名前のサブネット オブジェクトを作成します。 2 行目では、前に作成したサブネット上の任意の DNS サーバーへのゾーン転送を許可するゾーン転送ポリシーを作成します。

ゾーン レベルのゾーン転送ポリシーを作成する

ゾーン レベルのゾーン転送ポリシーを作成することもできます。 次の例では、IP アドレスが 10.0.0.33 のサーバー インターフェイスから入力される contoso.com に対するゾーン転送の要求が無視されます。

Add-DnsServerZoneTransferPolicy -Name "InternalTransfers" -Action IGNORE -ServerInterfaceIP "eq,10.0.0.33" -PassThru -ZoneName "contoso.com"

DNS ポリシーのシナリオ

特定のシナリオで DNS ポリシーを使用する方法については、このガイドの次のトピックを参照してください。

読み取り専用ドメイン コントローラーでの DNS ポリシーの使用

DNS ポリシーは、読み取り専用ドメイン コントローラーと同時に使用できます。 読み取り専用ドメイン コントローラーに新しい DNS ポリシーを読み込むには、DNS サーバー サービスの再起動が必要であることに注意してください。 これは、書き込み可能なドメイン コントローラーでは必要ありません。