Linux: DNS не работает — systemd-resolved и resolv.conf

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

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

Проверьте resolv.conf, службу resolved и upstream DNS.

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

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

Сообщение
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» или близкий по смыслу сбой.Откройте.

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

  1. Проверьте 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, пока неизвестно, кто им управляет.
  2. Проверьте ссылку 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, контейнер), и не заменяйте её вслепую. При отсутствии файла сохраните сведения о конфигурации сети и обратитесь к администратору перед восстановлением.
  3. Запустите systemd-resolvedНа Linux с systemd сначала выполните systemctl status systemd-resolved и resolvectl status в терминале. Если служба действительно установлена, но остановлена, и она используется этим дистрибутивом, администратор может выполнить sudo systemctl restart systemd-resolved; изменение конфигурации сети может временно нарушить разрешение имён. Затем выполните resolvectl query example.com. Не запускайте эту службу параллельно с другим DNS-менеджером без проверки конфликта.
  4. Задайте DNS в resolved.confСначала посмотрите текущие DNS-серверы через resolvectl status или настройки NetworkManager. Изменяйте их в настройках активного подключения, а не в /etc/resolv.conf, если им управляет система. Запишите прежние адреса для отката.
  5. Очистите кэшЕсли 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.

Linux · Терминал (Bash)КомандаНужен sudo
Диагностика и перезапуск DNS-резолвера.
resolvectl status
ls -l /etc/resolv.conf
sudo systemctl restart systemd-resolved
resolvectl flush-caches

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

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

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