win7 ~ 11 的系统,默认 Windows DNS 缓存是 86400 秒,在已经缓存到本地系统时,域名提供商配置的 TTL 值再低也没用
手动干预,再也不用 ipconfig /flushdns
手动刷新 DNS 缓存了
注册表定位到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Dnscache\Parameters\DnsCache
新建/修改 名为 MaxCacheTtl
的 DOWORD 类型键值对,值为 0,表示禁用查询成功的 DNS 缓存,并且忽略域名 TTL 值,每次域名请求,实时请求上游 DNS 服务器,未配置的情况下默认为 86400 秒
新建/修改 名为 MaxNegativeCacheTtl
的 DOWORD 类型键值对,值为 0,表示禁用查询失败的 DNS 结果的缓存时间(未配置的情况下默认为 15 分钟)。
新建/修改 名为 AddrConfigControl
的 DOWORD 类型键值对,值为 0,使 DNS 通过 Teredo 隧道解析
配置后重启 DNS 服务或重启系统生效,随意 ping 几个域名,可以 ipconfig /displaydns
检查效果
测试:目前发现似乎还有个最低 60 秒的缓存时间,由于没做详细控制变量对比,1 分钟误差也无关紧要,就这样吧
备注:NegativeCacheTime、NetFailureCacheTime、NegativeSOACacheTime 为 Win 7 之前的系统使用的参数,新系统已经放弃支持,不再生效
直接干掉Windows的dns缓存,让路由器来承担这个功能