Назад | Перейти на главную страницу

файл hosts игнорируется, как устранить неполадки?

Файл hosts на компьютерах Windows используется для привязки определенных строк имен к определенным IP-адресам, чтобы переопределить другие методы разрешения имен.

Часто кто-то решает изменить файл hosts и обнаруживает, что изменения не вступают в силу или что даже старые записи файла hosts после этого игнорируются. Это может быть вызвано рядом ошибок, и выяснить, какая именно из них, может быть неприятно.

При столкновении с проблемой игнорирования Windows файла hosts, каков комплексный протокол устранения неполадок, которому можно следовать?


В этом вопросе есть дубликаты на SO, например Файл HOSTS игнорируется

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

Основываясь на моем собственном опыте и на том, с чем я столкнулся при поиске в Google, вот что можно попробовать:

1. Вы проверили, что он работает правильно?

Изменения хостов должны вступить в силу немедленно, но Windows кэширует данные разрешения имен, поэтому в течение некоторого времени могут использоваться старые записи. Откройте командную строку (Windows + R, cmd, Enter) и введите:

ipconfig /flushdns

Сбросить старые данные. Чтобы проверить, работает ли он, используйте (при условии, что у вас есть запись ipv4 на ваших хостах для www.example.com или запись ipv6 на ваших хостах для ipv6.example.com):

ping www.example.com -n 1
ping -6 ipv6.example.com -n 1

И посмотрите, использует ли он правильный IP. Если да, то ваш файл hosts в порядке, и проблема в другом.

Кроме того, вы можете сбросить кеш NetBios с помощью (откройте консоль от имени администратора, иначе она не удастся):

nbtstat -R

Вы можете проверить текущие данные в кеше DNS с помощью:

ipconfig /displaydns | more

2. Основы

  • Правильно ли назван ваш файл hosts? Так должно быть hosts и нет host, и т.д.
  • Расширение правильное? У него не должно быть расширения (hosts не hosts.txt) - будьте осторожны, если вы настроили окна так, чтобы скрывать известные расширения, проверьте свойства, чтобы убедиться: правильный тип файла hosts будет отображаться как просто «Файл».
  • Вы следили за правильный синтаксис? Вы случайно добавили к строкам префикс хеша (#) что указывает на комментарии?
  • Вы позаботились обо всех вариантах (www.example.com и example.com - безопаснее всего просто добавить оба)?

3. Пробел

Формат каждой строки: IP address, затем горизонтальная табуляция (escape-код \t, ASCII HT, шестнадцатеричный 0x09) или одиночный пробел (шестнадцатеричный 0x20), затем имя хоста, т.е. www.example.com, затем, наконец, возврат каретки с последующим переводом строки (escape-коды \r\n, ASCII CRLF, шестнадцатеричный 0x0d 0x0a).

Примеры записей с использованием управляющих изображений Unicode для обозначения управляющих символов. (Не копируйте и не вставляйте их в свой файл hosts!)

192.0.2.1␉www.example.com␍␊
2001:db8:8:4::2␉ipv6.example.com␍␊

Отдельные байты можно просмотреть в Блокнот ++ с плагин шестнадцатеричного редактора. Notepad ++ также будет отображать специальные символы («Просмотр» -> «Показать символ»), чтобы вы могли легко проверить количество и вид пробельных символов.

Если вы скопировали и вставили записи о хостах откуда-то, у вас может остаться несколько пробелов. Теоретически хосты поддерживают несколько пробелов, разделяющих два столбца, но другое дело, если ничего не работает.

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

Наконец, завершите файл пустой строкой.

4. Ключ реестра

В реестре есть ключ, определяющий расположение файла hosts. Предположительно, Windows на самом деле не поддерживает размещение файла hosts в других местах, но вы можете проверить. Ключ:

\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath

Запись должна быть:

%SystemRoot%\System32\drivers\etc

5. Разрешения

Иногда возникают проблемы с правами доступа к файлу, атрибутами файла и тому подобным. Чтобы воссоздать файл с разрешениями по умолчанию:

  1. Создайте новый текстовый файл на рабочем столе.
  2. Скопируйте и вставьте содержимое текущего файла hosts в этот файл в Блокноте.
  3. Сохраните новый текстовый файл и переименуйте его в hosts.
  4. Копировать (Не шевелись) файл в ваш %SystemRoot%\System32\drivers\etc каталог и перезапишите старый файл.

Последний момент важен: копирование работает, перемещение - нет.

Местный Users учетная запись должен иметь возможность читать файл hosts. Чтобы убедиться (в Windows 7):

  1. Перейдите к %SystemRoot%\System32\drivers\etc в проводнике Windows.
  2. Если вы не видите hosts файл, убедитесь, что вы можете видеть скрытые и системные файлы.
  3. Щелкните правой кнопкой мыши hosts файл и выберите Properties из контекстного меню.
  4. в hosts Properties окно, нажмите на Security таб.
  5. Изучите список имен в Group or user names: коробка. Если %COMPUTERNAME%\Users присутствует, щелкните по нему, чтобы просмотреть разрешения.
  6. Если Users нет или присутствует, но не имеет Read разрешение, нажмите Edit....
  7. Если Users нет, нажмите Add..., тип Usersнажмите Check Namesи нажмите ОК или нажмите Enter.
  8. Выбрать Users, и обеспечить Read & execute проверяется в Allow столбец. Щелкните ОК. Если Windows Security всплывает окно предупреждения, выберите Yes продолжать.
  9. Нажмите ОК, чтобы закрыть hosts Properties окно.
  10. Перейдите к разделу 1 этого ответа и следуйте инструкциям, чтобы проверить, работает ли он сейчас.

6. Кодирование

Файл hosts должен быть в кодировке ANSI или UTF-8 без спецификации. Вы можете сделать это с помощью File -> Save As.

7. Прокси

Если у вас настроен прокси, он может обходить файл hosts. Решение состоит в том, чтобы не использовать прокси-сервер или настроить его так, чтобы он этого не делал.

Чтобы проверить, перейдите в Internet Explorer -> Свойства обозревателя -> Подключения -> Настройки LAN. Если все пусто и установлен флажок «Автоматически определять настройки», значит, вы не используете прокси.

Если вы полагаетесь на прокси-сервер для доступа в Интернет и поэтому не хотите его отключать, вы можете добавить исключения, перейдя в Internet Explorer -> Свойства обозревателя -> Подключения -> Настройки локальной сети -> Прокси-сервер / Дополнительно. Затем добавьте свои исключения в текстовое поле Исключения. Например. localhost;127.0.0.1;*.dev

8. DNS-адрес

(Это также может решить проблемы с прокси.)

Перейдите в свойства сетевых подключений, затем в настройки TCP / IP и измените первый DNS-сервер на 127.0.0.1 (локальный). Вторым, вероятно, должен быть ваш фактический IP-адрес DNS.

Это не обязательно для работы файла hosts, но это может помочь в вашем случае, если что-то настроено странно.

9. Местные адреса

Если вы используете запись домена .local в форме myhost.local, и она игнорируется, попробуйте следующее

x.x.x.x myhost.local www.myhost.local

даже если www.myhost.local не существует. Windows почему-то не добавляет свою рабочую группу или локальный домен.

Убедитесь, что вы ввели сначала IP-адрес, а затем «домен», например:

127.0.0.1   bo.dev
127.0.0.1   www.bo.dev

Пожалуйста, добавьте проверку прав доступа к файлам. Я обнаружил, что хотя у меня были права локального администратора на компьютере и, следовательно, на хостах. Хосты стали активными только после того, как я добавил локальных пользователей к разрешениям файлов hosts с помощью Read и Read & Execute, а затем ipconfig / flushdns.

В своих случаях я пробовал создать файл, созданный Windows 7: C: \ Windows \ System32 \ drivers \ etc \ hosts.ics.

hosts.ics:

# This file has been automatically generated for use by Microsoft Internet
# Connection Sharing. It contains the mappings of IP addresses to host names
# for the home network. Please do not make changes to the HOSTS.ICS file.
# Any changes may result in a loss of connectivity between machines on the
# local network.

В результате Windows игнорирует настройки в C: \ Windows \ System32 \ drivers \ etc \ hosts и использует их из hosts.ics.

У меня возникла та же проблема, записи файлов хостов игнорировались. Я пробовал все в этой и многих других темах, но безуспешно. Я подумал, что опубликую то, что сработало для меня, на случай, если кто-то еще столкнется с этим.

  1. Откройте проводник Windows от имени администратора.
  2. УДАЛИТЬ файл hosts
  3. Откройте блокнот от имени администратора и создайте новый файл hosts
  4. Начните с нуля и добавляйте записи.
  5. Убедитесь, что у файла hosts нет расширения .txt.

Примечание: простое открытие файла hosts и удаление содержимого, проверка того, что он равен 0 КБ, и повторное добавление не помогли. Я подозреваю, что у файла возникла проблема с разрешениями.

Я потратил на это часы, возможно, дни.

Эту проблему может вызвать безопасность IBM Trusteer Endpoint Rapport.

Я добавил mysite.com в список надежных сайтов.

Я думаю, что в рамках своей безопасности он предотвращает попадание вредоносных программ или вирусов на альтернативные сайты.

Взял mysite из списка доверенных сайтов и больше не проверяет и не "исправляет" перенаправление файлов моих hosts.

Надеюсь, что это поможет кому-то решить их проблему.

Убедитесь, что вы ввели значения как IP NAME, а не как NAME IP.

Это может произойти, если в файле есть, скажем, только одна запись и вы игнорируете текст комментария.

Одна проблема, упущенная в приведенном выше обсуждении, - это неквалифицированные имена (имена, не включающие точку) в файле hosts. В этот момент могут сработать настройки вашей сети и автоматически добавить ваш собственный домен в конец неквалифицированного домена. Следовательно, имя может не разрешиться или, что еще хуже, разрешиться на совершенно другую машину.

В Windows убедитесь, что HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ DataBasePath указывает на каталог файла hosts.

В моем случае проблема заключалась в том, что я копировал файл hosts из зашифрованного каталога и заменял этим файл etc / hosts. Пришлось посмотреть в свойствах и снять флажок «зашифровать файл».

Файл моих хостов игнорируется до тех пор, пока я не подключусь к сети на моем ноутбуке (Windows 7). Как только я подключаюсь к сети, все работает должным образом. Очевидно, что без сети я не могу пинговать хосты и т. Д., Но я все еще ожидал, что Windows получит свои IP-адреса из файла hosts. Это не так. Даже после отключения он все еще ищет адреса в порядке, но между перезагрузкой компьютера и первым подключением к сети он игнорирует файл hosts.

(Между прочим, табуляции, пробелы и отсутствие возврата каретки не имеют значения, насколько я могу судить).