Windows 7 停止使用“hosts”文件进行 DNS 解析

Windows 7 停止使用“hosts”文件进行 DNS 解析

我运行的是 Windows 7 Home Premium 64 位。从今天开始,我注意到 DNS 解析无法读取我的%SYSTEMROOT%\System32\drivers\etc\hosts文件。我之所以这么说,是因为我在文件中添加了两个新条目,当我在命令行上运行“nslookup”时,它们无法解析。此外,仅尝试解析“localhost”会导致我的主 DNS 服务器被查询。

我读过几个帖子,建议文件可能已损坏,将其移开并创建一个新文件。我这样做了,但没有任何改善。

是否有某种注册表项控制用于 DNS 解析的资源序列(类似于 Unix 上的 nsswitch.conf)?还有什么原因导致此问题?

答案1

当你运行nslookup在地址上,Windows 将查询 DNS 服务器,而不会查找hosts 文件。总是。但是,当它实际连接时,它将使用主机文件值。尝试将 example.com 添加到您的主机文件中,并使其指向 127.0.0.1。运行nslookup:它将解析为实际 IP 地址。对其进行 ping。您的本地主机将响应。

C:\>nslookup example.com
Server:  
Address:  10.110.5.1

Non-authoritative answer:
Name:    example.com
Address:  192.0.32.10


C:\>ping example.com

Pinging example.com [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 127.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\>

答案2

我无法让我的 hosts 文件在 Windows 7 x64 上运行。糟糕的是,使用完全相同的设置,它在 x86 上运行良好。

因此,我需要使用免费的 ZoneAlarm 个人防火墙来阻止某些程序访问某些网站。我知道这是最不优雅的解决方案,但对我来说,这种情况没有解决办法。

对于我来说,这两者pingnslookup忽略了 hosts 文件,尽管我尝试了几个版本并修改了字符编码但都没有成功。

我不知道是否有其他人可以从我使用的解决方案中受益,但我只是想让你知道它存在并且有效!

答案3

我为此苦苦挣扎了很久,以为是我的杀毒软件或其他东西出了问题。事实上,我的编辑记事本,在文件名中添加了.txt扩展名,从而使系统无法看到它!

检查扩展名。它应该是空的!另请参阅如何将 Hosts 文件重置回默认值?。这会将您的主机文件重置回其最初的状态。

答案4

我遇到了同样的问题,这个在 Win 7 中对我有用。

当您将新条目添加到 hosts 文件时,请确保使用全部空格,不使用制表符。

这对我来说是有用的。

相关内容