Вопрос или проблема
У меня проблема с резолвингом DNS в моем WSL1, вот пример:
[rootname@hostname ~]# yum update
CentOS Stream 8 - AppStream 0.0 B/s | 0 B 00:00
Ошибки при загрузке метаданных для репозитория 'appstream':
- Ошибка Curl (6): Не удалось разрешить имя хоста для https://vault.centos.org/centos/8-stream/AppStream/x86_64/os/repodata/repomd.xml [Не удалось разрешить хост: vault.centos.org]
Ошибка: Не удалось загрузить метаданные для репозитория 'appstream': Не удается загрузить repomd.xml: Не удается загрузить repodata/repomd.xml: Все зеркала были проверены
Ping к vault.centos.org возвращает:
64 байта от server-18-66-27-78.vie50.r.cloudfront.net (18.66.27.78): icmp_seq=4 ttl=246 время=54.6 мс
curl -G www.example.net возвращает содержимое html:
<html>
<<ANY_CONTENT>>
<body>
<div>
<h1>Пример домена</h1>
<p>Этот домен предназначен для использования в иллюстративных примерах в документах. Вы можете использовать этот
домен в литературе без предварительной координации или запроса на разрешение.</p>
<p><a href="https://www.iana.org/domains/example">Больше информации...</a></p>
</div>
</body>
</html>
Где проблема этой ошибки, если резолвинг DNS де-факто работает? Как это решить? Спасибо
Ответ или решение
Ошибка cURL (6): Не удалось разрешить имя хоста
Ошибка cURL error (6): Couldn't resolve host name
в WSL1 (Windows Subsystem for Linux) может возникать по нескольким причинам, несмотря на то что DNS разрешение осуществляется нормально. В вашем случае, интересное поведение наблюдается в том, что команда ping
возвращает ответ от vault.centos.org
, но при выполнении yum update
возникает ошибка разрешения имени хоста.
Причины проблемы
-
DNS конфигурация:
- Некоторые программные компоненты могут использовать разные механизмы для разрешения DNS. Например,
yum
может использовать системный DNS, который настроен некорректно, в отличие от командping
илиcurl
, которые могут использовать кэшированные DNS-записи.
- Некоторые программные компоненты могут использовать разные механизмы для разрешения DNS. Например,
-
Проблемы с файлом
/etc/resolv.conf
:- Убедитесь, что файл
/etc/resolv.conf
правильно настроен. Часто в WSL он может либо отсутствовать, либо содержать неправильные DNS-серверы. - Проверьте, что в нём указаны корректные DNS-серверы (например,
8.8.8.8
для Google DNS).
- Убедитесь, что файл
-
Сетевые проблемы:
- Возможно, вы столкнулись с проблемами сетевого соединения, которые затрудняют вашему дистрибутиву WSL доступ к интернету для некоторых программ.
- Проверьте, есть ли у вас блокировки или фильтры на уровне маршрутизатора или брандмауэра, которые могут препятствовать запросам DNS.
-
Кэш DNS:
- Иногда кэши DNS могут хранить устаревшую информацию. Попробуйте очистить кэш DNS на уровне системы Windows:
ipconfig /flushdns
- Иногда кэши DNS могут хранить устаревшую информацию. Попробуйте очистить кэш DNS на уровне системы Windows:
-
Проблемы с репозиториями:
- Возможно, источник, с которым пытается соединиться
yum
, временно недоступен или перемещён. Попробуйте протестировать доступ к другим зеркалам или репозиториям.
- Возможно, источник, с которым пытается соединиться
Решения:
-
Проверьте и обновите
/etc/resolv.conf
:
Откройте файл с помощью текстового редактора и добавьте следующие строки (при необходимости):nameserver 8.8.8.8 nameserver 8.8.4.4
Сохраните изменения и закройте редактор.
-
Проверьте сетевые настройки WSL:
- Убедитесь, что WSL имеет доступ к интернету. Попробуйте перезапустить WSL, чтобы обновить сетевые настройки:
wsl --shutdown
- Убедитесь, что WSL имеет доступ к интернету. Попробуйте перезапустить WSL, чтобы обновить сетевые настройки:
-
Обновите репозитории:
- После изменения конфигурации попробуйте снова выполнить:
yum clean all yum update
- После изменения конфигурации попробуйте снова выполнить:
-
Проверьте конфигурацию Windows:
- В Windows проверьте настройки прокси, так как они могут блокировать соединение. Убедитесь, что в WSL нет настроек прокси, которые могут препятствовать доступу.
-
Используйте альтернативные инструменты:
- Если проблема не решается, рассмотрите возможность использования
dnf
(если доступен) вместоyum
, так как он имеет более современные алгоритмы работы с зависимостями и пакетами.
- Если проблема не решается, рассмотрите возможность использования
Заключение
Проблема с cURL error (6) может быть вызвана множеством факторов, связанных как с конфигурацией DNS, так и с сетевыми настройками. Применяя вышеуказанные шаги, вы сможете диагностировать и, надеюсь, решить проблему. Если же проблема всё ещё сохраняется, возможно, стоит обратиться к сообществу CentOS или WSL для более детального анализа вашей ситуации.