Гид по технологиям

Файл hosts в Linux: блокировка сайтов и локальные ярлыки

7 min read Linux Обновлено 18 Apr 2026
Файл hosts в Linux: блокировка сайтов и ярлыки
Файл hosts в Linux: блокировка сайтов и ярлыки

файл hosts на Linux, текстовый файл с записями хостов

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

Файл hosts — это простой текстовый файл, который система использует для преобразования имён хостов (например, wikipedia.org) в IP-адреса. Когда вы вводите имя сайта, система сначала проверяет записи в этом файле и только потом обращается к DNS-серверам, указанным в настройках сети.

Ключевая идея: hosts работает локально и применяется только на том компьютере, где вы его изменили. Это удобно для локальных перенаправлений и случаев, когда нужно «заглушить» доступ к сайту без изменения глобального DNS.

Краткое определение: hosts — локальная таблица соответствий имя → IP, приоритетнее по сравнению с сетевыми DNS.

Где находится файл hosts

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

Примеры запуска редакторов:

sudo nano /etc/hosts
sudo -H gedit /etc/hosts

Если вы используете старые инструкции с gksu, учтите, что gksu может быть недоступен в современных дистрибутивах; в таких случаях используйте sudo -H или pkexec.

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

sudo cp /etc/hosts /etc/hosts.old

Сделать резервную копию особенно важно: неверная запись может привести к проблемам с доступом в интернет или к локальным сервисам.

Синтаксис и базовые примеры

Каждая запись в файле hosts занимает отдельную строку. Формат простой: IP-адрес, затем один или несколько пробелов или табов, затем имя хоста. Комментарии начинаются с символа #.

Пример блокировки сайта (использование loopback):

127.0.0.1   wikipedia.org
127.0.0.1   www.wikipedia.org
# 127.0.0.1 пример.локальный    # комментарий

Альтернативный вариант блокировки — использовать 0.0.0.0:

0.0.0.0 annoying-ad.example

Разница между 127.0.0.1 и 0.0.0.0: 127.0.0.1 указывает на локальную петлю (loopback) и иногда вызывает попытку обращения к локальному веб-серверу; 0.0.0.0 — неопределённый адрес, который сразу отбивает соединение и считается чуть эффективнее для массовой блокировки.

Поддержка IPv6:

::1 localhost
::1 ipv6-example.local

Пример перенаправления локального сервера:

192.168.1.10    homeserver
192.168.1.10    fileserver.local

Множественные имена хостов на одной строке допустимы:

192.168.1.10    homeserver fileserver

Практические сценарии использования

  • Блокировка сайтов (локально на одном компьютере).
  • Быстрая проверка изменений DNS до распространения по сети (тестирование новых записей).
  • Создание коротких имён для локальных серверов в домашней сети.
  • Миграция: принудительное тестирование нового сервера перед сменой DNS на уровне провайдера.

Создание локальных ярлыков и коротких имён

Если у вас есть домашний сервер с IP 192.168.1.10, добавьте запись:

192.168.1.10    homeserver

Теперь в браузере достаточно набрать http://homeserver — система направит запрос на 192.168.1.10.

Альтернативы и рекомендации:

  • Если в домашней сети множество устройств, лучше настроить статический DHCP-резерв на роутере (назначение постоянного IP) и/или локальный DNS-сервер (например, dnsmasq или Pi-hole), чтобы не править hosts на каждой машине.
  • Для автоматического объявления имён в локальной сети можно использовать mDNS/Avahi: имена вида hostname.local будут разрешаться без правки hosts.

Возможные проблемы и обходы со стороны браузеров

Некоторые браузеры и сервисы могут игнорировать записи в hosts или обходить их из-за кеширования, функций предсказания или использования DNS-over-HTTPS (DoH).

Chrome — частый «подозреваемый»: если вы просто вводите wikipedia.org, Chrome может обойти hosts. Решения:

  1. Вводить адрес с префиксом http://, например http://wikipedia.org — тогда браузер будет учитывать hosts.
  2. Отключить опцию в Chrome: “Использовать веб-службу для решения навигационных ошибок” (Use a web service to help resolve navigation errors) — тогда Chrome не будет пробовать внешние сервисы при ошибках.
  3. Если включён DoH, браузер может посылать DNS-запросы напрямую к внешним серверам, минуя системный резолвер; отключите DoH в настройках браузера или настройте системный ресолвер.

Проверка того, какой путь разрешения имени используется:

getent hosts wikipedia.org
ping -c 1 wikipedia.org
dig +short wikipedia.org

Если вывод dig показывает внешний IP, а getent — запись из hosts, значит приложение использует системный резолвер; если приложение использует собственный DoH, hosts может игнорироваться.

Безопасность, права и защита от нежелательных изменений

Файл /etc/hosts — файл с повышенными привилегиями. Несколько советов по защите:

  • Храните резервную копию: /etc/hosts.bak или с датой.
  • Права доступа: обычно файл принадлежит root и имеет права 644. Проверка:
ls -l /etc/hosts
-rw-r--r-- 1 root root  ... /etc/hosts
  • Чтобы предотвратить изменения даже при ошибке администратора, можно сделать файл неизменяемым (требует root):
sudo chattr +i /etc/hosts

Учтите: снять атрибут нужно снова перед редактированием (sudo chattr -i /etc/hosts).

  • Контролируйте изменения через систему контроля версий (например, храните копию файла в приватном Git-репозитории конфигураций) или с помощью инструментов управления конфигурацией (Ansible, Puppet).

Альтернативные подходы и когда hosts не подходит

hosts удобен для единичных машин и простых задач. Он не годится, когда:

  • Нужно централизованно управлять правилами для множества устройств.
  • Требуется гибкая фильтрация по категориям контента.
  • Желательна отчётность и временные политики доступа.

Альтернативы:

  • DNS-сервер уровня сети (dnsmasq, bind) — централизованное управление.
  • Pi-hole — сетевой блокировщик рекламы и трекинга (работает как DNS и применяет списки блокировок для всех устройств в сети).
  • Родительский контроль роутера — некоторые роутеры поддерживают фильтрацию доменов и расписание доступа.
  • Решения корпоративного уровня с централизованной политикой (AD, корпоративный DNS).

Работа с множественными IP у крупных сайтов

Многие крупные сайты используют пул IP-адресов, CDN и балансировку. В таких случаях простая запись hosts на один IP может не сработать или работать нестабильно. Для тестирования чаще используют:

  • Временное редактирование hosts для конкретной версии сервера.
  • Инструменты curl с опцией –resolve для обращения к конкретному IP без правки hosts:
curl -I --resolve example.com:80:203.0.113.5 http://example.com/

Проверка и приёмочные тесты

Чеклист для валидации изменений:

  1. Сделали резервную копию файла.
  2. Отредактировали файл и сохранили изменения с правами root.
  3. Проверили синтаксис и отсутствие лишних символов.
  4. Прогнали локальную проверку:
getent hosts example.com
ping -c1 example.com
curl -I http://example.com/ --max-time 5

Критерии приёмки:

  • getent hosts возвращает IP из hosts.
  • Пинг идёт на ожидаемый IP или даёт локальную ошибку (в случае блокировки на 127.0.0.1).
  • Браузер отображает ожидаемое поведение после очистки кеша браузера.

Руководство по устранению неполадок

Если изменения не вступили в силу:

  1. Убедитесь, что файл сохранён и не содержит опечаток.
  2. Убедитесь, что в файле нет лишних символов (например, неправильных табуляций или невидимых символов).
  3. Проверьте права и атрибуты chattr:
lsattr /etc/hosts
sudo chattr -i /etc/hosts
  1. Очистите DNS-кеш:

Для systemd-resolved:

sudo resolvectl flush-caches
# либо
sudo systemd-resolve --flush-caches

Для nscd (если установлен):

sudo systemctl restart nscd

Для Chrome очистите внутренний кеш DNS: откройте chrome://net-internals/#dns и нажмите Clear host cache; затем chrome://net-internals/#sockets и Close idle sockets.

  1. Проверьте, не использует ли ваше приложение DoH или встроенный DNS-клиент.

SOP: безопасный рабочий процесс при изменении файла hosts

  1. Сделать резервную копию:
sudo cp /etc/hosts /etc/hosts.$(date +%F-%T)
  1. Отредактировать файл через безопасный редактор:
sudo -H nano /etc/hosts
  1. Проверить синтаксис, удалить лишние пробелы, убедиться в отсутствии запрещённых символов.
  2. Сохранить и проверить с помощью getent и ping.
  3. Очистить кеш резолвера и браузера.
  4. Если нужно зафиксировать изменения, сохранить копию в системе управления конфигурацией.

Чеклисты по ролям

Администратор сети:

  • Централизованно настроить DNS/денегироваться на Pi-hole.
  • Обеспечить резервное копирование и контроль версий.
  • Документировать изменения и уведомлять пользователей.

Пользователь дома:

  • Сделать резервную копию hosts перед правкой.
  • Использовать hosts для простых локальных ярлыков.
  • Понять, что изменения действуют только на текущем устройстве.

Родитель:

  • Использовать hosts как временное решение для блокировки контента.
  • Для надёжного контроля — настроить фильтрацию на роутере или через Pi-hole.

Краткий справочник команд (cheat sheet)

sudo nano /etc/hosts               # открыть файл
sudo cp /etc/hosts /etc/hosts.bak  # создать резервную копию
getent hosts example.com           # показать, как система разрешит имя
dig +short example.com             # DNS-запрос к внешним серверам
ping -c1 example.com               # проверить поведение соединения
sudo resolvectl flush-caches       # очистить кеш systemd-resolved
sudo chattr +i /etc/hosts          # сделать файл неизменяемым
sudo chattr -i /etc/hosts          # снять защиту

Политика приватности и примечания по GDPR

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

Частые вопросы

Работает ли hosts для всех пользователей в системе?

Да, запись в /etc/hosts действует для всех пользователей на данной машине, поскольку разрешение имён происходит на уровне системы.

Можно ли использовать hosts для блокировки рекламы?

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

Как отменить изменения в hosts?

Восстановите резервную копию:

sudo cp /etc/hosts.old /etc/hosts

Затем очистите кеш резолвера и браузера.

Почему некоторые сайты всё равно открываются?

Возможные причины: кеш DNS в системе или браузере, использование DoH, множество IP-адресов у сайта или опечатка в файле hosts. Проверьте описанные ранее шаги устранения неполадок.

Итог и рекомендации

Файл hosts — мощный и простой инструмент для локального управления разрешением имён: блокировки, перенаправления и тестирования DNS. Он удобен для одиночных машин и небольших сетей, но не заменяет централизованных решений в крупных средах. Всегда:

  • Делайте резервную копию перед изменением.
  • Проверяйте права доступа и защищайте файл при необходимости.
  • Используйте альтернативы (DNS, Pi-hole, роутер), если нужен масштаб или более гибкая политика.

пример записи в файле hosts с IP и именем хоста

интерфейс блокировщика доменов Domain Blocker в Linux Mint

Короткая памятка: hosts — локально, быстро, просто, безопасно при соблюдении резервных копий и прав доступа.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Калибровочные кадры в астрофотографии — руководство
Астрофотография

Калибровочные кадры в астрофотографии — руководство

Проверить число циклов зарядки iPhone
Гайды

Проверить число циклов зарядки iPhone

SPI и I2C на Raspberry Pi: включение и использование
Raspberry Pi

SPI и I2C на Raspberry Pi: включение и использование

Как подписать PDF: 6 проверенных способов
Документы

Как подписать PDF: 6 проверенных способов

Alt-Tab не работает в Windows — как исправить
Windows

Alt-Tab не работает в Windows — как исправить

Noisli — звуки для фокуса и снижения стресса
Продуктивность

Noisli — звуки для фокуса и снижения стресса