| DNS: команды для управления системой разрешения доменных имен |
|
| Добавил(а) microsin |
|
При неполадках системы преобразования доменных имен в IP-адреса часто используют следующие команды: resolvectl status Давайте разберем каждую из этих команд. Все они относятся к управлению системой DNS (система доменных имен) в современных дистрибутивах Linux (особенно с systemd). Назначение: показать текущее состояние, т. е. настройки и статистика встроенного DNS-резолвера (клиента) systemd-resolved. Эта команда выводит подробную информацию о том, как ваш компьютер в данный момент настроен для разрешения доменных имен: ● Глобальные настройки: какие DNS-серверы используются по умолчанию (глобально). Когда использовать: для диагностики — чтобы понять, какой DNS-сервер использует система в данный момент (например, ваш роутер, Google DNS или провайдер). Пример вывода команды resolvectl status: $ resolvectl status
Global
Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Это снимок состояния systemd-resolved, и здесь видно, что система использует гибкую логику выбора DNS в зависимости от того, какой сетевой интерфейс активен. Эта команда состоит из трех частей. Разберем ее по элементам: journalctl — утилита для просмотра системных логов (журналов) systemd. -u systemd-resolved — фильтр, показывающий логи только от конкретного юнита (службы) с именем systemd-resolved.service. -f (от follow) — режим "слежения". Журнал не выводится один раз и не закрывается, а постоянно висит в терминале и показывает новые записи по мере их появления (аналог tail -f). Назначение: в режиме реального времени наблюдать за работой локального DNS-резолвера. Когда использовать: это главный инструмент для отладки проблем с сетью. Вы открываете этот лог, пытаетесь открыть сайт в браузере или выполняете ping, и сразу видите в терминале: ● Какой запрос пришел и когда. Назначение: вручную отправить запрос на разрешение доменного имени конкретно через systemd-resolved, минуя другие утилиты (такие как ping или dig), и получить детальный технический ответ. Эта команда показывает не просто IP-адрес, а полный маршрут запроса: ● Какой интерфейс был использован для запроса. ● С какого DNS-сервера пришел ответ (например, с локального кеша, с сервера провайдера или с роутера). ● Все найденные типы записей: A (IPv4-адрес) — например, `94.100.180.200`. ● Статус аутентификации DNSSEC (подтверждена ли подпись). Когда использовать: когда нужно проверить, видит ли системный резолвер этот домен, и не блокирует ли его локальный фильтр (например, файл /etc/hosts). Это полезно, если сайт открывается не так, как вы ожидаете, и вы хотите понять, какой IP-адрес возвращает именно ваша операционная система (а не сторонние DNS-утилиты). [Связка всех трех команд (пример сценария)] Представьте, что сайт mail.ru стал плохо открываться. 1. Диагностика: вы вводите `resolvectl status`, чтобы убедиться, что ваш компьютер вообще видит DNS-сервер (например, вы видите, что интерфейс wlan0 получил DNS 8.8.8.8). 2. Мониторинг: вы открываете вторую вкладку терминала и запускаете `journalctl -f -u systemd-resolved`, чтобы видеть живые ошибки. 3. Проверка: в первой вкладке вы пишете `resolvectl query mail.ru`. ● Если команда выдала IP-адрес — значит, резолвер работает, проблема не в DNS, а в самом подключении к сайту. [Для чего нужен файл /etc/resolv.conf] Файл /etc/resolv.conf это основной конфигурационный файл для системного резолвера (набора функций в стандартной C-библиотеке glibc), который используется всеми приложениями для преобразования доменных имен в IP-адреса. Его можно представить как "шпаргалку" для всей системы, в которой указано, куда обращаться за DNS-информацией. Основные директивы файла. Файл состоит из текстовых директив. Наиболее важные из них: ● nameserver IP-адрес: определяет IP-адрес DNS-сервера, к которому система будет обращаться. Можно указать до трех серверов; запросы будут отправляться в порядке их перечисления, пока один из них не ответит. Если файл отсутствует, система по умолчанию будет обращаться только к серверу на локальной машине (`127.0.0.1`). Как создается resolv.conf? В современных дистрибутивах Linux файл /etc/resolv.conf редко создается вручную. Его созданием и обновлением автоматически занимаются сетевые менеджеры: NetworkManager: обычно это основной менеджер. При загрузке системы он создает файл на основе параметров, полученных по DHCP, VPN или указанных вручную. Он может управлять файлом напрямую или через символическую ссылку на /run/NetworkManager/resolv.conf. systemd-resolved: более современный системный DNS-резолвер. Часто resolv.conf является символической ссылкой на управляемый им файл (/run/systemd/resolve/resolv.conf), через который он транслирует свою конфигурацию для старых приложений. resolvconf (утилита): специальный фреймворк, агрегирующий DNS-информацию от разных источников (DHCP, VPN) в единый файл. Программы не пишут прямо в resolv.conf, а регистрируют свои настройки через `resolvconf -a`. Как /etc/resolv.conf удаляется, при каких условиях? Файл не "удаляется" целенаправленно. Он может перестать существовать в следующих случаях: 1. Системная ошибка: если во время загрузки не запустился основной сетевой менеджер (NetworkManager), файл может не быть создан. Как resolv.conf работает совместно с другими настройками конфигурации DNS? Файл /etc/resolv.conf это низкоуровневое звено, с которым взаимодействуют все приложения. Он не конфликтует, а "впитывает" в себя настройки из более высокоуровневых систем: 1. Источник → Менеджер: вы настраиваете DNS в NetworkManager (через GUI) или в конфигурационных файлах systemd-resolved (файл /etc/systemd/resolved.conf). Эти настройки являются источником истины.
|