#Что означает ошибка
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 | Старая ссылка. | Восстановите. |
#Пошаговое решение
- Прочитайте 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-заглушку до установления конкретной причины. - Найдите процесс на порту 53В терминале Linux под учётной записью администратора выполните
sudo ss -lntup | grep ":53". Посмотрите имя процесса и адрес прослушивания: это могут бытьsystemd-resolved, dnsmasq, unbound или другой DNS-сервис. Порт 53 на разных адресах может использоваться разными службами одновременно; сам факт их наличия не означает конфликт. Сопоставьте адрес прослушивания с журналом ошибкиsystemd-resolvedперед изменением настроек. - Отключите DNSStubListener или освободите портТолько если журнал показывает реальный конфликт за один и тот же адрес:порт, откройте
sudoedit /etc/systemd/resolved.confи найдите параметрDNSStubListener=. Прежде чем менять его, выясните, кто обслуживает127.0.0.53и на какой файл ссылается/etc/resolv.conf; отключение заглушки без смены резолвера может лишить систему DNS. Сделайте резервную копию конфига, затем по инструкции вашего дистрибутива согласуйте службы и проверьте разрешение имён. Не используйте это как универсальный первый шаг. - Восстановите ссылку 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и повторите тест после перезагрузки. - Проверьте 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; на удалённом сервере убедитесь, что есть альтернативный доступ. - Состояние DNSLinux · Терминал (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.
journalctl -u systemd-resolved -b --no-pager | tail -50sudo ss -lunpt | grep :53resolvectl query example.com