Файл /etc/hosts в Linux: как привязать домен к IP или заблокировать сайт
Что такое файл /etc/hosts простыми словами
Файл /etc/hosts — это локальная текстовая база данных соответствия доменных имен (например, mysite.ru) их цифровым IP-адресам (например, 192.168.1.100). Когда любое приложение на сервере пытается обратиться к сайту, операционная система Linux в первую очередь заглядывает в файл /etc/hosts, и только если соответствия там нет — отправляет запрос на публичные DNS-серверы интернета.
Для чего администраторы используют /etc/hosts
- Тестирование нового сайта до покупки домена или смены DNS: Можно направить домен компании на свой локальный тестовый стенд.
- Ускорение локальной сети: Чтобы не обращаться к внешнему DNS, серверам в одной стойке дают понятные имена (
db-master,app-node-01). - Блокировка рекламы и опасных сайтов: Перенаправление нежелательных доменов на адрес-заглушку
127.0.0.1или0.0.0.0.
Практические примеры редактирования /etc/hosts
Шаг 1: Открытие файла на редактирование
Файл является системным, поэтому его правка требует прав суперпользователя:
sudo nano /etc/hostsШаг 2: Синтаксис файла
Каждая запись должна быть на отдельной строке и строиться по жесткому правилу:[IP-АДРЕС] [ПРОБЕЛ / ТАБУЛЯЦИЯ] [ДОМЕННОЕ ИМЯ] [АЛИАСЫ]
Шаг 3: Сценарий А — Привязка домена к тестовому серверу
Добавьте в конец файла следующую строку, чтобы ваш компьютер думал, что сайт company.ru находится на локальном IP 192.168.1.200:
192.168.1.200 company.ru www.company.ru dev-serverШаг 4: Сценарий Б — Блокировка сайта на сервере
Чтобы заблокировать доступ к нежелательному сайту (например, соцсети или рекламному трекеру) с этого Linux-хоста, направьте его на несуществующий локальный IP 0.0.0.0:
0.0.0.0 bad-tracker.com
0.0.0.0 ads.example.comСохраните файл (Ctrl + O -> Enter -> Ctrl + X). Изменения применяются мгновенно без перезагрузки системы!
Шаг 5: Проверка работы
Проверьте, какой IP-адрес теперь выдает система:
ping -c 2 company.ruТиповые ошибки администраторов
- Забытые временные записи: Администратор протестировал сайт через /etc/hosts, сайт перенесли на другой хостинг, а у администратора сайт перестал открываться, потому что в hosts остался старый жестко привязанный IP.
- Удаление строки localhost (127.0.0.1 localhost): Если случайно стереть первые две системные строки с localhost, системные демоны и базы данных перестанут связываться друг с другом через локальную петлю.
ITSTM спроектирует отказоустойчивую доменную зону, настроит DNSSEC и централизованное управление записями для всех серверов и ПК.
Частые вопросы (FAQ)
Нужно ли перезапускать сеть после изменения файла /etc/hosts?
Нет. Большинство приложений Linux считывают файл /etc/hosts заново при каждом системном вызове разрешения имен (gethostbyname). Однако браузеры могут кэшировать DNS внутри себя — перезапустите браузер.
Что имеет приоритет: файл /etc/hosts или публичный DNS-сервер?
По умолчанию в Linux приоритет определяется конфигом /etc/nsswitch.conf (строка 'hosts: files dns'). Это означает, что файл hosts ВСЕГДА имеет наивысший приоритет над любыми внешними DNS.
Можно ли заблокировать домен сразу со всеми поддоменами (*.domain.com) через /etc/hosts?
Нет, файл /etc/hosts не поддерживает регулярные выражения и маски звездочки (*). Каждый поддомен нужно прописывать отдельной строкой. Для wildcard-блокировки используют dnsmasq или Pi-hole.
В чем разница между 127.0.0.1 и 0.0.0.0 при блокировке сайтов?
Адрес 0.0.0.0 предпочтительнее для блокировок, так как система сразу сбрасывает соединение без ожидания таймаута локального веб-сервера, который может работать на 127.0.0.1.