#Что означает ошибка
ping: google.com: Temporary failure in name resolution
«Temporary failure in name resolution» означает, что система не смогла превратить доменное имя в IP-адрес: DNS-сервер недоступен, не настроен или /etc/resolv.conf указывает на нерабочий адрес. Сеть при этом может работать: ping 8.8.8.8 отвечает, а ping google.com — нет.
Это одна из самых частых ошибок в контейнерах, виртуальных машинах и после смены сети или VPN.
Программы получают адрес через системный DNS-клиент (systemd-resolved, resolv.conf). Если серверов DNS нет или они недоступны, имена не разрешаются, а IP-адреса при этом доступны.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Нет подключения к интернетуСеть не работает вообще. | ping 8.8.8.8 тоже не проходит. | Исправьте сеть (кабель, Wi-Fi, шлюз). |
| DNS-сервер недоступенСерверы DNS не отвечают. | ping 8.8.8.8 проходит, а ping ya.ru нет. | Укажите другой DNS-сервер. |
| Неверный /etc/resolv.confФайл пуст или указывает на недоступный адрес. | В файле нет строк nameserver или адрес неверный. | Исправьте файл или настройте systemd-resolved. |
| Остановлена служба systemd-resolvedСлужба DNS не работает. | systemctl status systemd-resolved — inactive. | Запустите и включите службу. |
#Пошаговое решение
- Проверьте сетьОткройте несколько разных сайтов или сервисов и проверьте, работает ли подключение на другом устройстве в той же сети. Для сравнения переключитесь между Wi-Fi и мобильным интернетом, если это возможно. Если ошибка только на одном устройстве, проверяйте его сетевые настройки; если на всех — роутер или провайдера.
- Проверьте DNSОткройте терминал Linux и выполните
resolvectl status(если есть systemd-resolved), затемdig example.com Aиdig @1.1.1.1 example.com Aс тем же именем. Сравните строкиstatusиANSWER SECTION, а также список DNS-серверов. Если внешний DNS отвечает, но системный нет, исследуйте настройки локального разрешения имён; если оба дают NXDOMAIN, проверьте наличие домена. Не меняйте/etc/resolv.confдо выяснения, кто его формирует. - Задайте DNSМенять DNS Linux следует только если
getent hostsиresolvectl status(когда доступно) показывают проблему с системным разрешением имён, а сеть по IP работает. Если соединением управляет NetworkManager, сначала выполнитеnmcli connection show --activeи запишите точное имя активного подключения. Сохраните текущие параметры (nmcli connection show "ИМЯ_ПОДКЛЮЧЕНИЯ") в заметку. Вводите реальные имя подключения и согласованные DNS только с правами администратора; изменениеipv4.dnsсамо по себе не отключает DNS из DHCP, для этого отдельно требуетсяipv4.ignore-auto-dns yes. После изменения подключение может кратко прерваться. В управляемой сети лучше обратиться к администратору. - Перезапустите резолверНа Linux с systemd сначала выполните
systemctl status systemd-resolvedиresolvectl statusв терминале. Если служба действительно установлена, но остановлена, и она используется этим дистрибутивом, администратор может выполнитьsudo systemctl restart systemd-resolved; изменение конфигурации сети может временно нарушить разрешение имён. Затем выполнитеresolvectl query example.com. Не запускайте эту службу параллельно с другим DNS-менеджером без проверки конфликта. - Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
- Проверьте результатПосле одного изменения снова воспроизведите исходную ошибку на том же адресе, в той же сети и учётной записи; запишите точный результат. Затем сравните с альтернативным устройством или подключением, которое работало ранее. Если проблема исчезла, верните временно отключённые защитные функции и проверьте результат ещё раз; если нет, отмените последнее изменение и переходите к следующей проверке согласно обнаруженному признаку.
#Если не помогло
Если вы работаете в контейнере или на сервере с NetworkManager, DNS-серверы задаются там: проверьте nmcli device show. Не редактируйте resolv.conf вручную, если файл управляется системой — изменения будут перезаписаны.
#Как различить проблему сети и DNS
Выполните ping -c 3 8.8.8.8. Если ответы есть, интернет работает, и нужно чинить именно DNS. Если нет — проверьте ip a, маршрут по умолчанию ip route и подключение. Затем resolvectl status (systemd-resolved) покажет, какие DNS-серверы используются.
#Особенности современных дистрибутивов
В Ubuntu /etc/resolv.conf — ссылка на stub-резолвер systemd-resolved (127.0.0.53). Править файл вручную бессмысленно: настраивайте DNS через netplan, NetworkManager (nmcli) или resolved.conf. В Docker адреса DNS берутся с хоста; их можно задать в /etc/docker/daemon.json ключом "dns": ["1.1.1.1","8.8.8.8"].
ping -c 3 8.8.8.8resolvectl statusgetent hosts example.com