#Что означает ошибка
Temporary failure in name resolution
В современных Linux (Ubuntu, Fedora, Debian 12) за DNS отвечает systemd-resolved, а файл /etc/resolv.conf ссылается на заглушку 127.0.0.53. Когда служба остановлена или конфиг перезаписан, имена перестают разрешаться, хотя ping по IP работает.
Диагностика идёт командой resolvectl.
Эта статья — о работе именно с systemd-resolved и заглушкой.
Проверьте resolv.conf, службу resolved и upstream DNS.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Нет DNSКонфиг. | Проявляется как «Temporary failure in name resolution» или близкий по смыслу сбой. | Добавьте. |
| resolvedОстановлен. | Проявляется как «Temporary failure in name resolution» или близкий по смыслу сбой. | Запустите. |
| resolv.confСсылка. | Проявляется как «Temporary failure in name resolution» или близкий по смыслу сбой. | Исправьте. |
| Файрвол53. | Проявляется как «Temporary failure in name resolution» или близкий по смыслу сбой. | Откройте. |
#Пошаговое решение
- Проверьте
resolvectl statusОткройте терминал Linux (или подключитесь по SSH к управляемому серверу) и выполнитеresolvectl status, если установлен systemd-resolved. Найдите активный сетевой интерфейс и прочитайтеDNS Servers,Current DNS Server,DNS Domainи состояние протоколов. При пустом списке серверов проверьте подключение в NetworkManager или netplan. При корректном списке выполнитеresolvectl query example.comи сравните сdig @1.1.1.1 example.com(если dig установлен). Не переписывайте/etc/resolv.conf, пока неизвестно, кто им управляет. - Проверьте ссылку resolv.confОткройте терминал и выполните
ls -l /etc/resolv.conf, затемcat /etc/resolv.conf. Если указан путь/run/systemd/resolve/stub-resolv.confи сервер127.0.0.53, убедитесь командойsystemctl is-active systemd-resolved, что локальная служба активна. Если ссылка ведёт на другой файл, выясните, кто её создал (NetworkManager, systemd, контейнер), и не заменяйте её вслепую. При отсутствии файла сохраните сведения о конфигурации сети и обратитесь к администратору перед восстановлением. - Запустите systemd-resolvedНа Linux с systemd сначала выполните
systemctl status systemd-resolvedиresolvectl statusв терминале. Если служба действительно установлена, но остановлена, и она используется этим дистрибутивом, администратор может выполнитьsudo systemctl restart systemd-resolved; изменение конфигурации сети может временно нарушить разрешение имён. Затем выполнитеresolvectl query example.com. Не запускайте эту службу параллельно с другим DNS-менеджером без проверки конфликта. - Задайте DNS в resolved.confСначала посмотрите текущие DNS-серверы через
resolvectl statusили настройки NetworkManager. Изменяйте их в настройках активного подключения, а не в/etc/resolv.conf, если им управляет система. Запишите прежние адреса для отката. - Очистите кэшЕсли DNS-запросы возвращают устаревшую запись, а
systemd-resolvedактивен, откройте терминал и выполнитеsudo resolvectl flush-caches, затемresolvectl query example.com. Команда не влияет на браузерный кеш или настройки DNS-серверов; успешный запрос должен вернуть IP-адрес. Если по-прежнему появляетсяSERVFAIL/Temporary failure, проверьте список DNS-серверов и доступность сети, а не повторяйте очистку. Не удаляйте файлы из/runили/etcдля очистки кеша.
#Диагностика
Проверьте: resolvectl status (серверы по интерфейсам), resolvectl query example.com, ls -l /etc/resolv.conf. Корректная ссылка: /run/systemd/resolve/stub-resolv.conf. Статус службы: systemctl status systemd-resolved. Тест без DNS: ping 1.1.1.1 — если работает, а ping example.com нет, дело в DNS.
#Исправление
Запустите службу: sudo systemctl enable --now systemd-resolved. Восстановите ссылку: sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf. Задайте DNS: в /etc/systemd/resolved.conf укажите DNS=1.1.1.1 8.8.8.8 и FallbackDNS=9.9.9.9, затем sudo systemctl restart systemd-resolved. Очистка кэша: resolvectl flush-caches.
#Конфликты
NetworkManager, VPN-клиенты и Docker могут перезаписывать resolv.conf. Проверьте nmcli device show | grep DNS. Если порт 53 занят другим сервисом (dnsmasq, bind), ss -lntup | grep :53 покажет, кто. Для серверов без resolved используйте статический /etc/resolv.conf с nameserver 1.1.1.1.
resolvectl statusls -l /etc/resolv.confsudo systemctl restart systemd-resolvedresolvectl flush-caches