我在 Windows 7 下遇到了以下问题:名称解析使用 DNS 查找的结果,而不是使用本地 hosts 文件中的内容。这与以前的 Windows 版本不同。有什么解决方法可以修复此错误?
例子:
我的本地主机文件包含以下条目(我禁用了 IPv6):
# ::1 localhost
127.0.0.1 localhost
127.0.0.1 svn.mydomain
我可以 ping svn.mydomain 并且 Windows 7 将名称解析为 127.0.0.1,正如预期的那样。
但是,nslookup 将 svn.mydomain 解析为 192.168.4.105,这是来自我办公室网络的域名服务器的条目。Windows XP 正确返回 127.0.0.1。我最近将服务器移到了内部,这就是为什么 svn.mydomain 现在可以通过 DNS 解析,但当我在办公室网络之外时却不能。我宁愿不从 DNS 中删除该主机。
我特意将此条目放入 hosts 中,这样无论网络连接如何,我都可以在我的服务器上创建到 Subversion 存储库的安全隧道 (localhost -> svn.mydomain),并且它配置为仅通过隧道连接进行响应。这个错误破坏了该解决方案,我真的很想“解决”(是的,双关语) 这个问题。
如何防止 Windows 7 名称解析覆盖主机条目?
答案1
nslookup
将返回名称服务器实际返回的内容(顾名思义),但这并不是名称解析的全部。 hosts 文件优先,也可以使用 netbios。
正如您所说的,ping 工作正常,使用操作系统名称解析功能的其他应用程序也应该如此。 nslookup
忽略 hosts 文件是无关紧要的。
答案2
NSLOOKUP 不会查看您的 HOSTS 文件...您直接查询 DNS 服务器。因此,无论您的本地 HOSTS 文件如何,它都会返回 DNS 服务器的记录。