减少 Windows DNS 服务缓存

减少 Windows DNS 服务缓存

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

我注意到,如果我更改由第三方名称服务器托管的域上的 DNS 记录,我似乎总是最后一个看到更改发生的人。我经常可以使用检查全球传播的服务(如 www.whatsmydns.net)查询域,但我通常会发现所有其他 DNS 服务器都是正确的,只有我自己的服务器拥有旧 IP - 甚至 8-12 小时后也是如此。这对我们来说是一个问题,因为我们是网站开发人员,经常更改 DNS 记录,因此这些巨大的延迟令人沮丧。

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

答案1

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

传入Microsoft 支持知识库

使用注册表控制缓存时间

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters

肯定响应的 TTL 是以下值中较小者:

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

笔记

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

如果您不想缓存负面响应,请将 MaxNegativeCacheTtl 注册表设置设为 0。

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

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

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\参数

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

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

    值名称:MaxNegativeCacheTtl

    数据类型:REG_DWORD 默认值:900 秒 数值数据:如果不希望缓存负面响应,请将值设置为 0。

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

  • 退出注册表编辑器。

相关内容