9

Я знаю, что у вас не должно быть повторяющихся записей в файле хостов 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

Я вижу, что первая запись в списке имеет приоритет.

Но гарантируется ли поведение, которое я вижу, оно зависит от версии или вообще ненадежно?

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

4 ответа4

4

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

2

Допускается использование нескольких записей с одним и тем же доменным именем, что полезно в некоторых случаях.

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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .