Файл hosts в Linux — как блокировать сайты и создавать локальные ярлыки
Важно: изменения в /etc/hosts влияют только на ту машину, где вы их внесли. Для сетевого или корпоративного уровня используйте DNS/Pi-hole/маршрутизатор.
Что такое файл hosts
Файл hosts — это простой текстовый файл, используемый операционной системой для преобразования имён хостов (например, wikipedia.org) в IP-адреса. Перед обращением к DNS-серверам система сначала проверяет этот файл. Это позволяет локально переопределять адреса, блокировать доступ к сайтам или давать простые имена локальным машинам.
Короткое определение: hosts — локальная таблица соответствий «имя ↔ IP», которая имеет приоритет над внешними DNS-запросами.
Почему это полезно:
- Быстро блокировать или перенаправлять трафик на конкретной машине;
- Создавать удобные псевдонимы для локальных серверов (например, homeserver вместо 192.168.1.10);
- Тестировать веб-сайты, подменяя домен нужным IP без изменения публичного DNS.
Короткая историческая справка: до появления DNS файл hosts служил для всего интернета, но с ростом числа хостов эта модель стала непрактичной — так и появился DNS.
Расположение файла hosts в Linux
Файл находится по пути:
/etc/hosts
Это обычный текстовый файл. Для просмотра можно использовать любой текстовый редактор или команды типа cat/less.
Пример просмотра в терминале:
cat /etc/hostsПрава: файл системный — для сохранения изменений нужны права суперпользователя.
Как безопасно редактировать файл hosts
Ниже — минимальный набор шагов, чтобы внести изменения безопасно и откатить их при необходимости.
Мини-методология (шаги):
- Сделайте резервную копию текущего файла.
- Откройте файл в привычном редакторе с правами суперпользователя.
- Внесите изменения, соблюдая синтаксис: IP, таб или пробел, имя хоста.
- Сохраните и закройте редактор.
- Проверьте результат (ping, curl, браузер).
- Если что-то пошло не так — восстановите резервную копию.
Команды примера:
Создать резервную копию:
sudo cp /etc/hosts /etc/hosts.oldОткрыть в nano:
sudo nano /etc/hostsОткрыть в графическом редакторе (если доступно):
sudo gedit /etc/hostsПримечание: в некоторых дистрибутивах gksu/gksudo может использоваться для запуска GUI-приложений с правами root. Если gksu недоступен, используйте sudo или pkexec.
Ключевые правила синтаксиса:
- Каждая запись на новой строке;
- Сначала IP-адрес, затем один или несколько пробелов или символ табуляции, затем имя хоста;
- Комментарии начинаются с # и игнорируются;
- Можно указывать несколько имён через пробелы после IP.
Пример записи (блокировка):
127.0.0.1 wikipedia.orgПример записи (локальный сервер):
192.168.1.10 homeserverIPv6-замена для локального интерфейса:
::1 localhostПримеры: как блокировать сайты и создавать ярлыки
Блокировать сайт (перенаправить на ваш компьютер):
127.0.0.1 example.com
127.0.0.1 www.example.comСоздать короткое локальное имя для сервера в домашней сети:
192.168.1.10 homeserver
192.168.1.11 nasСоздать тестовую подмену домена для разработки:
203.0.113.42 staging.example.localСовет: указывая и root-домен, и www-поддомен, вы охватываете оба варианта обращения.
Как проверить изменения
Команды для проверки соответствий:
- ping:
ping -c 1 wikipedia.org- curl (HTTP):
curl -I http://wikipedia.org- nslookup/dig покажут данные от DNS-сервера, но не от hosts (hosts действует локально):
nslookup wikipedia.org
dig wikipedia.orgВажно: nslookup обычно обращается к DNS и не учитывает /etc/hosts, поэтому для проверки именно локального перенаправления используйте ping или попытку подключения в браузере/через curl.
Типичные проблемы и ограничения
Когда hosts может не сработать:
- Сайты с распределённой инфраструктурой (CDN) имеют множество IP; вы можете перехватить только один адрес;
- HTTPS и SNI: браузер может установить соединение по другому IP, а сертификат не совпадёт с доменом — это вызывает предупреждение безопасности;
- Браузеры и приложения могут кэшировать DNS-записи и игнорировать изменения вплоть до очистки кэша;
- Некоторые приложения используют собственные DNS-резолверы или DNS через DoH/DoT, минуя системный резолвер;
- В случае групповой сети или нескольких компьютеров изменения нужно вносить на каждой машине или применить сетевой DNS.
Chrome и специфическое поведение
Google Chrome иногда обходит файл hosts. Что делать:
- Вводите адрес с префиксом http:// (например, http://wikipedia.org). Без префикса Chrome может применять дополнительные сервисы автозаполнения и обходить локальные правила.
- Отключите настройку Chrome, которая использует веб‑службу для «помощи в определении навигационных ошибок». В русской версии это «Использовать веб-службу для устранения навигационных ошибок». После этого Chrome чаще будет уважать /etc/hosts.
Дополнительные шаги при проблемах:
- Очистите кэш DNS на машине: sudo systemd-resolve –flush-caches (в systemd-системах) или перезапустите службу network-manager;
- Очистите кэш браузера или перезапустите браузер;
- Убедитесь, что записи корректны и нет опечаток.
Альтернативы и советы для сетевого уровня
Если нужно централизованно управлять блокировками и переадресациями в домашней или офисной сети, рассмотрите:
- Настройку локального DNS-сервера (Bind, dnsmasq);
- Pi-hole — блокировка на уровне DNS для всей сети;
- Правила на уровне маршрутизатора (часто в прошивке можно блокировать домены или перенаправлять IP);
- Брандмауэр/фильтрация на прокси-сервере.
Когда hosts лучше, а когда хуже
- hosts отлично подходит для одиночных машин, для тестирования и простых локальных ярлыков;
- для управления множеством устройств или для фильтрации рекламы/трекинга в сети предпочтительнее Pi-hole или DNS‑уровень.
Безопасность и приватность
Риски и рекомендации:
- hosts — локальный файл; если на компьютере есть вредоносный софт с правами root, он может незаметно изменить файл. Не предоставляйте права sudo ненадёжным программам.
- Регулярно проверяйте файл на неожиданные изменения (например, через контроль версий или простые скрипты сравнения).
- Если вы используете hosts для блокировки трекеров, учтите, что многие современные сервисы используют CDN и динамические адреса.
GDPR и приватность: hosts не передаёт личные данные и не связан напрямую с обработкой персональных данных. Однако при централизованном логировании DNS на сервере могут появляться записи запросов — учитывайте это в политике конфиденциальности.
Руководство быстрого восстановления (runbook)
Шаги на случай, если после правки /etc/hosts пропал доступ к сети:
- Войдите локально или через sudo.
- Восстановите резервную копию:
sudo cp /etc/hosts.old /etc/hosts- Перезапустите сетевой менеджер:
sudo systemctl restart NetworkManager.servicesudo systemctl restart systemd-resolved.service- Проверьте соединение: ping 8.8.8.8 и ping google.com.
- Если проблемы сохраняются — проверьте логи и настройки DNS в /etc/resolv.conf.
Контроль качества: тесты и критерии приёмки
Критерии приёмки для правок в /etc/hosts:
- Резервная копия создана и хранится на том же узле;
- Синтаксис записей корректен (IP, таб/пробел, имя);
- Проверка ping/ curl подтверждает ожидаемое поведение;
- Нет лишних символов, BOM или неверной кодировки (используйте UTF-8 без BOM);
- Изменения согласованы с заинтересованными пользователями (если машина не личная).
Примеры тест-кейсов:
- Блокировка: после добавления 127.0.0.1 example.com вызов curl http://example.com должен не возвращать страницу с сайта;
- Локальный ярлык: после добавления 192.168.1.10 homeserver браузер по адресу http://homeserver должен открывать нужный сервис;
- Откат: после восстановления hosts.old прежнее поведение восстанавливается.
Чеклист для ролей
Администратор:
- Сделать резервную копию;
- Задокументировать изменения;
- Проверить влияние на другие системы;
- Уведомить пользователей при необходимости.
Родитель / пользователь дома:
- Сделать резервную копию;
- Добавить записи для блокировок или локальных устройств;
- Проверить, что дети не имеют прав sudo или физического доступа к смене настроек.
Разработчик:
- Использовать hosts для тестирования привязки домена к тестовому серверу;
- Сверить с командой, чтобы не конфликтовать с CI/CD;
- Откатить изменения после завершения теста, если требуется.
Полезные сниппеты и шаблоны
Блокировать набор доменов (пример):
127.0.0.1 ad.example.net
127.0.0.1 tracker.example.org
127.0.0.1 analytics.example.comШаблон записи с комментариями:
# IP-адрес имя_хоста # комментарий о назначении
192.168.1.10 homeserver # домашний медиасерверМентальные модели и когда hosts — не решение
Модель: hosts — это локальная «папка заметок» для вашей ОС, где вы вручную говорите системе, куда идти по конкретным именам. Она хороша для индивидуальных и временных правок. Если вам нужно масштабируемое, централизованное или управляемое решение, думайте о DNS как о правильном инструменте.
Когда hosts не поможет:
- Блокировка на уровне всей сети;
- Управление многими клиентами;
- Сценарии, где приложения используют DoH/DoT.
Примеры ошибок и как их решать
Ошибка: сайт по-прежнему открывается после добавления записи в hosts.
Проверки:
- Правильно ли вы указали домен (www. и без)? Добавьте оба варианта;
- Очищен ли DNS-кэш и кэш браузера? Перезапустите службы и браузер;
- Не использует ли приложение собственный DNS (DoH)? Проверьте настройки приложения;
- Была ли запись сохранена с правильной кодировкой и без BOM?
Ошибка: после правки интернета нет вообще.
Проверки:
- Восстановите резервную копию и перезапустите сетевые службы;
- Проверьте /etc/resolv.conf и настройки сетевого менеджера;
- Откатите изменения и проверьте, вернётся ли соединение.
Заключение
Файл hosts — простой и мощный инструмент для локального управления соответствием имён и IP-адресов. Он идеален для блокировок на уровне одной машины, простых локальных ярлыков и временной подмены DNS для тестирования. Всегда выполняйте резервное копирование, учитывайте ограничения (CDN, SNI, DoH) и выбирайте сетевые решения (DNS, Pi-hole) для централизованного управления.
Краткое резюме:
- hosts — локальная таблица «имя ↔ IP»;
- Располагается в /etc/hosts на Linux;
- Требует прав суперпользователя для редактирования;
- Подходит для одиночных машин и тестирования; для сети используйте DNS или Pi-hole.

В конце: если вы хотите массово управлять блокировками в домашней сети, рассмотрите переход от hosts к Pi-hole или локальному DNS-серверу — это сократит ручную работу и позволит централизовать политику блокировок.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone