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

How*_*Gee 9 dns cache command-line ipconfig

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

它是否应该完全刷新 DNS 中的所有记录?
为什么通常不会发生这样的事情?
有什么限制吗?

use*_*686 20

如果有人问“为什么有些条目ipconfig /displaydns即使在我用 刷新后仍然存在/flushdns?”,它会有几种可能的答案:

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

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

清除 DNS 中的所有记录实际上是不可能的,因为 DNS(域名系统)托管在整个 Internet 上的许多服务器上,您必须销毁所有这些记录。

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

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