减少 Window 上的 Windows DNS 服务缓存

Nic*_*ckG 4 domain-name-system windows-server-2003

我正在努力解决基于 Windows 的 LAN 上的 DNS 缓存问题。

我注意到,如果我更改由 3rd 方名称服务器托管的域上的 DNS 记录,我似乎总是最后一个看到更改发生的人。我经常可以使用像 www.whatsmydns.net 这样检查世界范围内传播的服务来查询域,但我通常发现所有其他 DNS 服务器都是正确的,只有我自己的服务器拥有旧 IP - 即使是 8-12 小时后. 这对我们来说是一个问题,因为我们是网站开发人员并且经常对 DNS 记录进行更改,因此这些巨大的延迟令人沮丧。

这似乎是因为我们 LAN 上的主域控制器服务器(+Active Directory 和 DNS)(这也是我们的本地 DNS 服务器)缓存了 AGES 的记录(远远超出了它发布的 TTL)。如何阻止 Windows DNS 服务器缓存,或将缓存减少到一个小时左右?

Rya*_*ies 6

如果我正确理解您的情况,那就是您对 DNS 服务器对外部记录的缓存不满意。您可能希望在 DNS 服务器(因为它有自己的缓存)和最终用户工作站上试验这些设置。更改注册表后重新启动 DNS 客户端服务。

传入Microsoft 支持知识库

使用注册表控制缓存时间

缓存肯定或否定响应的时间长度取决于以下注册表项中条目的值:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters
Run Code Online (Sandbox Code Playgroud)

正面响应的 TTL 是以下值中的较小者:

  • 解析器收到的查询响应中指定的秒数
  • MaxCacheTtl 注册表设置的值。

笔记

  • 肯定响应的默认 TTL 为 86,400 秒(1 天)。
  • 否定响应的 TTL 是 MaxNegativeCacheTtl 注册表设置中指定的秒数。
  • 否定响应的默认 TTL 为 900 秒(15 分钟)。

如果您不希望缓存否定响应,请将 MaxNegativeCacheTtl 注册表设置设置为 0。

要在客户端计算机上设置缓存时间:

  • 启动注册表编辑器 (Regedit.exe)。
  • 在注册表中找到并单击以下项:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters

  • 在“编辑”菜单上,指向“新建”,单击“DWORD 值”,然后添加以下注册表值: 值名称:MaxCacheTtl

    数据类型:REG_DWORD 默认值:86400 秒 数值数据:如果将客户端 DNS 缓存中的最大 TTL 值降低到 1 秒,这会显示客户端 DNS 缓存已被禁用。

    值名称:MaxNegativeCacheTtl

    数据类型:REG_DWORD 默认值:900 秒数值数据:如果您不想缓存否定响应,请将值设置为 0。

  • 键入要使用的值,然后单击“确定”。

  • 退出注册表编辑器。