我正在阅读有关 DNS 缓存的文章,特别是有关ipconfig /flushdns
命令的文章。有很多资源(QA、博客、网站)解释了什么是 DNS 缓存,但没有一个说在哪里DNS 缓存位于我的 Windows 8.1 计算机上。如果我没记错的话,它应该是一个带有映射的文件,如下所示:
example.com 123.123.123.123
foo.net 123.123.0.0
在运行之前ipconfig /flushdns
,我想查看 DNS 缓存文件。在我的计算机上哪里可以找到它?
答案1
如果您想查看 DNS 缓存,最新版本的 Microsoft Windows 支持IPConfig /displaydns
(我认为 Windows 98 不支持它;Win98 也不支持ipconfig /flushdns
。我猜这两个选项都添加到了同一版本的 Microsoft Windows 中。)
这是查看此类信息的典型/简单方法。
我不确定这些信息存储在哪个文件中。我很确定它不使用您显示的类似 HOSTS 的格式,因为我确定它还会跟踪到期时间。使用 Process Explorer 可能有助于找出使用时访问了哪个文件IPConfig/displaydns
。
答案2
答案3
缓存可能保存在内存中,并且本地 DNS 服务可能不会保留缓存文件,但还有更多内容。
我的 ipconfig /displaydns 在每次重启之间都会保留条目。它必须保存在磁盘上的某个地方。
我今天遇到了 DNS 问题,在检查旧虚拟机时,我在本地 DNS 缓存中发现了一些非常旧的条目。这些条目来自我以前的公司,起初我以为他们可能在入侵,或者我仍然以某种方式连接到他们的网络。但它们也包含我自己的一些很久以前的虚拟机条目。
ipconfig /flushdns 不会清除条目。我尝试停止并重新启动 dns 服务。没有帮助。我断开了路由器与互联网的连接,但条目仍然保留。然后我记得那个虚拟机很久以前曾经是域控制器和 dns 服务器,所以我怀疑有些东西没有正确卸载。
我使用了 procman.exe 并隔离了响应 ping 请求的 svchost.exe 实例。在 ping 时,它打开了 hosts 文件,没有其他任何东西。我真傻,我应该在开始这一切之前检查一下 hosts 文件。所有旧条目都在 hosts 文件中。一旦它们被清除,它们就不会出现在 ipconfig /displaydns 中。
当本地 DNS 服务停止并重新启动时,现有条目将被清除,因此这往往证实它们仅保存在缓存中。但是,是的,通过本地 DNS 进行 ping 使用的持久 ipconfig dns 条目位于 c:\windows\system32\drivers\etc\hosts。
希望这可以帮助其他试图解决此问题的人。