DNS/CLI: Could not resolve host — причины и как исправить ошибку
-
Ошибка Could not resolve host в CLI знакома всем, кто работает с командной строкой. Она выскакивает при попытке пинга, curl или wget — система просто не может перевести доменное имя в IP-адрес. Это мешает скачать файлы, проверить API или развернуть проект.
Разберёмся, почему это происходит и как починить. Вы узнаете основные причины и шаги исправления для разных систем. После этого команды снова заработают без сбоев, а диагностика сети станет проще.
Основные причины ошибки
Ошибка Could not resolve host возникает, когда DNS-резолвер не находит IP для домена. Это может быть из-за кэша, настроек сети или проблем у провайдера. Например, вы запускаете
curl api.example.com, и терминал выдаёт ошибку — домен не резолвится, хотя браузер открывает сайт нормально.Часто виноват локальный кэш DNS, который хранит устаревшие записи. Или файл hosts содержит неверные записи, переопределяющие DNS. Плюс, если DNS-сервера провайдера барахлят, резолв не проходит. В CLI это заметнее, чем в GUI, потому что инструменты вроде ping напрямую зависят от системного резолвера.
Вот типичные сценарии:
- Кэш DNS: После смены IP домена старые записи мешают.
- Файл hosts: Локальные записи блокируют правильный резолв.
- DNS-сервера: Медленные или недоступные серверы провайдера.
Причина Симптомы Быстрая проверка Кэш DNS Ошибка на известных доменах nslookup google.comработает, ping — нетФайл hosts Только на конкретном домене Проверить /etc/hosts или C:\Windows\System32\drivers\etc\hosts DNS-сервера На всех внешних доменах cat /etc/resolv.confпоказывает плохие серверыОчистка DNS-кэша и проверка hosts
Сначала стоит сбросить кэш — это решает 70% случаев. На Windows команда
ipconfig /flushdnsочищает локальный кэш. На macOS и Linux наборsudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderилиsudo systemd-resolve --flush-cachesделает то же самое. После этого протестируйтеping google.com.Дальше проверьте файл hosts. Он переопределяет DNS локально, и неверная запись вроде
127.0.0.1 badsite.comломает всё. Откройте файл в редакторе с правами root: на Linux/etc/hosts, на WindowsC:\Windows\System32\drivers\etc\hosts. Закомментируйте (#) подозрительные строки и сохраните.Не забудьте: После правок hosts перезапустите сеть или терминал.
Шаги по очистке:
- Выполните flush DNS для вашей ОС.
- Откройте hosts:
sudo nano /etc/hosts. - Удалите или закомментируйте записи домена.
- Тест:
curl -I https://example.com.
ОС Команда flush Путь к hosts Windows ipconfig /flushdnsC:\Windows\System32\drivers\etc\hosts Linux sudo systemd-resolve --flush-caches/etc/hosts macOS sudo dscacheutil -flushcache/etc/hosts Смена DNS-серверов
Если кэш чист, проблема в серверах — провайдерские DNS часто тормозят. Перейдите на публичные: Google (8.8.8.8, 8.8.4.4) или Cloudflare (1.1.1.1). На Linux отредактируйте
/etc/resolv.conf: добавьтеnameserver 8.8.8.8. Но это временно — NetworkManager перезапишет.Для постоянных изменений правьте конфиг интерфейса. На CentOS/RHEL:
sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0, добавьтеDNS1=8.8.8.8. Затемsystemctl restart NetworkManager. На Windows зайдите в настройки адаптера, IPv4 → Свойства → Укажите DNS вручную.Важно: После смены перезапустите сеть и проверьте
nslookup site.com.Варианты DNS:
- Google: 8.8.8.8 (быстрый, надёжный).
- Cloudflare: 1.1.1.1 (приватность).
- Яндекс: 77.88.8.8 (для РФ).
Метод ОС Команда/Шаги Временный Все echo "nameserver 8.8.8.8" > /etc/resolv.confПостоянный Linux RHEL/CentOS Добавить в ifcfg-eth0: DNS1=8.8.8.8 Windows GUI Настройки → Сеть → IPv4 → DNS Дополнительные проверки сети
Иногда ошибка от роутера или предсказания DNS. Перезагрузите роутер — это сбрасывает его кэш. В Chrome отключите DNS prefetching: Настройки → Дополнительно → Системные → Сними галку “Использовать предсказание DNS”. Проверьте URL в CLI: без http:// или с лишним слешем резолв сломается.
Тестируйте инструментами:
dig example.comпокажет DNS-цепочку,traceroute— маршрут. Если ничего не помогает, проблема у провайдера — звоните в поддержку.- Перезагрузка роутера: Очищает NAT и DNS.
- Проверка URL:
curl https://api.example.comбез опечаток. - Тест инструментами:
nslookup,dig,ping -c 4.
Инструмент Что проверяет Пример nslookup DNS-резолв nslookup google.comdig Полную цепочку dig +short example.comtraceroute Маршрут traceroute ya.ruКогда ошибка прячется глубже
Эти шаги решают большинство случаев, но есть нюансы вроде файрвола или VPN, блокирующих UDP 53. Стоит поэкспериментировать с DoH (DNS over HTTPS) в браузере или systemd-resolved. Или поднять локальный резолвер типа dnsmasq для разработки.
© 2024 - 2025 ExLends, Inc. Все права защищены.