/etc/hosts предоставляет статические соответствия адресов и имён локальному стеку служб имён системы. Он полезен для loopback-имён, зависимостей начальной загрузки и узконаправленных тестов, но не публикует записи для других хостов и не обновляет DNS.
DNS · Урок 4
/etc/hosts
Узнайте, как локальные сопоставления файла hosts участвуют в разрешении имён Linux и как безопасно их проверять.
Чтение файла
Строка начинается с IPv4- или IPv6-адреса, после которого указано одно или несколько имён:
127.0.0.1 localhost
192.0.2.25 app-test.example.net app-test
2001:db8::25 app-test-v6.example.net app-test-v6
Комментарии начинаются с #. Некоторые инструменты условно считают первое имя каноническим, а последующие — псевдонимами, однако поведение приложений и API резолвера различается. Избегайте повторяющихся или противоречащих друг другу записей одного имени.
Что стоит первым в обычной строке сопоставления /etc/hosts?
Порядок работы резолвера
Конфигурация Name Service Switch, обычно /etc/nsswitch.conf, определяет, как системные функции разрешения объединяют files, DNS, multicast-системы и другие источники. Распространённая строка выглядит так:
hosts: files dns
Не считайте, что файлы всегда проверяются первыми, не изучив политику. Приложения также могут использовать собственные DNS-библиотеки, кеши, прокси или зашифрованные резолверы и не следовать системному пути.
Что определяет, будет ли системный резолвер обращаться к /etc/hosts раньше DNS?
Проверка через системный резолвер
Используйте getent, чтобы задействовать настроенный системный путь службы имён:
$ getent ahosts app-test.example.net
dig отправляет запрос непосредственно в DNS и обычно не показывает сопоставления из /etc/hosts. Это различие полезно: если getent успешно находит имя, а dig — нет, причиной может быть локальный источник или отличие политики резолвера.
Какой инструмент лучше подходит для проверки того, видит ли обычное системное разрешение запись файла hosts?
Безопасное редактирование
Сохраняйте необходимые записи localhost и идентичности хоста, проверяйте нужный адрес и вносите обратимое изменение с помощью редактора с повышенными привилегиями. Не подменяйте реальный публичный домен ради случайного теста: это может неожиданно перенаправить учётные данные или трафик приложения. Используйте отдельное тестовое имя и удалите запись после эксперимента.
После редактирования проверьте именно нужное приложение, поскольку оно может сохранять кеш или использовать другой резолвер. Документируйте постоянные переопределения, чтобы они незаметно не пережили свою задачу.
Почему для теста следует использовать отдельное имя, а не переопределять имя публичного сервиса?
Конфигурация сервера-резолвера
В /etc/resolv.conf традиционно перечисляются настройки DNS-резолвера, но часто этот файл создаёт NetworkManager, systemd-resolved, DHCP или другой менеджер. Проверьте символические ссылки и комментарии файла, а затем меняйте исходную конфигурацию владельца вместо редактирования сгенерированного вывода, который будет перезаписан.
Что следует сделать перед редактированием /etc/resolv.conf?
Урок завершён
Вы завершили /etc/hosts
Теперь вы можете использовать /etc/hosts как контролируемый локальный источник для резолвера.
Записывать сопоставления с адресом на первом месте и осознанно выбирать имена и псевдонимы.
Проверять порядок Name Service Switch, а не предполагать его.
Отдельно тестировать системное разрешение через
getentи DNS черезdig.Использовать временные тестовые имена и проверять реальное приложение.
Менять серверы-резолверы через владеющую конфигурацией систему.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт