LinuxFAQ.ru

apt temporary failure resolving: как исправить DNS ошибку в Linux

Ошибка Temporary failure resolving часто встречается при работе с пакетным менеджером apt на Linux. Она указывает на проблемы с разрешением DNS-имен. В этой статье пошагово разберём, почему возникает эта ошибка и как её устранить.

Почему появляется apt temporary failure resolving

  • Проблемы с DNS-серверами — отсутствует корректный DNS, либо сервер недоступен.
  • Неправильная сетевая конфигурация — отсутствуют настройки IP, шлюза или DNS.
  • Перегрузка или сбой службы разрешения имён — например systemd-resolved или NetworkManager.
  • Проблемы с файлом /etc/resolv.conf — неправильный или повреждённый файл, указывающий на нерабочие DNS.

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

1. Проверка сетевого подключения

ip a
ping -c 3 8.8.8.8

Команда ip a покажет активные интерфейсы и их IP-адреса. ping 8.8.8.8 проверяет доступность внешнего IP, минуя DNS. Если ответы есть — сеть работает, проблема в DNS.

2. Проверка и корректировка /etc/resolv.conf

cat /etc/resolv.conf

Вывод покажет текущие DNS-серверы. Если там нет строк nameserver с адресами, или на них не отвечает, добавим публичный DNS:

sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.4.4" >> /etc/resolv.conf'

Эти команды заменяют DNS-серверы на Google Public DNS. Ожидаемый результат — корректно заполненный файл с нужными IP.

3. Проверка служб systemd-resolved или NetworkManager

systemctl status systemd-resolved
nmcli dev show | grep IP4.DNS

Первая команда покажет статус службы systemd-resolved. Вторая — настройки DNS от NetworkManager. Если служба неактивна, перезапустите её:

sudo systemctl restart systemd-resolved

После этого проверьте /etc/resolv.conf, он может быть символической ссылкой на /run/systemd/resolve/stub-resolv.conf.

4. Обновление символической ссылки resolv.conf (если используется systemd-resolved)

sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

Эта команда создаст правильную ссылку, чтобы DNS-запросы шли через systemd-resolved. После этого можно перезапустить службу и проверить работу DNS.

5. Очистка кеша DNS (если применимо)

sudo systemd-resolve --flush-caches
# или
sudo resolvectl flush-caches

Очистка кеша может помочь, если старые данные мешают разрешению.

6. Проверка файла hosts (обязательно, если DNS не помогает)

cat /etc/hosts

Убедитесь, что там нет конфликтующих или неправильных записей для нужных доменов.

7. Проверка DNS с помощью dig или nslookup

dig google.com
nslookup google.com

Эти команды покажут конкретные ответы с DNS-сервера. Если они не работают — проблема в DNS или сетевых настройках.

Альтернативные методы

Если после вышеуказанных шагов проблема не решилась, попробуйте:

  1. Перезапустить NetworkManager:
  2. sudo systemctl restart NetworkManager
  3. Выключить и включить сетевой интерфейс вручную:
  4. sudo ip link set eth0 down
    sudo ip link set eth0 up

    Замените eth0 на ваш интерфейс, выводимый из ip a.

  5. Проверить, нет ли блокировок или firewall, мешающих DNS (например, iptables):
  6. sudo iptables -L -n

    Если видите блокирующие правила, временно их отключите для теста.

Проверка результата

ping -c 3 google.com
sudo apt update

Если ping google.com работает и sudo apt update не возвращает ошибку Temporary failure resolving, значит проблема решена.

Как избежать в будущем

  • Проверьте сетевые настройки после установки или обновления системы.
  • Используйте стабильные DNS-сервера (Google, Cloudflare 1.1.1.1).
  • Следите за корректностью /etc/resolv.conf, он не должен перезаписываться некорректными сервисами.
  • Регулярно проверяйте статус systemd-resolved и NetworkManager.

FAQ

Что делать, если /etc/resolv.conf постоянно перезаписывается?
Это может делать NetworkManager или systemd-resolved. Проверьте их настройки и создайте правильную символическую ссылку.

Можно ли использовать другие DNS-серверы?
Да, например 1.1.1.1 (Cloudflare) или DNS вашего провайдера.

Ошибка возникает только при работе apt, а браузер работает?
Это может быть проблема с chroot, контейнером или ограничениями приложения. Проверьте конфигурацию сети для этих сред.

Смотрите также: устранение ошибок сети в Linux — базовое руководство.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Свежие материалы