NET: DNS: フォワーダーと条件付きフォワーダーの解決タイムアウト

この記事では、1 つ以上の DNS サーバー IP が DNS サーバーでフォワーダーまたは条件付きフォワーダーとして構成されている場合に存在するフォールバックとタイムアウトの動作について説明します。

適用対象: Windows Server 2012 R2
元の KB 番号: 2834250

概要

DNS クライアント解決タイムアウトの詳細については、NET: DNS: DNS クライアント解決タイムアウトを確認してください。

DNS クライアントと同様に、複数のフォワーダーまたは条件付きフォワーダーを使用して DNS サーバーを構成すると、DNS インフラストラクチャにフォールト トレランスが追加されます。 フォワーダーまたは条件付きフォワーダーとして複数の DNS サーバーを追加すると、基になるネットワーク リンクまたはサポート ネットワーク インフラストラクチャの、構成されている唯一のサーバーで障害が発生した場合でも、引き続き DNS 名を解決できます。

ただし、サーバーにフォールト トレランスを追加することは、現在ハングしている複数のクライアントに代わって一部のサーバーが実行している推移的な操作が発生する可能性があるため、さらに重要です。 その後、リソースは増分的に長い時間消費されます。

この大量のサーバーに対して既定の設定が最適化されていない可能性があるため、3 つ以上のフォワーダー/条件付きフォワーダーを使用する場合は、パラメーターを正しく調整してください。

2 つ以上の DNS サーバーがフォワーダーとして構成されている場合の DNS サーバーの既定の動作

このしくみを理解するために、キー変数は次のとおりです。

  • RecursionTimeout - 検索を終了する前に、リモート サーバーが再帰クライアント クエリに応答するまでドメイン ネーム システム (DNS) が待機する時間。

    これは、 の下 HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**RecursionTimeoutのレジストリに保存され、構成可能です via dnscmd /config /RecursionTimeout <value>

    既定値は次のとおりです。

    • Windows Server 2003 で 15 秒

    • Windows Server 2008、2008 R2、2012 で 8 秒

      RecursionTimeout は DNS サーバー レベルで定義され、クエリされた特定のゾーンとは独立しています。

  • ForwardingTimeout - フォワーダーの一覧内の各サーバーがクエリに応答するまでドメイン ネーム システム (DNS) が待機する時間。

    これは、 の下 HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**ForwardingTimeout のレジストリに保存され、 を介して dnscmd /config /ForwardingTimeout <value>構成できます。

    既定値は次のとおりです。

    • Windows Server 2003 で 5 秒

    • Windows Server 2008、2008R2、2012 で 3 秒

      ForwardingTimeout は DNS サーバー レベルで定義され、クエリ対象の特定のゾーンとは独立しています。

DNS サーバーが権限のないゾーン内のレコードのクエリを受け取り、フォワーダーを使用する必要がある場合、既定の動作は次のようになります。

時刻 (開始からの秒数) アクション
0 クライアントは DNS サーバーに対してクエリを実行します。 DNS サーバーは、最初のフォワーダーにクエリをすぐに転送します
<forwarding_timeout> forwarding_timeout>秒後<、最初のフォワーダーが応答しなかった場合、DNS サーバーは 2 番目のフォワーダーに対してクエリを実行します。
2 * <forwarding_timeout> +1 さらに 1 秒forwarding_timeout>した後<、2 番目のフォワーダーが応答しなかった場合、DNS サーバーは 3 番目のフォワーダーに対してクエリを実行します。
... ...
N * <forwarding_timeout> +(N-1) forwarding_timeout> + 1 秒後<、N 番目のフォワーダーが応答しなかった場合、DNS サーバーは (N+1) 番目のフォワーダーに対してクエリを実行します。

注:

構成された遅延に加えて、システム のオーバーヘッドにより、さらに 5 秒の遅延が発生する可能性があります。

経過時間が RecursionTimeout 値を超えると、アルゴリズムは停止します

RecursionTimeout の有効期限が切れた場合、DNS サーバーはサーバー エラーでクライアントに返信します。

注:

RecursionTimeout の有効期限が切れるとすぐにサーバーエラーが送信されることはありませんが、次のフォワーダーを試す時間が来た場合にのみ送信されます。

RecursionTimeout が応答を取得せずに期限切れになる前にサーバーがすべてのフォワーダーに接続する場合は、名前解決のルート ヒントを使用しようとします (サーバー レベルで再帰が無効になっていない限り、既定の設定)。

つまり、既定の設定では、2008R2 サーバーは最大 3 つのフォワーダーに対してクエリを実行できます。 4 番目のフォワーダーを使用するのに十分な時間がありません。 実際、2008R2 の既定の設定では、サーバーは次のようになります。

  • 0 秒後に最初のフォワーダーを照会する
  • 3.5 秒後に 2 番目のフォワーダーにクエリを実行する
  • 3.5 + 4 = 7.5 秒後に 3 番目のフォワーダーにクエリを実行する

8 秒目の RecursionTimeout は期限切れになるため、4 番目のフォワーダーが照会されるポイントに到達しません (これは 3.5 + 4 + 4 = 11.5 秒後に発生します)。

11.5 秒後にサーバーエラー応答を送信します。

例:

IP アドレス 192.168.0.1 の DNS サーバーは、5 つのフォワーダー (10.0.0.1-10.0.0.5) で構成されます。

クライアントには IP アドレス 10.0.0.31 があり、 Microsoft.com

ネットワーク キャプチャでは、次のネットワーク モニター出力が表示されます (注 10.0.0.4 と 10.0.0.5 はクエリされません)。

タイム タイム オフセット TimeDelta ソース変換先の詳細
6:33:51.7507293 0.2731738 0.0000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03、 QUERY (Standard query)、Query (Standard query) microsoft.com 、Type Host Addr on class Internet
6:33:51.7510021 0.2734466 0.0002728 192.168.0.1 10.0.0.1 DNS:QueryId = 0xBD57、 QUERY (Standard query)、Query (Standard query)、インターネット クラスのホスト Addr 型のクエリmicrosoft.com
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.2 DNS:QueryId = 0xBD57, QUERY (Standard query), microsoft.com Query for type Host Addr on class Internet
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.3 DNS:QueryId = 0xBD57, QUERY (Standard query), microsoft.com Query for type Host Addr on class Internet
6:34:03.3112753 11.8337198 4.0181109 192.168.0.1 10.0.0.31 DNS:QueryId = 0xF03, QUERY (標準クエリ), 応答 - サーバーエラー

2 つ以上の DNS サーバーが条件付きフォワーダーとして構成されている場合の DNS サーバーの既定の動作

フォワーダーと同様に、条件付きフォワーダーには 2 つの重要な変数があります。 RecursionTimeout (サーバー レベルで動作) はまだありますが、このシナリオでは ForwardingTimeout ではなく ForwarderTimeout を使用しています。 特に、 ForwarderTimeout はゾーンベースで動作しており、既定値は異なっています。

  • RecursionTimeout - 検索を終了する前に、リモート サーバーが再帰クライアント クエリに応答するまでドメイン ネーム システム (DNS) が待機する時間。

    レジストリに保存されます。 HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout

    を使用して dnscmd /config /RecursionTimeout <value>構成できます。

    既定値は次のとおりです。

    • Windows Server 2003 で 15 秒

    • Windows Server 2008 および 2008R2 で 8 秒

      RecursionTimeout は DNS サーバー レベルで定義され、クエリ対象の特定のゾーンとは独立しています

  • ForwarderTimeout - 条件付きフォワーダーの一覧内の各サーバーがクエリに応答するまでドメイン ネーム システム (DNS) が待機する時間。

    条件付きフォワーダーは特定のゾーン用に構成されているため、 ForwarderTimeout もゾーンに依存します。

    これは、 の下 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ <zone_name>\ForwarderTimeoutのレジストリに保存されます。

    既定値は、Windows Server 2003、2008、2008R2、2012 では 5 秒です。

    これは、条件付きフォワーダー GUI で確認できる設定でもあります。

DNS サーバーが、権限のないゾーン内のレコードのクエリを受信し、それに条件付きフォワーダーを使用するように構成されている場合、既定の動作は次のようになります。

時刻 (開始からの秒数) アクション
0 クライアントは DNS サーバーに対してクエリを実行します。 DNS サーバーは、クエリを最初の条件付きフォワーダーにすぐに転送します
<forwarder_timeout> forwarder_timeout>秒後<、最初の条件付きフォワーダーが応答しなかった場合、DNS サーバーは 2 番目の条件付きフォワーダーに対してクエリを実行します
2 * <forwarder_timeout> +1 forwarder_timeout> +1 秒後<、2 番目の条件付きフォワーダーが応答しなかった場合、DNS サーバーは 3 番目の条件付きフォワーダーに対してクエリを実行します
... ...
N * <forwarder_timeout> +(N-1) forwarder_timeout> +1 秒後<、N 番目の条件付きフォワーダーが応答しなかった場合、DNS サーバーは (N+1) 番目の条件付きフォワーダーに対してクエリを実行します

注:

構成された遅延に加えて、システム オーバーヘッドのためにさらに 5 秒の遅延が発生する可能性があります

経過時間が RecursionTimeout 値を超えると、アルゴリズムは停止します

RecursionTimeout の有効期限が切れた場合、DNS サーバーはサーバー エラーでクライアントに返信します。

注:

RecursionTimeout の有効期限が切れるとすぐにサーバー エラーが送信されることはありませんが、次の条件付きフォワーダーを試す時間である場合にのみ送信されます。

つまり、既定の設定では、2008 R2 サーバーは最大 2 つの条件付きフォワーダーに対してクエリを実行できます。 3 番目の条件付きフォワーダーを使用するのに十分な時間がありません。 実際、2008R2 の既定の設定では、サーバーは次のようになります。

  • 0 秒後に最初のフォワーダーを照会する
  • 5.5 秒後に 2 番目のフォワーダーにクエリを実行する

8 秒目では RecursionTimeout が期限切れになるため、3 番目の条件付きフォワーダーが照会されるポイントに到達しません (これは 5.5 + 6 = 11.5 秒後に発生します)。

11.5 秒後にサーバーエラー応答を送信します。

例:

IP アドレス 192.168.0.1 を持つ DNS サーバーは、ゾーン Microsoft.comに対して 5 つの条件付きフォワーダー (10.0.0.1-10.0.0.5) で構成されます。

クライアントには IP アドレス 10.0.0.31 があり、 の Microsoft.comクエリを実行しています。

ネットワーク キャプチャでは、次のネットワーク モニター出力が表示されます (注 10.0.0.3、10.0.0.4、および 10.0.0.5 はクエリされません)。

タイム タイム オフセット TimeDelta ソース変換先の詳細
6:50:32.5481816 0.4306857 0.0000000 10.0.0.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (Standard query), microsoft.com Query for type Host Addr on class Internet
6:50:32.5484341 0.4309382 0.0002525 192.168.0.1 10.0.0.1 DNS:QueryId = 0x252B, QUERY (Standard query), microsoft.com Query for type Host Addr on class Internet
6:50:38.1695163 6.0520204 5.6210822 192.168.0.1 10.0.0.2 DNS:QueryId = 0x252B、 QUERY (Standard query)、Query (Standard query) microsoft.com 、Type Host Addr on Class Internet
6:50:44.1856567 12.0681608 6.0161404 192.168.0.1 10.0.0.33 DNS:QueryId = 0x245A, QUERY (標準クエリ), 応答 - サーバーエラー

関連情報