DNS 解析故障转移到辅助 DNS - 为什么?

dun*_*nxd 4 networking domain-name-system vpn wide-area-network

我们有大量的分支机构通过 VPN 连接,但没有任何类型的服务器基础设施。每个办公室中的客户端计算机从 ASA 5505 获取其网络配置,该 ASA 5505 也用于 VPN 连接。

Windows XP 客户端计算机配置为使用我们公司的一台 DNS 服务器作为主要服务器,ISP 的 DNS 服务器作为辅助服务器。这个想法是,如果 VPN 连接因任何原因失败,办公室的员工仍然可以访问互联网,并访问我们的网络邮件和家庭访问门户。在大多数情况下,这可以正常工作。

然而,对于位于南美洲的办公室,我们看到客户端计算机上的 DNS 解析定期针对 ISP DNS 服务器进行 - 这导致我们的公司资源实际上无法供办公室员工使用。

客户端机器能够 ping 公司 DNS 服务器正常。在对公司主机名进行 nslookup 时,我得到了回复。

我认为正在发生以下情况之一(或组合):

  • 我们公司的 DNS 服务器并不总是及时回复请求(尽管为什么这只会影响我不知道的一个地理区域的客户)
  • 来自拉丁美洲的 DNS 查询以某种方式延迟,导致客户端将其视为失败(尽管我们在速度较慢的 VSAT 连接末端设有办公室,但没有此问题)
  • 单个失败导致 Windows 中的 DNS 缓存条目,以某种方式导致后续尝试不进行查找

有没有其他人遇到过这个问题?关于决议的任何想法?

gre*_*mac 5

Windows按以下顺序查询 DNS

  • 主机文件
  • 本地 DNS 缓存
  • 首选 DNS 服务器
  • 其他 DNS 服务器

MS也有一篇文章描述了如何获得DNS服务器列表

DNS 客户端服务使用按偏好排序的服务器搜索列表。此列表包括为系统上的每个活动网络连接配置的所有首选和备用 DNS 服务器。

该列表是根据以下标准排列的:

  • 首选 DNS 服务器具有第一优先级。
  • 如果没有首选 DNS 服务器可用,则使用备用 DNS 服务器。
  • 从这些列表中暂时删除无响应的服务器。

Windows 有一个不断升级的 DNS 请求超时

Value      Default value  Attempt
1st limit       1 second  Query the preferred DNS server on a preferred connection.
2nd limit      2 seconds  Query the preferred DNS server on all connections.
3rd limit      2 seconds  Query all DNS servers on all connections (1st attempt).
4th limit      4 seconds  Query all DNS servers on all connections (2nd attempt).
5th limit      8 seconds  Query all DNS servers on all connections (3rd attempt).
6th value                 (Must be 0.)
Run Code Online (Sandbox Code Playgroud)

我在这点上找不到明确的答案,但听起来如果它在 1 秒或 2 秒(分别是第一次或第二次尝试)内没有从您的主 DNS 获得响应,那么该服务器将从DNS 服务器查找列表 15 分钟,因此它将使用辅助 DNS 服务器。由于这些服务器有长达 8 秒的超时时间,因此它们更有可能做出响应。(我不清楚它是否在第 3 次以上尝试期间继续查询首选 DNS 服务器,如果它已经失败了)。

我还怀疑您确实存在该地理区域的 WAN 延迟问题,因为这可以解释超时起作用的原因。


一种解决方案是使用DNSQueryTimeouts注册表参数更改 DNS 查询超时。另见http://drewthaler.blogspot.com/2005/09/changed-dns-query-timeout-in-windows.html


另一种解决方案是在网络上放置一个本地缓存 DNS 服务器,并让客户端使用它。您可以使用路由器内置的 DNS 服务器,或者安装类似dnsmasq 的东西。


小智 5

根据 Technet http://blogs.technet.com/b/stdqry/archive/2011/12/15/dns-clients-and-timeouts-part-2.aspx,稍后对多个 DNS 服务器进行并行查询。

大多数人只有一个网络连接和一个快速的宽带连接,通常应该会在 1 秒内收到 DNS 响应。

因此,我将 DNSQueryTimeouts 设置为 1 1 1 10 10 0,以便尽快向所有 DNS 服务器发出并行查询。然后我首先将我的 ISP 的 DNS 服务器放在列表中(因为它们在物理上最接近并且最不可能受到网络数据包丢失的影响,后面有几个公共 DNS 服务器,让 Windows 做它的事情。

我的网页浏览速度大大加快了!!!

当您想要在内部解析内部主机名时,显然不要在企业环境中优先考虑 ISP DNS 服务器!