为什么“ipconfig /flushdns”不能完全清除您的 DNS?

为什么“ipconfig /flushdns”不能完全清除您的 DNS?

我一直遇到一个问题,“ipconfig /flushdns”+重新启动计算机并不能清除所有 DNS 记录。

它是否应该完全清除 DNS 中的所有记录?
为什么通常不会这样发生?
是否存在某种限制?

答案1

ipconfig /displaydns如果有人问“为什么在我刷新了一些条目之后它们仍然保留下来/flushdns?”,可能会有几种答案:

  1. 程序正在重复解析某个域,因此其信息几乎立即再次被缓存。
  2. DNS 解析器对一些特殊名称进行了硬编码处理(例如localhost)。
  3. DNS 解析器自动读你的/etc/hosts(实际上%SystemRoot%\system32\drivers\etc\hosts)并使用它来填充解析器缓存,这样就不必在 DNS 上实际查找这些名称。这是一个不错的技巧,可以避免每次解析名称时重新读取 /etc/hosts。

如果有人问“为什么在我更改了我的域中的某些内容并运行时/flushdns,我仍然看不到我的更改?”

清除 DNS 中的所有记录在物理上是不可能的,因为 DNS(域名系统)托管在整个互联网上的许多服务器上,您必须销毁所有服务器。

什么ipconfig是访问你计算机的本地缓存从 DNS 查找的信息;如果您清除计算机上的缓存并尝试访问任何域,则计算机必须再次询问配置的 DNS 服务器。

但是,配置的 DNS 服务器(无论是你的路由器、你的 ISP 还是公共服务器(例如 Google 的))它自己的缓存。一旦有人向 DNS 服务器询问8.8.8.8域名superuser.com,该域名就会被缓存在服务器也是如此。因此,在许多情况下,可能会有三层甚至四层缓存:在 Windows 中、在路由器/调制解调器/网关中、在 ISP 中,可能在 ISP 中还有更深的第二层。

答案2

重新启动计算机后,任何 A(主机)记录都将重新添加到缓存中。

停止并启动 dnscache 也不会改变这一点。一些主机记录将自动重新填充。

答案3

感谢讨论。我更改了主机的 A 记录 IP,ping 会命中旧 IP,但 nslookup 显示正确的新 IP。刷新 DNS 没有帮助。果然,主机名和旧 IP 在主机文件中。问题解决了。

相关内容