LinuxFAQ.ru

E: Could not resolve host apt — как исправить ошибку DNS при apt update

Ошибка «E: Could not resolve host» при выполнении apt update сигнализирует о проблемах с разрешением DNS в Linux. Эта статья поможет системным администраторам и пользователям разобраться, как быстро вернуть работоспособность пакетного менеджера.

Почему появляется E: Could not resolve host

  • Неправильная настройка DNS-серверов, указанных в /etc/resolv.conf.
  • Отсутствие или некорректная работа сетевого подключения (отсутствует интернет или роутинг).
  • Проблемы с локальным DNS-кешем или конфликт с DHCP-клиентом, перезаписывающим настройки.
  • Неправильно настроенный файл /etc/hosts или некорректно введённый адрес зеркала в /etc/apt/sources.list.

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

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

ip a
ping -c 3 8.8.8.8

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

2. Проверка и исправление содержимого /etc/resolv.conf

cat /etc/resolv.conf

Файл должен содержать строки вида nameserver 8.8.8.8 или иных валидных DNS-серверов. Если нет — исправьте его:

sudo nano /etc/resolv.conf

Добавьте, например:

nameserver 8.8.8.8
nameserver 1.1.1.1

Если файл автоматически перезаписывается (например, DHCP или systemd-resolved), используйте альтернативные методы ниже.

3. Проверка работы systemd-resolved (если используется)

systemctl status systemd-resolved
systemd-resolve --status

Если демон отключен, включите и запустите:

sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved

Проверьте, что /etc/resolv.conf — это символическая ссылка на /run/systemd/resolve/stub-resolv.conf:

ls -l /etc/resolv.conf

Если нет, исправьте:

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

4. Очистка локального DNS кеша

В зависимости от используемого демона (systemd-resolved, dnsmasq и др.):

sudo systemd-resolve --flush-caches
# или
sudo /etc/init.d/dns-clean restart

После этого попробуйте снова обновить пакеты.

5. Проверка и исправление sources.list

cat /etc/apt/sources.list

Ищите неправильные или устаревшие адреса репозиториев. Правильный пример для Ubuntu:

deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse

Исправьте адреса и сохраните файл.

6. Проверка /etc/hosts

cat /etc/hosts

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

7. Перезапуск сетевых сервисов

sudo systemctl restart networking
sudo systemctl restart NetworkManager

Перезапускает сетевые службы, применяя новые настройки.

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

Использование статического DNS в NetworkManager

nmcli device show
nmcli connection modify  ipv4.dns "8.8.8.8 1.1.1.1"
nmcli connection up 

Замените на имя вашего сетевого интерфейса (например, eth0 или wlan0). Это предотвратит перезапись /etc/resolv.conf.

Временное отключение IPv6 (если DNS затрудняется из-за него)

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Если это помогает, можно добавить настройки в /etc/sysctl.conf для постоянной деактивации.

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

ping -c 3 archive.ubuntu.com
sudo apt update

Пинг по имени хоста должен успешно пройти, и apt update не должен выдавать ошибку «Could not resolve host».

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

  • Используйте правильные репозитории и зеркала.
  • Следите за целостностью и содержимым /etc/resolv.conf.
  • Настройте network manager, чтобы он корректно управлял DNS.
  • При использовании DHCP проверяйте, что выдается валидный DNS.

FAQ

Почему возникает ошибка именно при apt update?
Потому что apt пытается связаться с репозиториями по имени хоста, а система не может разрешить эти имена в IP из-за DNS-проблем.

Можно ли использовать публичные DNS-сервера вместо системных?
Да, можно временно поставить 8.8.8.8 или 1.1.1.1 в /etc/resolv.conf, но нужно убедиться, что они не будут перезаписаны.

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

Смотрите также: Как настроить источники обновлений в Ubuntu и Debian

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

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

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