具有重复的NT主机文件条目的预期行为?


12

我知道您在Windows NT主机文件中不应该有重复的条目windows\system32\drivers\etc\hosts,但是如果您有它们,则预期的行为是什么?

Windows NT主机文件(windows\system32\drivers\etc\hosts)中可以有多个具有相同主机名但地址不同的条目。当您访问网络上的主机时,Windows DNS系统会将其解析为这些条目之一。我如何知道将使用哪个条目?

例如:

127.0.0.1    mydomain.com
192.168.1.1  mydomain.com

编辑:此特定示例似乎强制特殊行为。环回似乎会覆盖任何条目,无论顺序如何。

要么:

192.168.1.2  mydomain.com
192.168.1.1  mydomain.com

我看到列表中的第一个条目优先。

但是,我看到的行为是否得到保证,是特定于版本的,还是通常不可靠?

我问的原因是因为我正在编写一些脚本来处理主机,所以我试图弄清楚是否可以可靠地选择其中一个脚本来删除/注释掉,并希望对用户系统没有影响。


只是注意到,这127.0.0.1似乎迫使特殊行为。我编辑了这个问题,询问不同的情况……
Merlyn Morgan-Graham

谁说不能有多个具有相同域名和不同IP地址的条目?当然不是微软。 根据微软的说法,这是完全合法的事情。
JdeBP

@JdeBP:我知道这是第二个问题,但是如果主机是多宿主的,那意味着什么,这对我有什么用?如果我ping通,我只会得到一个地址。如果我尝试终端服务也一样。顺便说一句,您的链接对我非常有用,因为它支持了我在问题中描述的行为。您应该写一个答案:)
Merlyn Morgan-Graham

根据JdeBP的评论,尝试对问题进行编辑以减少错误。
Merlyn Morgan-Graham '13年

Answers:


5

只读取第一个。名称解析后,将不再进行文件读取。


一:你矛盾这个问题。二:hosts启用DNS客户端服务后,将完整读取文件,并且多个具有相同域名的条目是完全合法的。
JdeBP

@Synetech:您能说明哪个部分不正确吗?是JdeBP在OP中已经提到的部分(您可以在同一个域中有多个条目)还是我想念的其他东西?:)
Merlyn Morgan-Graham

5

在某些情况下,允许使用多个具有相同域名的条目,这些条目非常有用。

正如我在问题中描述的那样,似乎在“正常”情况下,那些地址可由同一适配器访问,第一个地址似乎就是所使用的地址。如果这些条目之一是回送(127.0.0.1),则它可能优先。

有时,即使计算机是多宿主的或可多址访问的,即使没有地址到回送适配器,也要具有多个具有相同域名的条目才有意义。(感谢JdeBP在我的OP上提供评论中的信息)。

如果每个地址都被映射并在单独的行中使用,则单个DNS主机名可以对应于多个IP地址。例如,您可以为以下多宿主或多地址DNS主机计算机添加行:

10.0.0.1  host-a.example.microsoft.com
10.0.0.2  host-a.example.microsoft.com
10.0.0.3  host-a.example.microsoft.com

我相信适配器的优先级/优先级可能在这里起作用(您可以在网络设置中设置),尽管我无法对其进行测试。回环很可能总是在适配器首选项中排在第一位。


我目前无法测试适配器的优先级/优先级,因此请发表评论,如果您知道这是正确的还是不正确的。
Merlyn Morgan-Graham

1

我已经尝试了5分钟,并且它在没有DNS服务器的情况下以以下方式运行到Windows主机文件中:

ip1,ip2,ipx name_to_resolve

对不起,我的英语...


您能否简要解释一下它如何回答问题
BlueBerry-Vignesh4303

0

>环回似乎会覆盖任何条目,无论顺序如何。

进行更改后,是否确定要关闭并重新运行客户端(浏览器?)?如果您不这样做,那么它很可能仍将使用旧值,并且直到重新启动后才能看到更改的顺序。此外,如果您正在运行DNS客户端服务,则将缓存旧值,因此您将看不到更改。

我做了一些测试,似乎第一个条目始终是所使用的条目。

确保重新启动客户端,以确保它正在重新读取HOSTS文件,并且如果您正在运行DNS客户端服务,也请运行 ipconfig /flushdns


不记得我是否这样做了,因为我在3到8个月前就开始使用它。但是很好,感谢您对此进行检查。您是否有多个适配器,能否检查我在自我回答中提到的适配器首选项设置是否有影响?
Merlyn Morgan-Graham

1
实际上,最近讨论了多个NIC顺序。
Synetech
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.