Файл hosts игнорируется, как устранить неполадки?
Файл hosts на компьютерах Windows используется для привязки определенных строк имен к определенным IP-адресам для переопределения других методов разрешения имен.
Часто кто-то решает изменить файл hosts и обнаруживает, что эти изменения не вступают в силу или что даже старые записи файла hosts впоследствии игнорируются. Это может произойти из-за множества ошибок, и может быть сложно понять, какая именно.
Когда перед Windows возникает проблема игнорирования файла hosts, какой протокол комплексного устранения неполадок можно использовать?
Этот вопрос имеет дубликаты на SO, такие как игнорирование файла HOSTS
Тем не менее, они, как правило, имеют дело с конкретным случаем, и как только обнаружена ошибка, допущенная ФП, дискуссия заканчивается. Если вы не сделали ту же ошибку, такое обсуждение не очень полезно. Поэтому я подумал, что было бы более полезно иметь общий протокол для решения всех проблем, связанных с хостами, который охватывал бы все случаи.
13 ответов
Исходя из моего собственного опыта и того, с чем я столкнулся во время Google, вот несколько вещей, которые можно попробовать:
1. Вы проверили, что это работает правильно?
Изменения хостов должны вступить в силу немедленно, но Windows кэширует данные разрешения имен, поэтому в течение некоторого времени могут использоваться старые записи. Откройте командную строку (Windows + R, cmd
, Введите) и введите:
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
) - будьте осторожны, если вы настроили окна для скрытия известных расширений, проверьте свойства, чтобы быть уверенным: правильный тип файла хостов будет отображаться как просто "Файл". - Вы придерживались правильного синтаксиса? Вы случайно добавили строки к хешу (
#
) что указывает на комментарии? - Вы позаботились обо всех вариантах (
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++ с помощью плагина hex hex editor. Notepad++ также будет отображать специальные символы (Вид -> Показать символ), чтобы вы могли легко проверить количество и вид пробельных символов.
Если вы скопировали и вставили записи хостов откуда-то, вы можете получить несколько пробелов. Теоретически хосты поддерживают несколько пробелов, разделяющих два столбца, но это еще одна вещь, которую стоит попробовать, если больше ничего не работает.
Чтобы быть в безопасности, убедитесь, что все строки в вашем хост-файле используют табуляции или пробелы, а не оба.
Наконец, завершите файл пустой строкой.
4. Ключ реестра
Существует раздел реестра, указывающий расположение файла hosts. Предположительно, Windows на самом деле не поддерживает размещение файла hosts в других местах, но вы можете проверить это. Ключ:
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
Запись должна быть:
%SystemRoot%\System32\drivers\etc
5. Разрешения
Иногда возникают проблемы с разрешениями для файла, атрибутами файла и подобными вещами. Чтобы воссоздать файл с разрешениями по умолчанию:
- Создайте новый текстовый файл на рабочем столе.
- Скопируйте и вставьте содержимое вашего текущего файла hosts в этот файл в Блокноте.
- Сохраните новый текстовый файл и переименуйте его в
hosts
, - Скопируйте (не перемещайте) файл на свой
%SystemRoot%\System32\drivers\etc
каталог, и перезаписать старый файл.
Последний пункт важен: копирование работает, перемещение - нет.
Местный Users
учетная запись должна иметь возможность читать файл hosts. Чтобы убедиться (в Windows 7):
- Перейдите к
%SystemRoot%\System32\drivers\etc
в проводнике Windows. - Если вы не видите
hosts
файл, убедитесь, что вы видите скрытые и системные файлы. - Щелкните правой кнопкой мыши на
hosts
файл и выберитеProperties
из контекстного меню. - в
hosts Properties
нажмите наSecurity
Вкладка. - Изучите список имен в
Group or user names:
коробка. Если%COMPUTERNAME%\Users
присутствует, нажмите на него для просмотра разрешений. - Если
Users
нет или присутствует, но не имеетRead
разрешение, нажмитеEdit...
, - Если
Users
нет, нажмитеAdd...
, типUsers
нажмитеCheck Names
и нажмите OK или нажмите Enter. - Выбрать
Users
и обеспечитьRead & execute
проверяется вAllow
колонка. Нажмите ОК. ЕслиWindows Security
всплывающее окно, выберитеYes
продолжать. - Нажмите OK, чтобы закрыть
hosts Properties
окно. - Перейдите к разделу 1 этого ответа и следуйте инструкциям, чтобы проверить, работает ли он сейчас.
6. Кодировка
Файл hosts должен быть закодирован в ANSI или UTF-8 без спецификации. Вы можете сделать это с помощью File -> Save As.
7. Прокси
Если у вас настроен прокси, он может обойти файл hosts. Решение состоит в том, чтобы не использовать прокси-сервер или настроить его так, чтобы он этого не делал.
Чтобы проверить, зайдите в Internet Explorer -> Свойства обозревателя -> Подключения -> Настройки локальной сети. Если все пусто и установлен флажок "Автоматически определять настройки", прокси не используется.
Если вы используете прокси-сервер для доступа в Интернет и, следовательно, не хотите его отключать, вы можете добавить исключения, перейдя в 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 как-то не добавляет свою рабочую группу или локальный домен.
Убедитесь, что вы сначала указали ipaddress, а затем "домен", например:
127.0.0.1 bo.dev
127.0.0.1 www.bo.dev
Пожалуйста, добавьте проверку прав доступа к файлам. Я обнаружил, что, хотя у меня были права локального администратора на компьютер и, следовательно, на хосты. Только после того, как я добавил локальных пользователей к разрешениям файла hosts с помощью "Чтение" и "Чтение и выполнение", а затем 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.
У меня возникла та же проблема, записи файла hosts игнорируются. Я попробовал все в этой и многих других темах без удачи. Я решил опубликовать то, что сработало для меня, если кто-то еще столкнется с этим.
- Откройте Windows Explorer как администратор
- УДАЛИТЬ файл hosts
- Откройте блокнот с правами администратора и создайте новый файл hosts
- Начните с нуля и добавьте записи.
- Убедитесь, что файл hosts не имеет расширения.txt
Примечание: просто открыв файл hosts и удалив содержимое, проверив, что он равен 0 КБ, и повторно добавив его, не получилось. Я подозреваю, что проблема с правами доступа к файлу.
Одна проблема, пропущенная в обсуждении выше, - это неполные имена (имена, которые не включают точку) в файле hosts. Ваши настройки сети могут сработать в этот момент и автоматически добавить ваш собственный домен в конец неквалифицированного домена. Следовательно, имя может не разрешить или, что еще хуже, разрешить для совершенно другой машины.
Убедитесь, что вы ввели значения как IP NAME
не как NAME IP
,
Это может произойти, если, скажем, в файле есть только одна запись и когда вы игнорируете текст комментария.
Потратил на это часы, возможно, дни.
Эта проблема может быть вызвана безопасностью IBM Trusteer Endpoint Rapport.
Я добавил mysite.com в список доверенных сайтов.
Я думаю, что в рамках своей безопасности он предотвращает проникновение вредоносных программ или вирусов на альтернативные сайты.
Взял mysite из списка доверенных сайтов, и он больше не проверяет и не "исправляет" мою переадресацию файла hosts.
Надеюсь, что это поможет кому-то решить их проблему.
Убедитесь, что любое приложение, игнорирующее файл хостов, на самом деле в первую очередь использует DNS-кеш Windows. Например, браузер Chrome учитывает файл хостов, но имеет собственный кэш DNS, который необходимо очищать отдельно от Windows, если файл хостов обновляется.
Windows после версии 8.1 по умолчанию использует разрешение локального хоста в самом стеке DNS. Причина, по которой вы получаете IPv6, заключается в том, что MS реализовала выбор адреса по умолчанию через RFC 3484.
Вы можете переопределить предпочтение IPv6 с помощью политик префиксов.
Повышенный PS> netsh interface ipv6 add prefixpolicy ::ffff:0:0/96 precedence=51 label=4 store=persistent
См. сообщение в моем блоге: Настройка Windows Loopback на IPv4 по умолчанию.
Обновление (01.04.2022): Изначально я опубликовал «установить», но сначала вам нужно «добавить» политику префиксов.
В моем случае проблема заключалась в том, что я копировал файл hosts из зашифрованного каталога и перезаписывал им файл etc/hosts. Мне пришлось посмотреть на свойства и снять флажок "зашифровать файл".
В окнах убедитесь, что HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath указывает на каталог файла hosts.
Мой файл hosts игнорируется до тех пор, пока на моем (Windows 7) ноутбуке не будет сетевого подключения. После подключения к сети все работает как положено. Очевидно, что без сети я не могу пропинговать хосты и т. Д., Но я все еще ожидал, что Windows получит их IP-адреса из файла хостов. Это не так. Даже после отключения он все равно ищет адреса в порядке, но между перезагрузкой компьютера и первым подключением к сети он игнорирует файл hosts.
(Между прочим, насколько я могу судить, вкладки, пробелы и возврат каретки не имеют значения).