断开连接时忽略HOSTS

问题

我看到一个奇怪而令人沮丧的问题。

任何没有连接到互联网的系统(Windows 7显示没有互联网访问图标,因为它不能不断地ping微软的服务器)甚至不能访问本地托pipe的服务器。

假设

问题似乎是当没有活动的NIC时, HOSTS文件没有用于parsingDNS条目。

testing/复制

您可以像这样重现它:

  1. 断开系统与互联网的连接(确保所有有线和无线连接都已断开)。

  2. 如有必要,向HOSTS文件添加一个条目(例如, 127.0.0.1 foobar127.0.0.1 foobar.com

  3. 打开命令提示符

  4. 键入ping foobarping foobar.com

意见

下面的截图显示了一个清晰的示例。 在第一个快照中,笔记本电脑通过无线方式连接到路由器。 HOSTS文件只有三个条目,他们解决得很好。 在第二个快照中,无线电closures,因此HOSTS文件中的条目被忽略 。 此外,请注意,即使没有任何活动的NIC(如127.0.0.1 ),ping localhost仍能正常工作,但它使用的是IPv6地址(必须是硬编码的)。

在Windows XP中,您可以看到相同的结果,而没有安装IPv6,所以它与IPv6无关。 我尝试了解应该如何解决127.0.0.1而桌面系统(没有无线网卡)通过其以太网适配器连接,然后再从路由器拉出电缆,等待几秒钟,然后再次插入后,再次同样的事情发生,如果不是拉出电缆,通过软件[Disable] NIC(NIC 状态对话框中的[Disable]button或通过设备pipe理器 )。

结论

它看起来好像HOSTS文件只有被读取和使用,如果有一个活跃的网卡,否则它被忽略。 这是有道理的,如果没有活动的networking适配器,那么可能不会有任何networking活动,因此不需要通过HOSTS文件来parsing主机名。

这个假设是似是而非的,因为它排除了本地托pipe的虚拟服务器。 无论外部DNS服务器连接如何,都应该使用HOSTS文件,否则当不连接到Internet时,不能使用本地托pipe服务器的简单/一致性/testing生产名称(例如,Web服务器; Visual Studio,3dsmax等的帮助服务器。; 等等)。

有谁知道如何强制Windows使用HOSTS文件,即使没有活动的NIC?


附录

图1 :无线网卡连接到路由器时(电缆调制解调器处于待机状态,因此没有外部Internet连接)。

连接的

图2 :closures无线射频(以太网端口在两种情况下均不连接)。

未连接

图3 :没有IPv6的XP中的结果相同

XP没有IPv6

你有没有尝试检查这些主机名是否用ping或其他方法正确parsing? 这可能有助于找出问题。 如果是的话,这很可能是MDMarra描述的问题。

很有可能你有一个服务或服务绑定到一个地址或接口,当你已经断开电缆不再“上”。 检查你的configuration文件。