NET: DNS: フォワーダーと条件付きフォワーダーの解決タイムアウト
この記事では、1 つ以上の DNS サーバー IP が DNS サーバーでフォワーダーまたは条件付きフォワーダーとして構成されている場合に存在するフォールバックとタイムアウトの動作について説明します。
元の 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 (標準クエリ), 応答 - サーバーエラー