DNS в Linux Linux

systemd-resolved не запускается или не разрешает имена

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Если systemd-resolved не работает, имена не разрешаются: служба остановлена, конфликт с другим DNS-сервисом (dnsmasq), занят порт 53 либо повреждена конфигурация. Ниже — причины и порядок действий от простого к сложному.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Диагностика
  5. Исправление конфликта
  6. Восстановление

#Что означает ошибка

Сообщение
systemd-resolved.service: Failed

Если systemd-resolved.service не запускается, система остаётся без работающего локального DNS-резолвера: сайты по именам не открываются, хотя ping по IP идёт. Типичные причины: порт 53 занят другим сервисом (dnsmasq, bind, Pi-hole, Docker), повреждена конфигурация, не хватает прав на каталог или конфликт с NetworkManager.

Журнал службы почти всегда называет причину.

Прочитайте его первым.

Если systemd-resolved не работает, имена не разрешаются: служба остановлена, конфликт с другим DNS-сервисом (dnsmasq), занят порт 53 либо повреждена конфигурация.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Служба остановленаНе запущена.Запустите.
Конфликт с dnsmasqПорт 53 занят.Остановите один из сервисов.
Неверная конфигурацияresolved.conf.Исправьте.
resolv.conf не ссылается на stubСтарая ссылка.Восстановите.

#Пошаговое решение

  1. Прочитайте journalctl -u systemd-resolvedВ Linux откройте «Терминал» (на удалённом сервере — подключитесь по SSH с разрешённой учётной записью). Выполните systemctl status systemd-resolved --no-pager и затем journalctl -u systemd-resolved -b --no-pager -n 60. Первая команда показывает active, failed или inactive, вторая — сообщения текущей загрузки. Ищите Address already in use, ошибку чтения конфигурации или разрешений. Если журнал недоступен, используйте sudo journalctl при наличии прав; скопируйте текст без паролей и личных данных. Не отключайте DNS-заглушку до установления конкретной причины.
  2. Найдите процесс на порту 53В терминале Linux под учётной записью администратора выполните sudo ss -lntup | grep ":53". Посмотрите имя процесса и адрес прослушивания: это могут быть systemd-resolved, dnsmasq, unbound или другой DNS-сервис. Порт 53 на разных адресах может использоваться разными службами одновременно; сам факт их наличия не означает конфликт. Сопоставьте адрес прослушивания с журналом ошибки systemd-resolved перед изменением настроек.
  3. Отключите DNSStubListener или освободите портТолько если журнал показывает реальный конфликт за один и тот же адрес:порт, откройте sudoedit /etc/systemd/resolved.conf и найдите параметр DNSStubListener=. Прежде чем менять его, выясните, кто обслуживает 127.0.0.53 и на какой файл ссылается /etc/resolv.conf; отключение заглушки без смены резолвера может лишить систему DNS. Сделайте резервную копию конфига, затем по инструкции вашего дистрибутива согласуйте службы и проверьте разрешение имён. Не используйте это как универсальный первый шаг.
  4. Восстановите ссылку resolv.confВ Linux выполните ls -l /etc/resolv.conf и resolvectl status и определите, кто управляет DNS (systemd-resolved, NetworkManager, netplan или контейнер). Не заменяйте /etc/resolv.conf ссылкой на stub-resolv.conf без подтверждения, что systemd-resolved активен и слушает 127.0.0.53. Сначала сохраните оригинал; после согласованной с менеджером сети настройки проверьте getent hosts example.com и повторите тест после перезагрузки.
  5. Проверьте resolvectl queryПосле исправления подтверждённой причины выполните в терминале systemctl is-active systemd-resolved. Если ответ active, введите resolvectl query example.com: успешное разрешение обычно содержит IP-адреса и сведения об источнике ответа. Если ответ failed или «Temporary failure», посмотрите journalctl -u systemd-resolved -b --no-pager -n 60 и параметры DNS через resolvectl status. Перезапуск sudo systemctl restart systemd-resolved допустим только при необходимости и временно прерывает запросы DNS; на удалённом сервере убедитесь, что есть альтернативный доступ.
  6. Состояние DNS
    Linux · Терминал (Bash)Команда
    Состояние DNS.
    resolvectl status

#Диагностика

Проверьте статус и журнал: systemctl status systemd-resolved -l, journalctl -u systemd-resolved -b --no-pager | tail -50. Ищите Failed to bind, Address already in use, Failed to parse. Кто занимает порт 53: sudo ss -lunpt | grep :53 (или sudo lsof -i :53). Проверьте синтаксис конфигурации: /etc/systemd/resolved.conf и каталог /etc/systemd/resolved.conf.d/.

#Исправление конфликта

Если порт занят dnsmasq/bind, переведите их на другой адрес/порт либо отключите stub-слушатель resolved: в /etc/systemd/resolved.conf задайте DNSStubListener=no и перезапустите: sudo systemctl restart systemd-resolved. Затем направьте /etc/resolv.conf на нужный файл: sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf. Для Pi-hole и AdGuard это стандартная настройка.

#Восстановление

Включите службу: sudo systemctl enable --now systemd-resolved. Восстановите стандартную ссылку: sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf. Если пакет повреждён: sudo apt install --reinstall systemd-resolved (в Debian 12+ это отдельный пакет) или sudo dnf reinstall systemd-resolved. Проверка: resolvectl query example.com, resolvectl status. Если сеть настраивает NetworkManager, убедитесь, что dns=systemd-resolved в NetworkManager.conf.

Linux · Терминал (Bash)КомандаНужен sudo
Журнал службы, процессы на порту 53 и тестовый DNS-запрос.
journalctl -u systemd-resolved -b --no-pager | tail -50
sudo ss -lunpt | grep :53
resolvectl query example.com

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.