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

149

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

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

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


Этот вопрос имеет дубликаты на SO, такие как игнорирование файла HOSTS

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

Superbest
источник
12
Также, как кто-то опубликовал в другом месте, не используйте «nslookup» для проверки этого, потому что эта команда игнорирует файл hosts. Скорее используйте «пинг».
LatinSuD
Возможно , игнорируется
030

Ответы:

220

Исходя из моего собственного опыта и того, с чем я столкнулся во время 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. Разрешения

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

  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и нажмите OK или нажмите Enter.
  8. Выберите Usersи убедитесь, Read & executeчто отмечен в Allowстолбце. Нажмите ОК. Если появится Windows Securityокно с предупреждением, выберите « YesПродолжить».
  9. Нажмите OK, чтобы закрыть hosts Propertiesокно.
  10. Перейдите к разделу 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 как-то не добавляет свою рабочую группу или локальный домен.

Superbest
источник
3
СПАСИБО ТАКОЕ СУПЕРБЕСТНОЕ! Я почти плачу, так много наших сходит с ума по ПРОБЕЛУ в начале пустой записи между двумя строками. Спасибо Спасибо Спасибо Спасибо Спасибо !!!!!
1
Еще одна проблема: 64-разрядные версии Windows перенаправляют папку System32 для 32-разрядных приложений (таких как Notepad ++), поэтому при сохранении файл отображается в папке SystemWOW64 вместо System32. Лучший обходной путь - использовать 64-разрядную версию Notepad для Windows. Во-вторых, лучше всего подключиться к общему административному ресурсу (\\ yourmachinename \ c $ \ Windows \ System32 \ drivers \ etc), чтобы открыть файл, если вы используете 32-разрядный редактор.
Тим Льюис
4
Хороший пост, но с парой ошибок. 1) «Автоматическое определение настроек» в IE может привести (даже неосознанно) к использованию прокси, если ваша сеть действительно обеспечивает автоконфигурацию прокси. 2) Изменение DNS-серверов в настройках сети не имеет никакого отношения к тому, как / когда / если hostsфайл используется, и изменение его на 127.0.0.1 фактически является ошибкой, если вы на самом деле не запускаете DNS-сервер на своем компьютер.
Массимо
1
# 5 (создание нового файла и его копирование) помогло мне. Win7 может быть смешной с разрешениями.
Крис
1
Я отредактировал файл hosts под Cygwin с помощью vim, я думаю, это привело к тому, что проблема с файлом hosts перестала работать. Мне пришлось создать новый файл и скопировать содержимое предыдущего файла hosts, и это исправило его.
forloop
16

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

127.0.0.1   bo.dev
127.0.0.1   www.bo.dev
Gustaf
источник
6
Я предпочитаю использовать одну строку:127.0.0.1 bo.dev www.bo.dev ftp.bo.dev
Xhynk
1
Осторожно, файл хостов Windows допускает только 9 или менее записей в строке! Это укусило меня и заняло некоторое время, чтобы выяснить.
Андрей
Не используйте .devTLD локально, думая, что вы не столкнетесь с конфликтами. Это действительный общий глобальный домен верхнего уровня, принадлежащий Google, и с ним вы столкнетесь с множеством проблем. См. Ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts
Патрик Мевзек,
Ошибка новичка, но это сработало. Doh! имело обратное имя тогда IP
ransems
11

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

Дэвид Сивиур
источник
3
Вот и все! Я был сбит с толку этой проблемой в течение многих лет . Я добавил (machine)\USERSс правами Чтение и Чтение и выполнение, и после ipconfig /flushdnsтого, как это сработало. Огромное спасибо. Мне очень приятно, наконец, вернуть мой файл hosts.
Клемент Черлин
7

В моих случаях я пробовал 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.

Unick
источник
1
От support.microsoft.com/en-us/kb/309642/en-us , который устарел и, возможно, более не точен: «Файл Hosts.ics используется ICS для хранения информации о динамически настраиваемых клиентах. Избегайте внесения изменений в Этот файл предотвращает потерю связи или данных. Файл Hosts (без расширения имени файла) - это файл, в который вы добавляете информацию о статически настроенных клиентах. " Так что я не ожидал бы, что Windows проигнорирует Hostsфайл только потому, что Hosts.icsон присутствует. Что-то еще может заставить Windows игнорировать ваши файлы Hosts, например, неправильное (но скрытое) расширение.
Арджан
1
Я вижу эту информацию. Но я не знаю, почему мне удалось заставить работать хосты, я только отредактировал hosts.ics. Прежде чем редактировать hosts.ics, я перепробовал все методы из этой темы, но hosts не работает.
Unick
Спасибо! Вы спасли мою жизнь. Работал на Windows 10
Xatenev
3

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

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

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

PSA4444
источник
быстрое примечание - при изменении системных файлов (таких как файл hosts) целесообразно сначала создать резервную копию. Чтобы избежать потери данных, вместо этого попробуйте переименовать существующий файл hosts, например, в hosts.bak, а затем продолжить, как описано в шаге 3.
nshiff
1

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

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

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

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

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

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

Птица на руке
источник
1

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

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

KNB
источник
1

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

user287479
источник
0

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

Гельн Ян
источник
0

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

Янош
источник
0

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

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

Денис Хоу
источник