Вопрос или проблема
Когда я пытаюсь скачать что-то с помощью WGet, обычно это не удается, если доменное имя переводится в IPv6-адрес.
Это происходит чаще, когда имеется перенаправление ссылки.
Например:
$ wget --inet6-only https://raw.githubusercontent.com/walkxcode/Dashboard-Icons/main/png/ebay.png
--2022-11-13 10:27:05-- https://raw.githubusercontent.com/walkxcode/Dashboard-Icons/main/png/ebay.png
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 2606:50c0:8001::154, 2606:50c0:8000::154, 2606:50c0:8003::154, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8001::154|:443...
$ wget --inet6-only https://download.docker.com/linux/centos/9/x86_64/stable/Packages/docker-ce-20.10.21-3.el9.x86_64.rpm
--2022-11-13 10:32:52-- https://download.docker.com/linux/centos/9/x86_64/stable/Packages/docker-ce-20.10.21-3.el9.x86_64.rpm
Resolving download.docker.com (download.docker.com)... 2600:9000:21ed:e000:3:db06:4200:93a1, 2600:9000:21ed:2e00:3:db06:4200:93a1, 2600:9000:21ed:7000:3:db06:4200:93a1, ...
Connecting to download.docker.com (download.docker.com)|2600:9000:21ed:e000:3:db06:4200:93a1|:443...
В первом примере имя raw.githubusercontent.com
разрешается в 2606:50c0:8001::154, 2606:50c0:8000::154, 2606:50c0:8003::154
. Затем WGet пытается подключиться к этому IP, и ничего не происходит, просто зависает. Загрузка не осуществляется.
То же самое происходит во втором примере с download.docker.com
.
Когда я принудительно устанавливаю соединение IPv4, оно успешно загружает содержимое.
$ wget --inet4-only https://raw.githubusercontent.com/walkxcode/Dashboard-Icons/main/png/ebay.png
--2022-11-13 10:28:16-- https://raw.githubusercontent.com/walkxcode/Dashboard-Icons/main/png/ebay.png
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.108.133, 185.199.110.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 24872 (24K) [image/png]
Saving to: ‘ebay.png’
ebay.png 100%[==================================================================================>] 24.29K --.-KB/s in 0.005s
2022-11-13 10:28:16 (4.48 MB/s) - ‘ebay.png’ saved [24872/24872]
$ wget --inet4-only https://download.docker.com/linux/centos/9/x86_64/stable/Packages/docker-ce-20.10.21-3.el9.x86_64.rpm
--2022-11-13 10:34:35-- https://download.docker.com/linux/centos/9/x86_64/stable/Packages/docker-ce-20.10.21-3.el9.x86_64.rpm
Resolving download.docker.com (download.docker.com)... 52.84.83.27, 52.84.83.65, 52.84.83.79, ...
Connecting to download.docker.com (download.docker.com)|52.84.83.27|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 21654080 (21M) [binary/octet-stream]
Saving to: ‘docker-ce-20.10.21-3.el9.x86_64.rpm’
docker-ce-20.10.21-3.el9.x86_64.rpm 100%[==================================================================================>] 20.65M 27.3MB/s in 0.8s
2022-11-13 10:34:36 (27.3 MB/s) - ‘docker-ce-20.10.21-3.el9.x86_64.rpm’ saved [21654080/21654080]
Почему WGet не работает с IPv6?
Проверьте IPv6 DNS-сервера вашего роутера, переключение с DNS моего провайдера на Cloudflare решило мою проблему. Теперь я могу использовать wget для доступа к адресам IPv6, и такие инструменты, как dotnet restore
, работают.
Ответ или решение
Проблема, описанная в вопросе, связана с неудачей загрузки с использованием Wget при разрешении доменного имени в IPv6-адрес. Чтобы разобраться, почему это происходит, следует рассмотреть несколько аспектов: сетевую инфраструктуру, настройки DNS и поддержку IPv6 в целом.
Теория: Поддержка IPv6 и проблемы с подключением
IPv6 (Internet Protocol version 6) — это новый стандарт IP-адресации, который был разработан для решения проблем с исчерпанием адресов в IPv4. Он обеспечивает более крупное адресное пространство и улучшенные возможности маршрутизации и безопасности. Однако поддержка IPv6 может сталкиваться с различными проблемами на уровне сетевой инфраструктуры и конфигурации как на стороне заказчика, так и на стороне поставщика.
Пример: Описание проблемы с Wget
Как показано в вопросе, при разрешении доменного имени в IPv6-адрес, Wget пытается подключиться к этим адресам и "зависает", не загружая никаких данных:
Пример 1:
$ wget --inet6-only https://raw.githubusercontent.com/walkxcode/Dashboard-Icons/main/png/ebay.png
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 2606:50c0:8001::154, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8001::154|:443...
Пример 2:
$ wget --inet6-only https://download.docker.com/linux/centos/9/x86_64/stable/Packages/docker-ce-20.10.21-3.el9.x86_64.rpm
Resolving download.docker.com (download.docker.com)... 2600:9000:21ed:e000:3:db06:4200:93a1, ...
Connecting to download.docker.com (download.docker.com)|2600:9000:21ed:e000:3:db06:4200:93a1|:443...
Как видно, Wget успешно разрешает доменные имена в IPv6-адреса, но не может установить успешное соединение и выполнить загрузку.
Применение: Решения и рекомендации
-
Проверка настроек DNS
Проверка использующихся серверов DNS может сыграть важную роль. Если ваш роутер или устройство настроено на использование DNS-серверов вашего интернет-провайдера, возможно, попробуйте переключиться на альтернативные DNS-сервера, такие как Google Public DNS (8.8.8.8 и 8.8.4.4) или Cloudflare (1.1.1.1 и 1.0.0.1), как отметил автор решения в вопросе. -
Проверка сетевой инфраструктуры
Убедитесь, что ваш роутер и устройства в сети поддерживают и правильно конфигурированы для работы с IPv6. Это может потребовать обновления прошивки устройства или настройки параметров IPv6 на уровне операционной системы. -
Настройки ОС и брандмауэры
Проверьте настройки брандмауэра или антивирусного ПО на устройстве, чтобы убедиться, что они не блокируют интернет-трафик по IPv6. Некоторые настройки безопасности могут быть настроены исключительно под IPv4. -
Проблемы с маршрутизацией
В некоторых случаях проблема может быть связана с маршрутизацией IPv6 на уровне интернет-провайдера. В таком случае целесообразно связаться с поддержкой провайдера для выяснения возможных ограничений или ограничений на использование IPv6. -
Использование двойного стека
Если проблема продолжает возникать, временное решение может заключаться в использовании опции--inet4-only
, чтобы принудительно использовать IPv4. В долгосрочной перспективе, однако, стоит стремиться к налаживанию полноценной поддержки IPv6, чтобы не отставать от новых стандартов интернет-технологий.
Настоящая проблема со скачиванием в Wget при использовании IPv6 может быть многогранной и решается через систематический подход к анализу и настройке сетевой инфраструктуры и программного обеспечения. Убедитесь, что все уровни сетевых соединений поддерживают и исправно работают с новым протоколом, чтобы избежать неисправностей и обеспечить стабильную работу.