我想知道是否有办法控制在给出 NXDOMAIN 响应之前所需的时间。在我看来,如果查询不存在的记录,则服务器需要 3 秒钟才能回复 NXDOMAIN。Windows Server 2008 R2 和 Windows Server 2012 R2 似乎都是这种情况。下面是数据包捕获。就我的问题而言,我的服务器对 example.com 和 example2.com 具有权威性:
09:13:06.846116 IP 10.200.242.165.49505 > 10.200.1.13.53: 33831+ A? asr-1.example.com. (46)
09:13:09.855028 IP 10.200.1.13.53 > 10.200.242.165.49505: 33831 NXDomain* 0/1/0 (112)
我 ping 了一个我知道不存在的主机,但它似乎花了整整 3 秒钟才告诉我它不存在(从 09:13:06 到 09:13:09)。以免你认为它转发到某个地方来解析 asr-1.example.com,如果我这样做,我会得到相同的结果nslookup -norecurse asr-1.example.com.
只是为了向您展示服务器确实很快,这是我在其实际域上查找主机的数据包捕获输出:
09:13:09.855416 IP 10.200.242.165.49542 > 10.200.1.13.53: 47128+ A? asr-1.example2.com. (46)
09:13:09.855889 IP 10.200.1.13.53 > 10.200.242.165.49542: 47128* 1/0/0 (62)
响应时间为 0.4 毫秒...所以并不是我的 DNS 服务器很慢。
那么... 有没有办法配置 DNS 服务器,使其不必等待太长时间才返回其具有权威性的域的 NXDOMAIN 响应?
答案1
我发现了这个问题。我是网络工程师,不是 AD 人员,所以我最初没有设置 DNS——他们只是慷慨地给了我访问权限。问题是域的 WINS 选项卡配置为“使用 WINS 正向查找”。如果单击“高级”,则有一个“查找超时”设置,设置为 2 秒。如果我禁用 WINS 转发,它会立即返回 NXDOMAIN,正如预期的那样。太棒了!
答案2
请注意权威性名称服务器可以立即回复,NXDOMAIN
因为它不必等待货运代理或者迭代查询。在这种情况下,您的 Windows Server 是递归dns服务器。因此总会有些延迟,不过可以稍微调整一下。
可以配置转发查询超时前的秒数。
- 打开域名管理系统。
- 右键单击 DNS 服务器的名称并选择特性。
在转发器选项卡上,单击编辑...。
选择秒数。
- 默认为
3
。 - 最小值应为
2
,否则查询可能会在所有迭代完成之前超时。 >10
秒数也不建议,因为客户端可能会在响应之前超时。
- 默认为
命令行等效于dnscmd /resetforwarders
:
dnscmd <ServerName> /ResetForwarders <MasterIPaddress ...> [/TimeOut <Time>] [/Slave]