Исходя из моего собственного опыта и того, с чем я столкнулся во время 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
) - будьте осторожны, если вы настроили окна для скрытия известных расширений, проверьте свойства, чтобы убедиться: правильный тип файла хостов будет отображаться как «Файл».
- Вы придерживались правильного синтаксиса ? Вы случайно добавили в префикс строки хэш (
#
), который указывает на комментарии?
- Вы позаботились о всех вариантах (
www.example.com
и example.com
- безопаснее всего просто добавить оба)?
3. Пробелы
Формат для каждой строки: IP address
горизонтальная табуляция (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 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
(localhost). Второй, вероятно, должен быть вашим действительным IP-адресом DNS.
Это не обязательно для работы файла hosts , но в вашем случае это может помочь, если что-то настроено странно.
9.. Локальные адреса
Если вы используете запись домена .local в форме myhost.local и она игнорируется, попробуйте следующее
x.x.x.x myhost.local www.myhost.local
даже если www.myhost.local не существует. Windows как-то не добавляет свою рабочую группу или локальный домен.