Файл hosts не существует или недоступен

Обновлено: 21.11.2024

Незначительные различия между 32-разрядной и 64-разрядной версиями Windows таят в себе столько тонкостей и подводных камней, что даже сотрудники Microsoft с трудом разбираются в них. Я только что наткнулся на статью базы знаний, в которой описывается, как сбросить файл hosts в исходное состояние. Сама по себе тема достаточно забавна — дело не в том, что файл hosts по умолчанию содержит большое количество данных. Запись для локального хоста (IPv4 и IPv6) — это все, что вам нужно, а в Windows 7/Server 2008 R2 и этого нет. Но в любом случае, кажется, что есть достаточно людей, обращающихся за поддержкой MS для этого, иначе они не беспокоились бы о создании пакета (ResetHOSTSFileBackToDefaults.MSI), который в основном очищает файл hosts.

Хосты 64-разрядные или 32-разрядные?

Как всегда, меня больше интересует, что делает пакет, и Microsoft любезно объясняет это в большинстве статей «Исправьте это для меня». Как вы, наверное, знаете, файл hosts был, есть и, вероятно, всегда будет находиться в %systemroot%\system32\drivers\etc. Достаточно просто. Но подождите: в 64-битных системах есть два каталога system32: один для 64-битных процессов, а другой для 32-битных процессов. Теперь, где должен быть расположен файл hosts — или есть даже два (потенциально разных) файла?

Ответ: нет, файл hosts существует только один раз в x64 Windows. И он там, где ему и место, в каталоге 64-битной системы32. Но где этот каталог находится на диске? Это тот, который изначально называется system32, или это SysWOW64?

Непонятки с перенаправлением

Здесь начинается путаница. Многие люди, в том числе человек, пишущий статью MS KB 972034, видят цифру «64» в названии папки SysWOW64 и думают: да, это должна быть 64-разрядная версия system32. . Хорошая мысль, но неправильная. Это ровно наоборот. В целях совместимости имя папки system32 не изменилось в Windows x64, хотя на 64-битных платформах папка содержит не 32-битные, а 64-битные исполняемые файлы! Остается вопрос, куда поместить 32-битные файлы, которые нужны 32-битным процессам, и которые также ожидают найти в system32? Очевидно, что одна и та же DLL не может находиться дважды в одной и той же папке.

Требование наличия двух разных каталогов system32 было решено путем перенаправления. На самом деле в любой установке x64 есть две независимые папки: system32 и SysWOW64. Последний показывается 32-битным процессам под именем system32. 64-разрядные процессы не используют SysWOW64 .

Как получить и отредактировать файл hosts

Если вы хотите отредактировать файл hosts, вам сначала нужно найти и открыть его — в Vista и новее с включенным UAC из процесса с повышенными правами (с правами администратора). Процедура немного утомительна. Вот как это сделать с помощью 64-битного Блокнота:

  • Нажмите кнопку «Пуск», введите «блокнот» и нажмите CTRL+SHIFT+ENTER. Подтвердите диалог UAC.
  • Нажмите CTRL+O. Перейдите в папку C:\Windows\System32\drivers\etc. Выберите «Все файлы» в правом нижнем углу.
  • Теперь вы видите файл hosts. Выберите и откройте его. Внесите изменения и сохраните их.

Если вы хотите получить доступ к хостам из 32-разрядного процесса, используйте один из следующих путей. Обратите внимание, что в обоих случаях необходимо использовать полный путь. Переход к «etc» из корня не работает (поскольку System32 перенаправляется, а Sysnative не отображается в списках каталогов).

  • %Windir%\System32\drivers\etc . Это работает, поскольку перенаправление файловой системы отключено для каталога «etc», поэтому доступ к 64-разрядной системе System32 осуществляется из 32-разрядного процесса.
  • %Windir%\Sysnative\drivers\etc . Sysnative — это псевдоним, который можно использовать только из 32-разрядных процессов для доступа к 64-разрядному каталогу System32.

Об авторе

Хельге Кляйн (бывшая CTP, MVP и vExpert) работала консультантом и разработчиком, прежде чем основала компанию uberAgent. Хельге применил свои обширные знания в проектах по ИТ-инфраструктуре и разработал продукт для управления профилями пользователей, преемник которого теперь доступен как Citrix Profile Management. Хельге является автором популярных инструментов Delprof2 и SetACL. Он выступал на Citrix Synergy, BriForum, E2EVC, Splunk.conf и многих других мероприятиях. Хельге очень активна в ИТ-сообществе и является соучредителем сообщества виртуализации NRW (VCNRW).

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

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

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

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

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

Кроме того, как кто-то написал в другом месте, не используйте "nslookup" для проверки, потому что эта команда игнорирует файл hosts. Скорее используйте "ping".

12 ответов 12

Исходя из собственного опыта и того, что я обнаружил при поиске в Google, вот несколько вещей, которые можно попробовать:

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

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

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

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

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

2. Основы

3. Пробел

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

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

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

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

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

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

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

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

Или в окне командной строки введите:

который должен отображать что-то похожее на:

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

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

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

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

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

  1. Перейдите к %SystemRoot%\System32\drivers\etc в проводнике Windows.
  2. Если вы не видите файл hosts, убедитесь, что вы видите скрытые и системные файлы.
  3. Щелкните правой кнопкой мыши файл hosts и выберите "Свойства" в контекстном меню.
  4. В окне "Свойства хоста" перейдите на вкладку "Безопасность".
  5. Проверьте список имен в поле Имена групп или пользователей:. Если присутствует %COMPUTERNAME%\Users, щелкните его, чтобы просмотреть разрешения.
  6. Если пользователь отсутствует или присутствует, но не имеет разрешения на чтение, нажмите «Изменить». .
  7. Если пользователей нет, нажмите «Добавить». , введите "Пользователи", нажмите "Проверить имена" и нажмите "ОК" или клавишу "Ввод".
  8. Выберите «Пользователи» и убедитесь, что в столбце «Разрешить» установлен флажок «Чтение и выполнение». Нажмите «ОК». Если появится окно предупреждения системы безопасности Windows, выберите Да, чтобы продолжить.
  9. Нажмите "ОК", чтобы закрыть окно "Свойства хоста".
  10. Перейдите к разделу 1 этого ответа и следуйте инструкциям, чтобы проверить, работает ли он сейчас.

Или в окне командной строки введите:

который должен отображать что-то вроде:

Вы должны увидеть (R) после BUILTIN\Users .

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

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

7. Прокси

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

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

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

8. DNS-адрес

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

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

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

9. .локальные адреса

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

10. Лимиты строк/количества

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

Похоже, что в файле хостов Windows есть ограничение на количество строк или хостов. Если у вас более 150 символов в строке или более 8 записей хостов для IP, создайте новую строку

Это сумасшествие, у меня никогда не было этой проблемы до сих пор. Мне нравится использовать файл hosts для блокировки определенных веб-сайтов. Но по какой-то причине мой файл hosts не блокирует ни один сайт. Я просмотрел этот пост (файл hosts работает неправильно) и попробовал большинство, если не все, эти вещи, но я все еще не могу использовать файл hosts для блокировки веб-сайтов. Что-нибудь еще я могу сделать, чтобы исправить это? Я использовал файлы hosts в течение многих лет и никогда не сталкивался с этой проблемой.

Примечание. Я только что получил этот компьютер (восстановленный), так что, может быть, перед отправкой мне сделали какие-то странные настройки? Я бы так не думал, но решил упомянуть об этом.

Вот как у меня есть записи в файле hosts. может я что-то упускаю?

не могли бы вы попробовать пропинговать его? Пожалуйста, откройте powershell или CMD, введите "ping website.com" и опубликуйте полный результат, спасибо.

Используете ли вы графический интерфейс для открытия файла? Я думаю, что можно создать файл с именем, похожим на hosts, но другим (например, o из русского алфавита). Файл существует, чтобы ввести вас в заблуждение, он безопасен. Настоящие хосты могут быть скрыты и содержать мошеннические записи. Что делать, если вы открываете файл таким образом, что требуется вводить его законный полный путь? (не только имя файла, но и каталоги могут быть подделаны).

3 ответа 3

Просто изменить файл hosts недостаточно. Вам также необходимо очистить кеш DNS.

Откройте командную строку и введите:

Теперь проверьте, работает ли он, пропинговав один из доменов, предпочтительно тот, который вы недавно изменили:

и посмотрите, возвращает ли он адрес 127.0.0.1

Если проверка связи не работает, вероятно, права доступа к файлу хоста неверны. Неправильные разрешения для файла hosts могут вызвать произвольную блокировку файла hosts, что не позволит Windows правильно прочитать его и заполнить кэш DNS. Исправьте права доступа к хост-файлу, затем еще раз выполните команду ipconfig /flushdns.

Если проверка связи работает, но веб-сайт загружается неправильно, значит, веб-сайт по-прежнему загружается из кеша. Очистите кеш браузера, чтобы устранить проблему.

Крис Койсигава

Хотя Интернету всего около 30 лет, файл hosts во многом является пережитком его (не столь уж древнего) прошлого.

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

  • у вас проблемы с местным развитием
  • вы подозреваете, что файл hosts был изменен вредоносным ПО
  • вам нужен быстрый и простой способ заблокировать некоторые веб-сайты
  • или если вы хотите настроить полезные ярлыки для внутренних IP-адресов

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

Что такое файл hosts?

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

Например, вот строка, которую вы найдете во многих файлах hosts в Windows, Linux и macOs:

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

Почему файлы hosts потеряли популярность

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

По мере роста Интернета росли и длина, и сложность файлов hosts. Кроме того, каждый файл hosts работал только для того компьютера, на котором он находился, и синхронизировать их с изменениями в именах хостов и IP-адресах стало огромной проблемой.

Файл хостов компьютеров A и B

Но когда Google обновляет их IP-адреса, только компьютер A обновляет свой файл hosts, чтобы он соответствовал:

Обновленный файл hosts компьютера А

Поэтому все на компьютере B застряли без Google, пока кто-нибудь не обновит файл hosts.Когда этот человек обновляет файл hosts, он добавляет еще одну запись для обработки Google с поддоменом www.

Недавно обновленный файл hosts компьютера Б

Как вы понимаете, файлы hosts быстро усложняются.

Решение

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

В конце концов, скромный файл hosts и такие новаторы, как Элизабет Дж. Фейнлер, привели к изобретению системы доменных имен, которая используется до сих пор.

Как редактировать файл hosts в Windows

Чтобы изменить файл hosts в Windows 10, вам нужно открыть его от имени администратора.

Сначала откройте Блокнот от имени администратора. Для этого нажмите клавишу Windows, введите "блокнот" и нажмите "Запуск от имени администратора":

Примечание. Возможно, вам придется нажать кнопку со стрелкой, чтобы развернуть раскрывающийся список и увидеть параметр «Запуск от имени администратора».

Чтобы открыть файл hosts в Блокноте, нажмите "Файл", "Открыть" и перейдите в папку C:\Windows\System32\drivers\etc .

Вы не сможете увидеть какие-либо файлы в этом каталоге, поскольку они не являются текстовыми документами. Чтобы изменить тип файла, щелкните раскрывающийся список в правом нижнем углу меню «Открыть» и выберите «Все файлы»:

Вы увидите файл hosts . Дважды щелкните этот файл, чтобы открыть его.

Затем вы увидите файл hosts, похожий на этот:

Файл hosts по умолчанию в Windows 10

Не говоря уже об этом, вот что вы можете сделать с файлом hosts.

Как обновить файл hosts в Windows 10, если у вас проблемы с локальным хостом

Если вы занимаетесь локальной разработкой и у вас возникли проблемы с локальным хостом, вы можете просто удалить комментарии из файла hosts:

После сохранения файла hosts закройте Блокнот.

Затем откройте PowerShell, нажав клавишу Windows, выполнив поиск "powershell" и нажав "Запуск от имени администратора":

В окне PowerShell введите ipconfig /flushdns, чтобы очистить встроенный DNS Windows:

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

Как обновить файл hosts в Windows 10, если вы считаете, что он был подделан

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

Хотя это было проблемой в прошлом, большинство программ обеспечения безопасности, таких как Windows Security Suite, могут автоматически распознавать и устранять проблемы с файлом hosts.

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

Просто скопируйте и вставьте файл hosts по умолчанию из предыдущей статьи в свой файл hosts и сохраните. Затем откройте PowerShell и используйте команду ipconfig /flushdns для сброса Windows DNS.

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

Как использовать файл hosts в Windows 10 для блокировки веб-сайтов

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

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

Например, если вы хотите заблокировать Reddit, просто добавьте это в конец файла hosts:

Затем откройте PowerShell и запустите ipconfig /flushdns, чтобы очистить DNS Windows 10. Кроме того, закройте открытые окна браузера и снова откройте их.

Поскольку веб-сайта там нет, ваш браузер покажет сообщение об ошибке:

Единственным недостатком является то, что это работает только на одном устройстве — вместо этого вы можете просто взять свой телефон и просматривать Reddit на нем. Тем не менее, это отличный способ создать проблемы с рабочим компьютером.

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

Как использовать файл hosts в Windows 10 для настройки полезных ярлыков

Если вы тратите много времени на настройку маршрутизатора или у вас есть классный проект, работающий на Raspberry Pi, вы знаете, что вводить длинный IP-адрес — это муторно.

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

Например, если ваш маршрутизатор находится в сети 192.168.1.1. 0.1 , вы можете добавить в файл hosts следующее:

Затем очистите DNS Windows 10 с помощью ipconfig /flushdns и перезапустите браузер.

И затем каждый раз, когда вы посещаете my.router, вы должны быть перенаправлены на 192.168.0.1 .

Чтобы обойти это, вместо этого вы можете использовать такое имя хоста:

Это должно сработать сразу же, потому что .my — это TLD для людей и компаний в Малайзии.

Опять же, недостатком этого метода является то, что он работает только на одном устройстве. Вам придется обновить файлы hosts на других устройствах, чтобы активировать те же ярлыки.

И это почти все, что вам нужно знать о файле hosts в Windows 10. Большая часть этих знаний должна быть перенесена в Linux и macOS.

Так что приступайте к настройке файла hosts, как когда-то это делали пионеры Интернета.

Считаете ли вы это полезным? Знаете ли вы какие-нибудь другие трюки с файлами hosts? Дайте мне знать в Твиттере.

Читайте также: