Файл hosts: что это, где лежит и как его редактировать
Иногда сайт открывается у всех, но не у вас. Или наоборот - домен еще даже не делегирован, а вы уже хотите проверить, как на нем встанет новый сервер. В обоих случаях ответ часто прячется в одном маленьком текстовом файле, про который вспоминают редко, - в файле hosts.
hosts - это простой текстовый файл, который сопоставляет доменные имена с IP-адресами прямо на вашем компьютере или сервере, в обход DNS. Грубо говоря, это локальная записная книжка адресов, в которую система заглядывает раньше, чем обращается к DNS-серверам.
Зачем вообще нужен файл hosts
Когда вы открываете в браузере любой адрес, система сначала должна превратить домен в IP. По умолчанию этим занимается DNS. Но перед тем как идти к DNS-серверу, ОС заглядывает в локальный файл hosts. Если нужная запись там есть - система использует ее и в DNS вообще не обращается.
Из этого вырастает несколько вполне практичных сценариев.
- Проверить новый сервер до переноса DNS. Вы заказали VPS, развернули сайт, но домен еще указывает на старый хостинг. Прописав в hosts связку «домен → новый IP», вы увидите сайт на новом сервере только у себя, ничего при этом не ломая для остальных посетителей.
- Локально заблокировать домен. Указав для домена адрес или , вы закрываете к нему доступ на конкретной машине - так работают многие самодельные блокировщики рекламы и родительский контроль.
- Обойти кривой или подмененный DNS. Если DNS-резолвер выдает неправильный ответ, временная запись в hosts позволяет достучаться до сервиса напрямую.
- Работа в локальной сети и разработка. Удобно завести себе понятные имена вроде для машин без публичных доменов.
Важная оговорка: hosts действует только на той машине, где вы его правите. Это не настройка домена и не замена DNS для всего мира - посетители вашего сайта изменений в вашем hosts не увидят.
Как выглядит файл hosts внутри
Содержимое предельно простое. Каждая строка - это IP-адрес, затем один или несколько пробелов (или табуляция), затем доменное имя. Строки, начинающиеся с символа , считаются комментариями и игнорируются.
Здесь - это всегда сам локальный компьютер (loopback), а - его же адрес в формате IPv6. Эти две строки трогать обычно не нужно: на них завязана корректная работа системы.
Где находится файл hosts
Путь зависит от операционной системы. Сам файл везде называется одинаково - , без расширения.
| Операционная система | Путь к файлу hosts |
|---|---|
| Windows | C:\Windows\System32\drivers\etc\hosts |
| Linux | /etc/hosts |
| macOS | /etc/hosts |
Во всех трех системах для редактирования hosts нужны права администратора (root). Без них файл откроется только на чтение, и сохранить изменения не получится.
Как отредактировать hosts в Windows
Главная сложность в Windows - именно права доступа. Если открыть файл обычным двойным кликом, отредактировать его не дадут. Поэтому редактор нужно запускать от имени администратора.
- Нажмите «Пуск», начните вводить Блокнот.
- Кликните по нему правой кнопкой и выберите Запуск от имени администратора.
- В Блокноте откройте файл через меню «Файл → Открыть» и перейдите по пути .
- В поле типа файлов выберите «Все файлы», иначе hosts (он без расширения) просто не будет виден.
- Откройте , внесите нужные строки и сохраните обычным Ctrl + S.
Если при сохранении Windows все равно ругается на доступ - почти наверняка редактор был запущен не от администратора. Закройте его и откройте заново правильным способом. В отдельных случаях правки hosts может блокировать антивирус или Microsoft Defender, расценивая их как потенциально нежелательные - тогда правку нужно подтвердить в его уведомлении.
Как отредактировать hosts в Linux
На сервере проще всего работать через SSH и консольный редактор nano. Команду нужно выполнять от root или через .
Добавьте нужную строку в конец файла, например, чтобы домен указывал на конкретный сервер:
Сохраните файл сочетанием Ctrl + O и подтвердите имя клавишей Enter, затем выйдите из редактора через Ctrl + X. Изменения вступают в силу сразу, перезагрузка сервера не требуется.
Альтернатива: добавить строку одной командой, без редактора
Иногда удобно дописать запись в hosts одной командой. Может возникнуть соблазн использовать перенаправление , но не сработает: перенаправление выполняет сама оболочка от вашего имени, а не от root. Поэтому берут с флагом (от append) - он дописывает строку в конец файла от имени root. Без команда перезаписала бы весь файл.
Как отредактировать hosts в macOS
В macOS путь тот же, что и в Linux. Откройте «Терминал» и выполните:
Система запросит пароль администратора. Дальше все так же: добавляете строку, сохраняете Ctrl + O, выходите Ctrl + X. После правки в macOS иногда полезно сбросить кэш DNS, чтобы изменения подхватились наверняка:
Как проверить, что запись в hosts работает
После правки стоит убедиться, что система действительно резолвит домен в нужный IP. Самый простой способ - команда : в ее выводе видно, на какой адрес уходит запрос.
Если в ответе указан тот IP, который вы прописали в hosts, - запись применилась. Учтите, что многие серверы не отвечают на ping (ICMP закрыт фаерволом), и это нормально: важна именно строка с резолвом адреса, а не сами ответы. На Windows для проверки удобнее , но он показывает ответ DNS и hosts может игнорировать - поэтому именно для hosts надежнее ориентироваться на или на реальное открытие сайта в браузере.
Если изменения не подхватываются, очистите кэш DNS. В Windows - командой в консоли, запущенной от администратора. В Linux это зависит от используемого резолвера (например, или перезапуск ).
Безопасность: почему hosts любят вирусы
Раз hosts проверяется раньше DNS, он становится лакомой целью для вредоносного ПО. Классический прием фишинга - дописать в hosts строку, которая уводит банковский или почтовый домен на поддельный IP. Пользователь набирает привычный адрес, а попадает на сайт-клон.
Поэтому есть смысл время от времени заглядывать в свой hosts. Если вы видите там незнакомые строки с известными доменами (банки, соцсети, почта), которых вы туда не добавляли, - это повод насторожиться и проверить систему антивирусом.
Перед любой правкой hosts полезно сохранить его копию. На Linux это одна команда: . Если что-то пойдет не так, вы всегда вернете исходное состояние.
Частые ошибки при работе с hosts
- Файл сохранен с расширением. В Windows Блокнот любит добавить , и получается - такой файл система не читает. Имя должно остаться ровно , без расширения.
- Нет прав администратора. Самая частая причина «не сохраняется». Редактор должен быть запущен от имени администратора (Windows) или команда выполнена через (Linux/macOS).
- Лишние пробелы или табы не разделяют IP и домен. Между адресом и именем должен быть хотя бы один пробел или табуляция. Слепленные вместе работать не будут.
- Забыли про кэш DNS. Иногда правка верна, но старый ответ еще кэширован - помогает сброс кэша и перезапуск браузера.
- Случайно удалили строку localhost. Строки и лучше не трогать: на них завязана работа системных сервисов.
Коротко о главном
Файл hosts - это локальная таблица соответствия «домен → IP», к которой система обращается раньше, чем к DNS. Он не настраивает домен глобально и действует только на одной машине, но именно поэтому удобен: им можно безопасно проверить новый сервер до переноса DNS, локально закрыть доступ к домену или обойти сбойный резолвер.
Если вы переносите проект на новый сервер и хотите проверить его на своем домене до смены DNS, добавьте в hosts связку «ваш домен → IP нового VPS». Так вы убедитесь, что сайт корректно поднялся на новой площадке, еще до того как пустите на нее реальных посетителей. Серверы SpaceCore с полным root-доступом позволяют развернуть и проверить окружение именно по такому сценарию - без спешки и простоя для пользователей.
Частые вопросы
Нужно ли перезагружать компьютер после правки hosts?
Нет. Изменения применяются сразу. Иногда требуется только закрыть и открыть браузер или сбросить кэш DNS, если старый ответ закэширован.
Можно ли указать один IP для нескольких доменов?
Да. Каждый домен пишется отдельной строкой с одним и тем же IP, либо несколько имен можно указать в одной строке через пробел после адреса.
Чем отличается 127.0.0.1 от 0.0.0.0 при блокировке домена?
Оба варианта «отправляют» домен в никуда на локальной машине. заворачивает запрос на сам компьютер (и иногда вызывает короткую задержку при попытке соединения), а чаще приводит к мгновенному отказу. Для блокировки обычно предпочитают .
Почему запись в hosts не работает?
Чаще всего причина в одном из трех: файл сохранен без прав администратора, у него появилось лишнее расширение, либо не сброшен кэш DNS. Проверьте эти три пункта в первую очередь.