Ожидаемое поведение с дублирующимися записями файла NT hosts?

12

Я знаю, что у вас не должно быть повторяющихся записей в вашем файле хостов Windows NT, windows\system32\drivers\etc\hostsно каково ожидаемое поведение, если они у вас есть?

Вы можете иметь несколько записей с одним и тем же именем хоста, но разными адресами в файле хостов Windows NT ( windows\system32\drivers\etc\hosts). При доступе к этому хосту в сети DNS-система Windows преобразует его в одну из этих записей. Как я могу сказать, какая запись будет использоваться?

Например:

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кажется, вызывает особое поведение. Я отредактировал вопрос, чтобы спросить о различных сценариях ...
Мерлин Морган-Грэм
Кто сказал, что нельзя иметь несколько записей с одним и тем же доменным именем и разными IP-адресами? Конечно, не Microsoft. По мнению Microsoft, это совершенно законная вещь.
JdeBP
@JdeBP: я знаю, что это граничит со вторым вопросом, но если хост является многодомным, что это значит и как это полезно для меня? Если я пингую его, я получу только один адрес. То же самое, если я попытаюсь служить ему. Кстати, ваша ссылка весьма полезна для меня, поскольку она поддерживает поведение, описанное мной в моем вопросе. Вы должны написать ответ :)
Мерлин Морган-Грэм
Попытка отредактировать вопрос, чтобы сделать его менее неточным, основываясь на комментарии JdeBP.
Мерлин Морган-Грэм

Ответы:

5

Только первое будет прочитано. После того как имя было разрешено, дальнейшее чтение файла не происходит.

Абраксас
источник
Один: ты противоречишь вопросу. Два: hostsфайл полностью читается, когда включена служба DNS-клиента, и несколько записей с одним и тем же доменным именем вполне законны.
JdeBP
@Synetech: Можете ли вы уточнить, какая часть неверна? Это та часть, которую JdeBP уже упоминал в OP (что вы можете иметь несколько записей в одном домене), или я пропустил что-то еще? :)
Мерлин Морган-Грэм
5

Несколько записей с одним и тем же доменным именем разрешены и полезны в некоторых сценариях.

Как я описал в своем вопросе, кажется, что в «нормальных» случаях, когда эти адреса достижимы одним и тем же адаптером, первый адрес, по-видимому, выбирается. Если одна из этих записей является loopback ( 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

Я полагаю, что предпочтение / приоритет адаптера может сыграть здесь роль (которую вы можете настроить в настройках сети), хотя я не могу проверить это. Loopback, скорее всего, всегда будет первым в предпочтении адаптера.

Мерлин Морган-Грэм
источник
Я не могу проверить предпочтение / приоритет адаптера на этом этапе, поэтому, пожалуйста, прокомментируйте, если вы знаете, что это правильно или неправильно.
Мерлин Морган-Грэм,
1

Я пробовал 5 минут назад, и он работает без DNS-сервера по следующему пути в файл хостов Windows:

ip1, ip2, ipx name_to_resolve

Извините мой английский...

Darckclone
источник
Не могли бы вы вкратце объяснить, как он отвечает на вопрос
BlueBerry - Vignesh4303
0

> Кажется, что петля отменяет любую запись, независимо от порядка.

Обязательно ли закрывать и перезапускать клиент (браузер?) После внесения изменений? Если вы этого не сделаете, то, скорее всего, он все еще будет использовать старые значения и не увидит изменения в порядке, пока не будет перезапущен. Кроме того, если у вас запущена служба DNS-клиента, старые значения кэшируются, поэтому вы не увидите изменения.

Я сделал несколько тестов, и кажется, что первая запись всегда используется.

Обязательно перезапустите клиент, чтобы убедиться, что он перечитывает файл HOSTS, и, если у вас запущена служба DNS-клиента, также запустите ipconfig /flushdns

Synetech
источник
Не могу вспомнить, сделал я это или нет, так как я работал с этим от 3 до 8 месяцев назад. Но хороший момент и спасибо за проверку в этом. У вас есть несколько адаптеров, и можете ли вы проверить, влияют ли на них настройки предпочтений адаптера, которые я упоминал в своем ответе?
Мерлин Морган-Грэм
1
На самом деле, порядок нескольких NIC обсуждался недавно.
Synetech