Файл hosts на компьютерах Windows используется для привязки определенных строк имен к определенным IP-адресам, чтобы отменить другие методы разрешения имен.
Часто человек решает изменить файл hosts и обнаруживает, что изменения не вступают в силу, или что даже старые записи в файле hosts игнорируются. Это может быть вызвано рядом "ошибок", и выяснение того, какая из них является ошибкой, может быть весьма затруднительным.
Когда вы сталкиваетесь с проблемой игнорирования Windows файла hosts, какой комплексный протокол поиска и устранения неисправностей можно использовать?
Этот вопрос дублируется на SO, например https://serverfault.com/questions/50934/hosts-file-being-ignored.
Однако, они, как правило, имеют дело с конкретным случаем, и как только ошибка, которую совершил ОП, выясняется, обсуждение заканчивается. Если вы случайно не совершили ту же ошибку, такое обсуждение не очень полезно. Поэтому я подумал, что было бы полезнее иметь общий протокол для решения всех проблем, связанных с хостами, который охватывал бы все случаи.
Исходя из собственного опыта и того, что я нашел в Google, вот некоторые вещи, которые можно попробовать:
Изменения хостов должны вступить в силу немедленно, но Windows кэширует данные разрешения имен, поэтому в течение некоторого времени могут использоваться старые записи. Откройте командную строку (Windows+R, cmd
, Enter) и введите:
ipconfig /flushdns
Чтобы удалить старые данные. Чтобы проверить, работает ли это, используйте (предполагая, что у вас есть запись ipv4 в hosts для www.example.com или запись ipv6 в hosts для 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
hosts
, а не host
и т.д.hosts
, а не hosts.txt
) - будьте осторожны, если вы настроили windows на скрытие известных расширений, проверьте свойства, чтобы убедиться: Правильный файл hosts's type будет отображаться как просто "File".#
), который обозначает комментарии?www.example.com
и example.com
- безопаснее всего просто добавить оба)?Формат каждой строки: IP адрес
, затем горизонтальная табуляция (escape код \t
, ASCII HT
, hex 0x09
) или одиночный пробел (hex 0x20
), затем имя хоста, т.е. www.example.com
, затем возврат каретки и перевод строки (escape коды \r\n
, ASCII CRLF
, hex 0x0d 0x0a
).
Примеры записей, использующие управляющие картинки Unicode для обозначения управляющих символов. (Не копируйте и не вставляйте их в свой файл hosts!)
192.0.2.1␉www.example.com␍␊
2001:db8:8:4::2␉ipv6.example.com␍␊
Отдельные байты можно просмотреть в Notepad++ с помощью плагина hex editor plugin. Notepad++ также покажет специальные символы (View -> Show Symbol), чтобы вы могли легко проверить количество и вид пробельных символов. Если вы скопировали и вставили записи hosts откуда-то, вы можете оказаться с несколькими пробелами. Теоретически hosts поддерживает несколько пробелов, разделяющих два столбца, но это еще одна вещь, которую можно попробовать, если ничего не помогает. Чтобы подстраховаться, убедитесь, что во всех строках файла hosts используются либо символы табуляции, либо пробелы, но не оба. Наконец, завершите файл пустой строкой.
Существует ключ реестра, определяющий местоположение файла hosts. Предположительно, Windows не поддерживает размещение файла hosts в других местах, но вы можете проверить. Ключ имеет следующий вид:
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DataBasePath
Запись должна быть:
%SystemRoot%\System32\drivers\etc
Иногда возникают проблемы с разрешениями на файл, атрибутами файла и тому подобными вещами. Чтобы воссоздать файл с разрешениями по умолчанию:
hosts
.%SystemRoot%\System32\drivers\etc
и перезапишите старый файл.
Последний пункт важен: копирование работает, перемещение - нет.
Локальная учетная запись Users
должна иметь возможность читать файл hosts. Чтобы убедиться в этом (в Windows 7):%SystemRoot%\System32\drivers\etc
в проводнике Windows.hosts
, [убедитесь, что вы можете видеть скрытые и системные файлы] (https://superuser.com/questions/101999/how-do-you-show-hidden-system-folders-in-windows-7).hosts
и выберите Свойства
из контекстного меню.Свойства хоста
перейдите на вкладку Безопасность
.Имена групп или пользователей:
. Если присутствует %COMPUTERNAME%\Users
, щелкните на нем для просмотра разрешений.Users
отсутствует, или присутствует, но не имеет разрешения Read
, нажмите Edit...
.Users
отсутствует, нажмите Add...
, введите Users
, нажмите Check Names
и нажмите OK или Enter.Users
и убедитесь, что опция Read & execute
отмечена в столбце Allow
. Нажмите OK. Если появится окно предупреждения Безопасность Windows
, выберите Да
, чтобы продолжить.Свойства хостов
.Файл hosts должен быть закодирован в ANSI или UTF-8 без BOM. Вы можете сделать это с помощью File -> Save As.
Если у вас настроен прокси, он может обойти файл hosts. Решение состоит в том, чтобы не использовать прокси или настроить его так, чтобы он не делал этого.
Чтобы проверить, зайдите в Internet Explorer -> Internet Options -> Connections -> LAN settings. Если все пусто и "Автоматически определять настройки" отмечено, вы не используете прокси.
Если вы полагаетесь на прокси-сервер для доступа к Интернету и поэтому не хотите его отключать, вы можете добавить исключения, перейдя в Internet Explorer -> Internet Options -> Connections -> LAN settings -> Proxy Server / Advanced. Затем добавьте свои исключения в текстовое поле Исключения. Например, localhost;127.0.0.1;*.dev
.
(Это также может решить проблемы с прокси-сервером).
Зайдите в свойства сетевых подключений, затем в настройки TCP/IP и измените первый DNS-сервер на 127.0.0.1
(localhost). Второй, вероятно, должен быть вашим фактическим DNS'IP.
Это не обязательно для работы файла hosts, но это может помочь в вашем случае, если что-то настроено странно.
Если вы используете запись домена .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
Пожалуйста, добавьте проверку прав доступа к файлам. Я обнаружил, что, хотя у меня были права Local Admin на компьютере и, следовательно, на hosts. Только когда я добавил локальных пользователей <Users (Hostname\Users)> в права доступа к файлу 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.
Я испытывал тот же вопрос, hosts записи файла игнорируются. Я пробовал все эти и многие другие темы с не повезло. Я подумал, что я'д сообщение что сработало для меня в случае, если кто-то еще приходит через это.
Примечание: просто открыв файл hosts и удалять содержимое, проверяя, что он был 0 КБ и не работает. Я подозреваю, что проблема с разрешениями на файл.
Потратил несколько часов, возможно дней на это.
Корпорация IBM позволило компании Trusteer для защиты конечных раппорт может вызвать эту проблему.
Я добавил mysite.com в список надежных сайтов.
Я думаю, что в рамках своей безопасности предотвращает вредоносные программы или вирусы, отвлекая вас на альтернативные сайты.
Взял мой сайт в список надежных сайтов и он больше не проверяет и "корректирует" Мой hosts-файл диверсия.
Надеюсь, что это поможет кому-то решить свои проблемы.
Одна из проблем пропустили в обсуждении выше-это неполные имена (имена, которые не включают период) в файл hosts. Ваши сетевые настройки могут пнуть в этот момент и автоматически добавить ваш собственный домен до конца безусловное достояние. Следовательно, имя может не решить, или, что еще хуже, решают совершенно разные машины.
Файл мои хозяева игнорируются, пока у меня есть сетевое подключение на моем (ОС Windows 7) ноутбука. Как только я подключаюсь к сети, все работает, как ожидалось. Очевидно, что без сети я могу'т пинг хостов и т. д. но я все равно ожидал Windows, чтобы получить их IP-адреса из файла hosts. Это не'т. Даже после отсоединения она по-прежнему выглядит адресов ОК, но между перезагрузки компьютера и первого подключения к сети, он игнорирует файл hosts.
(Кстати, знаки табуляции, пробелы и символы возврата каретки не все неактуально, насколько я могу сказать).