NET:DNS:转发器和条件转发器解析超时
10/14/2020
本文内容
本文介绍在 DNS 服务器上将一个或多个 DNS 服务器 IP 配置为转发器或条件转发器时存在的回退和超时行为。
适用于: Windows Server 2012R2
原始 KB 编号: 2834250
摘要
Check NET: DNS: DNS client resolution timeouts for more information about DNS client resolution timeouts.
与 DNS 客户端类似,配置具有多个转发器或条件转发器 DNS 服务器会为 DNS 基础结构增加额外的容错能力。 通过将多个 DNS 服务器添加为转发器或条件转发器,可以在唯一配置的服务器、基础网络链接或支持网络基础结构出现故障时继续解析 DNS 名称。
但是,在服务器上添加容错功能更加关键,因为可能存在一个可传递操作,即某些服务器代表多个客户端执行现在挂起的操作。 然后,资源的使用时间会逐步延长。
如果要使用三个或多个转发器/条件转发器,请确保正确调整参数,因为默认设置可能不会针对此大量服务器进行优化。
当两台以上 DNS 服务器配置为转发器时,DNS 服务器的默认行为是什么
为了了解工作原理,关键变量是:
RecursionTimeout - 域名系统 (DNS) 在终止搜索之前等待远程服务器响应递归客户端查询的时间。
它保存在注册表中的 下, HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\**RecursionTimeout 并且可配置 via dnscmd /config /RecursionTimeout 。
默认值为:
在 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 。
默认值为:
在 Windows Server 2003 上为 5 秒
在 Windows Server 2008、2008R2 和 2012 上为 3 秒
ForwardingTimeout 在 DNS 服务器级别定义,独立于查询的特定区域。
当 DNS 服务器收到对区域中没有权威性的记录的查询,并且需要使用转发器时,默认行为如下:
从 (开始开始的时间)
操作
0
客户端查询 DNS 服务器。 DNS 服务器立即将查询转发到其第一个转发器
在秒后,如果第一个转发器未回复,DNS 服务器将查询第二个转发器。
2 * +1
在 +1 秒后,如果第二个转发器未回复,DNS 服务器将查询第三个转发器。
...
...
N * + (N-1)
在 + 1 秒后,如果第 N 个转发器未回复,DNS 服务器将查询第 1 个转发 (N+1) 。
备注
除了配置的延迟之外,由于系统开销,还可以增加半秒延迟。
当经过的时间超过 RecursionTimeout 值时,算法将停止
如果 RecursionTimeout 过期,DNS 服务器将返回客户端,但出现服务器故障。
备注
我们不会在 RecursionTimeout 过期后立即发送服务器故障,而是仅在尝试下一个转发器时发送。
如果服务器在 RecursionTimeout 过期之前联系所有转发器而不获得答案,它将尝试使用名称解析 (默认设置的根提示,除非在服务器级别) 禁用了递归。
这意味着,使用默认设置,2008R2 服务器最多能够查询 3 个转发器。 将没有足够的时间到达使用第四个转发器。 事实上,对于 2008R2 上的默认设置,服务器将:
在 0 秒后查询第一个转发器
3.5 秒后查询第二个转发器
在 3.5 + 4 = 7.5 秒后查询第三个转发器
在第八秒 ,RecursionTimeout 过期,因此我们不会到达查询第四个转发器 (该点在 3.5 + 4 + 4 = 11.5 秒之后) 。
我们将在 11.5 秒后发送服务器故障响应。
示例:
IP 地址为 192.168.0.1 的 DNS 服务器配置有五个转发器 (10.0.0.1-10.0.0.5) 。
客户端的 IP 地址为 10.0.0.31 且正在查询 Microsoft.com
在网络捕获上,我们将看到以下网络监视器输出 (注意 10.0.0.4 和 10.0.0.5 从不) :
时间时间偏移时间Delta 源目标详细信息
6:33:51.7507293 0.2731738 0.0000000 10.0.0.31 192.168.0.1 DNS:QueryId = 0xF03,QUERY (Standard query) ,Query for microsoft.com of 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 for microsoft.com of type Host Addr on class Internet
6:33:55.2997074 3.8221519 3.5487053 192.168.0.1 10.0.0.2 DNS:QueryId = 0xBD57,QUERY (Standard query) , Query for microsoft.com of type Host Addr on class Internet
6:33:59.2931644 7.8156089 3.9934570 192.168.0.1 10.0.0.3 DNS:QueryId = 0xBD57,QUERY (Standard query) ,Query for microsoft.com of 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 (Standard 查询) ,响应 - 服务器故障
当两台以上 DNS 服务器配置为条件转发器时,DNS 服务器的默认行为是什么
与转发器类似,条件转发器有两个关键变量。 我们仍有 RecursionTimeout (在服务器级别运行) 但在此方案中,我们使用 ForwarderTimeout 而不是 ForwardingTimeout。 特别需要注意的是 ,ForwarderTimeout 以区域为基础运行,并且具有不同的默认值:
RecursionTimeout - 域名系统 (DNS) 在终止搜索之前等待远程服务器响应递归客户端查询的时间。
它保存在注册表中 HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\RecursionTimeout
可通过 进行配置 dnscmd /config /RecursionTimeout 。
默认值为:
在 Windows Server 2003 上为 15 秒
在 Windows Server 2008 和 2008R2 上为 8 秒
RecursionTimeout 在 DNS 服务器级别定义,独立于查询的特定区域
ForwarderTimeout - 域名系统 (DNS) 等待条件转发器列表中的每台服务器响应查询的时间。
由于为特定区域配置了条件转发器,因此 ForwarderTimeout 也依赖于区域。
它保存在注册表中的 下 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DNS Server\Zones\ \ForwarderTimeout 。
对于 Windows Server 2003、2008、2008R2 和 2012,默认值为 5 秒。
这也是您可以在条件转发器 GUI 中看到的设置。
当 DNS 服务器接收对区域中非权威记录的查询,并配置为对记录使用条件转发器时,默认行为如下:
从 (开始开始的时间)
操作
0
客户端查询 DNS 服务器。 DNS 服务器立即将查询转发到其第一个条件转发器
在秒后,如果第一个条件转发器未回复,DNS 服务器将查询第二个条件转发器
2 * +1
在 +1 秒后,如果第二个条件转发器未回复,DNS 服务器将查询第三个条件转发器
...
...
N * + (N-1)
在 +1 秒后,如果第 N 个条件转发器未回复,DNS 服务器将查询第三个 (N+1) N+1
备注
除了配置的延迟之外,由于系统开销,还可以增加半秒延迟
当经过的时间超过 RecursionTimeout 值时,算法将停止
如果 RecursionTimeout 过期,DNS 服务器将返回客户端,但出现服务器故障。
备注
我们不会在 RecursionTimeout 过期后立即发送服务器故障,而是仅在尝试下一个条件转发器时发送。
这意味着,使用默认设置,2008 R2 服务器最多能够查询 2 个条件转发器。 将没有足够的时间到达以使用第三个条件转发器。 事实上,对于 2008R2 上的默认设置,服务器将:
在 0 秒后查询第一个转发器
5.5 秒后查询第二个转发器
在第八秒 ,RecursionTimeout 过期,因此我们不会到达查询第三个条件转发器 (在 5.5 + 6 = 11.5 秒之后) 。
我们将在 11.5 秒后发送服务器故障响应。
示例:
IP 地址为 192.168.0.1 的 DNS 服务器配置有五个条件转发器 (10.0.0.1-10.0.0.5) 区域 Microsoft.com 。
客户端的 IP 地址为 10.0.0.31,并且正在查询 Microsoft.com 。
在网络捕获上,我们将看到以下网络监视器输出 (注意 10.0.0.3、10.0.0.4 和 10.0.0.5 从不) :
时间时间偏移时间Delta 源目标详细信息
6:50:32.5481816 0.4306857 0.0000000 10.0.0.33 192.168.0.1 DNS:QueryId = 0x245A, QUERY (Standard query) , Query for microsoft.com of 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) , Query for microsoft.com of 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 for microsoft.com of 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 (Standard query) , Response - Server failure
参考