如果 DNS 客户端服务正在运行,Windows 是否会忽略 hosts 文件?

如果 DNS 客户端服务正在运行,Windows 是否会忽略 hosts 文件?

我已经看到很多关于如何在 Windows 7 中编辑 hosts 文件的文章,但它们都是关于如何以管理员身份打开记事本,而不是随后 dns 查找的实际行为。

我读到过,如果 DNS 客户端服务正在运行,XP SP2 中的 hosts 文件将被忽略。我在我的 XP 机器上试过这个,似乎确实如此。我明白拥有一个用户程序可以修改的 hosts 文件是多么安全危险。如果它可以写入主机,那么任何恶意软件都可以轻而易举地在本地欺骗 DNS。

我正在尝试使用 hosts 文件在本地网络上测试内容,而无需访问互联网上的实时站点。同时,我希望能够在普通互联网上使用 dns。

不过我主要只是想了解较新的 Windows 系统上的规则。

谢谢!

答案1

XP 使用 hosts 文件即使在 DNS 客户端正在运行时,也可以进行名称解析。保存文件时,hosts 文件的内容会自动加载到 DNS 解析器缓存中。

名称解析策略表文章对 Win 7 也说了同样的话:

Windows 7 和 Windows Server 2008 R2 的名称解析过程的工作方式如下:

  1. 应用程序使用 DnsQuery() API 或 GetAddrInfo() 或 GetHostByName() Windows Sockets API 来解析名称。如果名称是平面名称,DNS 客户端服务将使用配置的 DNS 后缀创建 FQDN。
  2. DNS 客户端服务检查 DNS 解析器缓存中的 FQDN,其中包含 Hosts 文件中的条目以及最近的正向和负向名称查询的结果。如果找到条目,则使用该结果,并且不会进行进一步处理。

答案2

始终会首先查询 Hosts 文件。如果无法使用 Hosts 文件解析网站,Windows 将向 DNS 服务器查询。

相关内容