我正在努力解决基于 Windows 的 LAN 上的 DNS 缓存问题。
我注意到,如果我更改由第 3 方名称服务器托管的域上的 DNS 记录,我似乎总是最后一个看到更改发生的人。我经常可以使用 www.whatsmydns.net 等检查全球传播的服务来查询域,但我通常会发现所有其他 DNS 服务器都是正确的,而且只有我自己的服务器具有旧 IP - 甚至 8-12 小时后. 这对我们来说是一个问题,因为我们是网站开发人员并且经常更改 DNS 记录,因此这些巨大的延迟令人沮丧。
这似乎是因为我们局域网(也是我们的本地 DNS 服务器)上的主域控制器服务器(+Active Directory 和 DNS)缓存了 AGES 的记录(远远超出了它发布的 TTL)。如何停止 Windows DNS 服务器缓存,或将缓存时间减少到一个小时左右?
如果我对你的情况的理解是正确的,那是你对你的 DNS 服务器缓存外部记录不满意。您可能想在您的 DNS 服务器(因为它有自己的缓存)和最终用户工作站上试验这些设置。更改注册表后重新启动 DNS 客户端服务。
传入的Microsoft 支持知识库:
使用注册表控制缓存时间
缓存肯定或否定响应的时间长度取决于以下注册表项中的条目值:
正响应的 TTL 是以下值中的较小者:
笔记
如果您不想缓存否定响应,请将 MaxNegativeCacheTtl 注册表设置设置为 0。
要在客户端计算机上设置缓存时间:
在注册表中找到并单击以下项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
在“编辑”菜单上,指向“新建”,单击“DWORD 值”,然后添加以下注册表值:值名称:MaxCacheTtl
数据类型:REG_DWORD 默认值:86400 秒 值数据:如果将客户端 DNS 缓存中的最大 TTL 值降低到 1 秒,这会显示客户端 DNS 缓存已被禁用。
值名称:MaxNegativeCacheTtl
数据类型:REG_DWORD 默认值:900 秒 值数据:如果您不想缓存否定响应,请将值设置为 0。
键入要使用的值,然后单击“确定”。
退出注册表编辑器。