DNS в Linux Linux

Linux: DNS не работает, systemd-resolved не отвечает

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

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

Если DNS в Linux не работает, проверьте, запущен ли systemd-resolved, на что указывает /etc/resolv.conf (должна быть ссылка на stub-resolv.conf), и какие серверы получены через resolvectl status. Задайте рабочий DNS и перезапустите службу.

В этой статье
  1. Признаки
  2. Причины
  3. Диагностика
  4. Как понять, кто именно отвечает за DNS
Temporary failure in name resolution
Temporary failure in name resolution
По-русскиНе удаётся преобразовать имя в адрес: DNS-запрос не получил ответ.

#Признаки

ping 8.8.8.8 работает, а ping ya.ru выдаёт Temporary failure in name resolution или Name or service not known; браузер пишет, что сервер не найден. Значит, сеть есть, но имена не преобразуются в адреса. В современных дистрибутивах (Ubuntu, Fedora, Arch с включением) за это отвечает systemd-resolved: он слушает локальный адрес 127.0.0.53, а /etc/resolv.conf указывает на него.

#Причины

Возможная причинаКак узнатьЧто делать
resolv.conf не ссылается на stubФайл заменён вручную или VPN.В нём нет 127.0.0.53 либо старый список.Восстановите ссылку.
Служба остановленаОтключена или упала.status показывает inactive.enable --now.
DNS провайдера не отвечаетСбой DNS на стороне провайдера.dig @1.1.1.1 работает, а через систему нет.Укажите публичные DNS.
VPN или NetworkManager передаёт неверные серверыПосле подключения VPN.В resolvectl status лишний DNS.Отключите VPN и проверьте его настройки.
Другой резолвер конфликтуетdnsmasq или unbound на 53 порту.Порт занят.Проверьте sudo ss -lunp | grep :53.
DNSSEC или DoT мешаетВключён строгий режим.Ошибки проверки.Установите DNSSEC=no для проверки.

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

  1. Проверьте сеть по IPОткройте несколько разных сайтов или сервисов и проверьте, работает ли подключение на другом устройстве в той же сети. Для сравнения переключитесь между Wi-Fi и мобильным интернетом, если это возможно. Если ошибка только на одном устройстве, проверяйте его сетевые настройки; если на всех — роутер или провайдера.
  2. Отделите сбой DNS от сбоя соединенияВ Linux откройте терминал и сначала выполните ping -c 3 1.1.1.1: ответы с временем задержки показывают, что внешний IP доступен, а отсутствие ответов ICMP само по себе ещё не доказывает потерю интернета. Затем выполните resolvectl query example.com (если используется systemd-resolved) либо getent hosts example.com. Если IP-подключение работает, а имя не разрешается или появляется Temporary failure in name resolution, переходите к проверке службы и DNS-серверов; если не работает и IP, сначала проверьте адрес и маршруты в ip -br a и ip route.
  3. Проверьте службуВ терминале Linux выполните systemctl status systemd-resolved --no-pager и найдите строку Active: и последние сообщения об ошибке. Если статус failed, посмотрите подробности: journalctl -u systemd-resolved -b --no-pager | tail -60. Запишите ошибки конфигурации или занятого порта 53, прежде чем что-либо перезапускать. При статусе active (running) причина может быть в неправильно заданных DNS-серверах, а не в остановке службы.
  4. Посмотрите, что в resolv.confНа Linux в терминале выполните ls -l /etc/resolv.conf и cat /etc/resolv.conf. В первом выводе посмотрите, является ли файл ссылкой, например на /run/systemd/resolve/stub-resolv.conf; во втором — какой nameserver указан (часто 127.0.0.53 при работающей локальной заглушке). Если это файл, создаваемый NetworkManager, WSL или контейнером, не заменяйте его системной ссылкой. При неработающей заглушке сравните результат resolvectl status и systemctl status systemd-resolved, прежде чем менять настройки DNS.
  5. Посмотрите серверы DNSНа Linux с systemd-resolved откройте терминал и выполните resolvectl status. Найдите раздел вашего активного интерфейса (его имя видно в ip -br link) и строки DNS Servers и Current DNS Server; если DNS не указан или это неожиданный адрес, проверьте настройки именно сетевого менеджера этого интерфейса (NetworkManager/netplan). Затем выполните resolvectl query example.com. Успешный IP-ответ говорит, что резолвер работает; если resolvectl отсутствует, сначала выясните, не используется ли другой DNS-сервис.
  6. Проверьте запрос напрямуюДля проверки DNS-записи откройте терминал Linux/macOS (dig обычно доступен) и введите dig example.com A +noall +answer, подставив собственный домен и нужный тип записи. В Windows откройте cmd и выполните nslookup -type=A example.com. Запишите ответ и сервер DNS, выдавший его. При расхождении с ожидаемым значением проверьте у авторитетного NS — иначе неясно, устарел ли кеш или неверна сама зона.
  7. Сбросьте кэшТолько при подозрении на устаревший локальный DNS-кеш и работающем systemd-resolved откройте терминал и выполните sudo resolvectl flush-caches (в некоторых системах достаточно resolvectl flush-caches). Эта команда очищает локальные DNS-записи, не удаляет файлы и не меняет настройки серверов DNS. Повторите resolvectl query example.com. Если ответа нет, очистка кеша не поможет: проверьте DNS-серверы и журнал службы. Не удаляйте /etc/resolv.conf ради очистки кеша.
  8. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Сеть по IP и по имени
    Linux · Терминал (Bash)Команда
    Сеть по IP и по имени
    ping -c 3 8.8.8.8
    ping -c 3 ya.ru
    Вариант 2Состояние службы, ссылка resolv.conf и полученные DNS
    Linux · Терминал (Bash)Команда
    Состояние службы, ссылка resolv.conf и полученные DNS
    systemctl status systemd-resolved --no-pager
    ls -l /etc/resolv.conf
    resolvectl status
    Вариант 3Тестовые запросы: через резолвер и напрямую в публичный DNS
    Linux · Терминал (Bash)Команда
    Тестовые запросы: через резолвер и напрямую в публичный DNS
    resolvectl query ya.ru
    dig @1.1.1.1 ya.ru +short
    Вариант 4Запустить службу и сбросить кэш
    Linux · Терминал (Bash)КомандаНужен sudo
    Запустить службу и сбросить кэш
    systemctl status systemd-resolved --no-pager
    # Только если именно эта служба является действующим менеджером DNS:
    # sudo systemctl restart systemd-resolved
    sudo resolvectl flush-caches
    Вариант 5Восстановить ссылку resolv.conf (сохраните старый файл)
    Linux · Терминал (Bash)С осторожностьюНужен sudo
    Восстановить ссылку resolv.conf (сохраните старый файл)
    ls -l /etc/resolv.conf
    cat /etc/resolv.conf
    # Восстановление ссылки требует отдельной проверки управляющей службы; ничего не удаляйте.

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

    Вариант 6Если DNS провайдера не отвечает, задайте свои серверы, затем перезапустите службу
    /etc/systemd/resolved.conf
    Если DNS провайдера не отвечает, задайте свои серверы, затем перезапустите службу
    [Resolve]
    DNS=1.1.1.1 8.8.8.8
    FallbackDNS=9.9.9.9
    Вариант 7Применить настройки
    Linux · Терминал (Bash)КомандаНужен sudo
    Применить настройки
    sudo systemctl restart systemd-resolved
    resolvectl status

В контейнерах и WSL часто используют собственный resolv.conf; там стоит править настройки конкретной среды, а не хоста. Если имя разрешается через dig, а приложение его не видит, проверьте /etc/nsswitch.conf — в строке hosts: должны быть files и resolve (или dns).

#Как понять, кто именно отвечает за DNS

В разных дистрибутивах имена преобразуют разные компоненты, и перед правкой важно понять, какой из них у вас. Выполните readlink -f /etc/resolv.conf: путь /run/systemd/resolve/stub-resolv.conf означает systemd-resolved, /run/NetworkManager/resolv.conf — NetworkManager сам пишет файл, /etc/resolv.conf как обычный файл — ручная настройка или другая служба (dhcpcd, resolvconf). Если используется NetworkManager, DNS для соединения задают командой nmcli connection modify "Имя" ipv4.dns "1.1.1.1 8.8.8.8" ipv4.ignore-auto-dns yes, затем nmcli connection up "Имя". Список соединений показывает nmcli connection show. На серверах Ubuntu с netplan DNS указываются в /etc/netplan/*.yaml в разделе nameservers: addresses: [1.1.1.1, 8.8.8.8], а применяются командой sudo netplan apply. Правьте только тот источник, который реально управляет настройкой, иначе ваши изменения будут затираться при следующем подключении.

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

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

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