Главная
» Как сделать
»
Сбои поиска DNS в Debian 12: восстановите systemd-resolved
Сбои поиска DNS в Debian 12: восстановите systemd-resolved
Если в Debian 12 отображается сообщение «Временная ошибка разрешения имен», проверьте службу разрешения имен, /etc/resolv.confссылку и DNS-серверы, указанные в списке resolvectl— именно в таком порядке. Перезапуск службы помогает только в том случае, если служба остановлена; для устранения проблемы с неработающей ссылкой или недоступным вышестоящим сервером требуется другое решение.
Эти инструкции относятся к системам Debian 12 (Bookworm), настроенным на использование DNS -сервера systemd-resolved. Debian выделил этот DNS-сервер в отдельный пакет и не сделал его DNS-сервером по умолчанию, как объясняется в примечаниях к выпуску Debian 12. Если в вашей системе используется другой DNS-менеджер, оставьте управление за этим менеджером, а не навязывайте ему эти настройки.
1. Определите, где возникают ошибки при разрешении имен.
Начните с определения сетевого маршрута и поиска имени хоста. Выполните команды локально или в терминале, который останется открытым, если изменятся параметры сети:
ip -br address
ip route
ping -c 2 1.1.1.1
resolvectl status
resolvectl query debian.org
getent ahosts debian.org
Наличие маршрута по умолчанию и работающего числового IP-адреса указывает на то, что машина может подключиться к сети без DNS. Неудачный пинг сам по себе не доказывает нарушение маршрута: сети могут блокировать ответы ICMP echo. Если у интерфейса отсутствует адрес или маршрут, сначала исправьте сетевое соединение.
resolvectl statusОтображает DNS-серверы и домены, назначенные глобально или отдельным интерфейсам. resolvectl queryПроверяет работу резолвера systemd; getent ahostsпроверяет путь поиска имени хоста, обычно используемый приложениями Linux. Это различие помогает локализовать неисправность.
Наблюдение
Следующая проверка
Нет адреса или маршрута по умолчанию.
Исправьте конфигурацию интерфейса, шлюза или DHCP до настройки DNS.
resolvectlне удается подключиться к его сервису
Проверьте, systemd-resolvedустановлено ли и запущено ли приложение.
Оба запроса не проходят при наличии работающего маршрута.
Проверьте адреса DNS-серверов вышестоящих серверов, маршрутизацию DNS и доступ к брандмауэру.
В окне терминала отображаются маршрут сети по умолчанию, назначение DNS-сервера и поиск имени хоста на уровне приложения для первоначальной диагностики.
2. Убедитесь, что systemd-resolved установлен и активен.
В Debian 12 наличие systemd не гарантирует установку отдельного пакета DNS-резолвера. Перед изменением каких-либо DNS-файлов проверьте пакет и юнит:
dpkg-query -W -f='${Status}\n' systemd-resolved
systemctl status systemd-resolved --no-pager
Если пакет установлен, но служба неактивна, запустите её и включите для последующих перезагрузок:
В итоговой команде должен быть получен результат active. Если устройство выдает ошибку, следует изучить фактические сообщения об ошибках, а не перезапускать его многократно:
Если пакет отсутствует, установите его sudo apt install systemd-resolvedтолько после того, как у вас будет доступ к работающему репозиторию пакетов. Установка пакета изменяет управление /etc/resolv.conf, поэтому сначала проверьте настройки NetworkManager, VPN или статического DNS. Debian описывает это изменение пакета в своих примечаниях к обновлению Bookworm .
На экране отображения состояния службы показано, где искать информацию о загруженном устройстве, его активном состоянии и сообщениях при запуске.
3. Исправляйте ссылку на резолвер только в том случае, если она некорректна.
Стандартный systemd-resolvedзаглушка прослушивает порт 127.0.0.53. Рекомендуемый файл совместимости — /run/systemd/resolve/stub-resolv.conf, который можно связать из /etc/resolv.conf. Сначала проверьте текущий режим:
ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf
cat /etc/resolv.conf
resolvectl status
Режим "ссылка на" /run/systemd/resolve/resolv.confтакже поддерживается, но программы, использующие его, обращаются напрямую к вышестоящему DNS-серверу, а не к локальному заглушке. Не следует считать эту ссылку неработающей только потому, что она отличается. В руководстве по службе systemd-resolved в Debian описаны поддерживаемые режимы.
Если вы намеренно используете локальный заглушечный файл, служба запущена, прослушиватель заглушки включен, а существующий файл /etc/resolv.confотсутствует, неактивен или указывает на устаревший резолвер, восстановите рекомендуемую ссылку. Сначала сделайте резервную копию существующего файла или ссылки; если файла нет, копирование можно пропустить:
Не выполняйте эту замену на хосте, где другой сервис намеренно управляет этим /etc/resolv.conf. Для локальной nameserver 127.0.0.53записи также требуется работающий заглушечный слушатель; простое указание этого адреса не создаёт DNS-службу. На удалённой машине сохраните второй метод доступа перед редактированием настроек резолвера.
Проверка символических ссылок показывает ожидаемый целевой объект, если Debian намеренно настроен на использование локального заглушки, разрешенного systemd.
4. Исправьте отсутствие или недоступность вышестоящего DNS-сервера.
Если resolvectl statusотображается сообщение об отсутствии подходящего вышестоящего DNS-сервера или о недоступности настроенного сервера, устраните источник этого назначения. Динамические настройки DNS могут поступать от DHCP, NetworkManager, systemd-networkd или VPN. Проверьте, какой интерфейс передает маршрут по умолчанию и какой DNS-сервер к этому интерфейсу относится.
Для краткой диагностической проверки сети, разрешающей использование публичных DNS-серверов, назначьте этому интерфейсу известные публичные DNS-серверы. Замените ens33на фактический интерфейс из ip -br address:
sudo resolvectl dns ens33 1.1.1.1 1.0.0.1
resolvectl query debian.org
Эти два адреса указаны Cloudflare как адреса публичных DNS-серверов . resolvectl dnsИзменение является конфигурацией во время выполнения; сетевой администратор может заменить их при восстановлении соединения. Если теперь поиск работает, исправьте постоянный источник DNS, а не полагайтесь на эту временную команду.
С помощью NetworkManager проверьте активное соединение nmcli connection show --activeи настройте параметры DNS или поведение DHCP для этого соединения. С помощью systemd-networkd поместите нужные DNS=параметры в соответствующий .networkфайл и перезагрузите или перенастройте сеть в безопасное время. См. руководство по systemd.network в Debian и руководство по настройке NetworkManager в Debian . Повторное подключение управляемого интерфейса может прервать сеанс SSH.
Для внутренних имен отдавайте предпочтение DNS-серверам организации или VPN. Нельзя предполагать, что публичные резолверы будут отвечать на запросы из частных зон; принудительная отправка всех запросов к ним может нарушить разделение DNS или раскрыть внутренние имена хостов. Глобальные DNS=записи resolved.confмогут работать параллельно с DNS для каждого канала, а не автоматически заменять его; см. руководство по файлу resolved.conf в Bookworm .
5. Очистите кэш и убедитесь, что оба пути поиска работают.
После исправления сервиса, ссылки на резолвер или конфигурации вышестоящего сервера очистите кэшированные ответы и повторите проверку:
Восстановление считается эффективным, если resolvectl queryвозвращаемые адреса, getent ahostsзаписи адресов и целевые DNS-серверы остаются видимыми после переподключения сети. Две команды проверяют разные интерфейсы, поэтому не следует считать успех в одной из них доказательством того, что все приложения исправлены. В руководстве Debian по resolvectl описаны команды query, status и cache flush.
В итоговом окне терминала отображаются две проверки, которые должны вернуть записи адресов после восстановления конфигурации DNS.
Если resolvectl queryпроверка прошла успешно, но getentзатем снова возникла ошибка, проверьте grep "^hosts:" /etc/nsswitch.confи подтвердите наличие соответствующего dnsили установленного resolveмодуля NSS в пути поиска. Если обе попытки по-прежнему завершаются неудачей, просмотрите журнал резолвера и любые ограничения брандмауэра на DNS-трафик, а затем проверьте работу, используя фактический корпоративный DNS-адрес, адрес маршрутизатора или провайдера. Одного успешного поиска недостаточно: повторите проверки после переподключения и перезагрузки, чтобы убедиться в сохранении проблемы.