Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Linux / DevOps

Файл /etc/hosts в Linux: как привязать домен к IP или заблокировать сайт

Обновлено: 26.08.2026 · Официальная документация ↗

Что такое файл /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, системные демоны и базы данных перестанут связываться друг с другом через локальную петлю.
Нужно развернуть корпоративный DNS-сервер (Bind9 / CoreDNS) для всей инфраструктуры офиса?
ITSTM спроектирует отказоустойчивую доменную зону, настроит DNSSEC и централизованное управление записями для всех серверов и ПК.
💡 Практика специалистов: При автоматизации деплоя через Ansible или Terraform никогда не редактируйте /etc/hosts с помощью 'echo >>'. Используйте специальный модуль 'ansible.builtin.lineinfile' или 'known_hosts', чтобы исключить дублирование конфликтующих записей при повторных прогонах плейбуков.

Частые вопросы (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.

Полезные материалы
Рекомендуем