问题
我看到了一个奇怪且极其令人沮丧的问题。
任何未连接到互联网的系统(Windows 7 显示无互联网访问图标,因为它无法持续 ping 微软的服务器)甚至无法访问本地托管的服务器。
假设
问题似乎是,HOSTS
当没有活动的 NIC 时,该文件未用于解析 DNS 条目。
测试/重现
您可以按如下方式重现它:
断开系统与互联网的连接(确保所有有线和无线连接都已断开)。
如果有必要,向文件中添加一个条目
HOSTS
(例如,127.0.0.1 foobar
或127.0.0.1 foobar.com
)打开命令提示符
键入
ping foobar
或ping foobar.com
观察结果
下面的截图显示了一个清晰且具有说明性的示例。在第一个截图中,笔记本电脑无线连接到路由器。该HOSTS
文件只有三个条目,它们解析得很好。在第二个截图中,无线电关闭,因此文件中的条目HOSTS
是被忽略。此外,请注意,localhost
即使没有任何活动的 NIC,ping 仍然有效(就像 一样127.0.0.1
),但它使用的是 IPv6 地址(必须硬编码)。
您可以在未安装 IPv6 的 Windows XP 中看到相同的结果,因此这与 IPv6 无关。我尝试过固定什么应该已解决此问题,127.0.0.1
当台式机系统(没有无线网卡)通过其以太网适配器连接时,从路由器拔出电缆并等待几秒钟后,再次出现此问题,然后重新插入电缆后再次出现此问题。如果不拔出电缆,而是通过软件禁用网卡(网卡[Disable]
的地位对话框或通过装置经理)。
结论
看起来好像HOSTS
只有当有活动 NIC 时才会读取和使用该文件,否则将被忽略。这使得一些这意味着如果没有活动的网络适配器,那么想必不会有任何网络活动,因此不需要通过HOSTS
文件解析主机名。
但是,这种假设是似是而非的,因为它排除了本地托管的虚拟服务器。HOSTS
无论外部 DNS 服务器连接如何,都应使用该文件,否则当未连接到 Internet 时,您无法对本地托管的服务器使用简单/一致/测试生产名称(例如 Web 服务器;Visual Studio、3dsmax 等的帮助服务器;等等)。
问题
有人知道如何强制 Windows 使用该HOSTS
文件,即使没有活动的 NIC?
附录
图1:当无线网卡连接到路由器时(电缆调制解调器处于待机状态,因此没有外部互联网连接)。
图 2:无线电关闭(两种情况下以太网端口均未断开连接)。
图 3:在没有 IPv6 的 XP 中结果相同
答案1
您是否尝试使用 ping 或其他方法检查这些主机名是否解析正确?这可能有助于定位问题。如果正确,则很可能是 MDMarra 所描述的问题。
答案2
最有可能的是,您有一个或多个服务绑定到某个地址或接口,而当您断开电缆连接时,这些服务或接口不再处于“启动”状态。请检查您的配置文件。