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

Mer*_*ham 12 windows hosts-file

我知道你的 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
Run Code Online (Sandbox Code Playgroud)

编辑:这个特殊的例子似乎强制特殊行为。无论顺序如何,环回似乎都会覆盖任何条目。

或者:

192.168.1.2  mydomain.com
192.168.1.1  mydomain.com
Run Code Online (Sandbox Code Playgroud)

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

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

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

Abr*_*xas 5

只会读取第一个。一旦解析了名称,就不会再读取文件。


Mer*_*ham 5

在某些情况下,允许多个具有相同域名的条目并且很有用。

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

有时,如果计算机是 multihomed 或 multiaddressable具有多个条目具有相同的域名是有意义的,即使没有地址指向环回适配器。(感谢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
Run Code Online (Sandbox Code Playgroud)

我相信适配器首选项/优先级可能会在这里发挥作用(您可以在网络设置中进行设置),但我无法对其进行测试。环回很可能总是首先出现在适配器偏好中。