WGet не может загрузить с адресом IPv6.

Вопрос или проблема

Когда я пытаюсь скачать что-то с помощью 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-адреса, но не может установить успешное соединение и выполнить загрузку.

Применение: Решения и рекомендации

  1. Проверка настроек DNS
    Проверка использующихся серверов DNS может сыграть важную роль. Если ваш роутер или устройство настроено на использование DNS-серверов вашего интернет-провайдера, возможно, попробуйте переключиться на альтернативные DNS-сервера, такие как Google Public DNS (8.8.8.8 и 8.8.4.4) или Cloudflare (1.1.1.1 и 1.0.0.1), как отметил автор решения в вопросе.

  2. Проверка сетевой инфраструктуры
    Убедитесь, что ваш роутер и устройства в сети поддерживают и правильно конфигурированы для работы с IPv6. Это может потребовать обновления прошивки устройства или настройки параметров IPv6 на уровне операционной системы.

  3. Настройки ОС и брандмауэры
    Проверьте настройки брандмауэра или антивирусного ПО на устройстве, чтобы убедиться, что они не блокируют интернет-трафик по IPv6. Некоторые настройки безопасности могут быть настроены исключительно под IPv4.

  4. Проблемы с маршрутизацией
    В некоторых случаях проблема может быть связана с маршрутизацией IPv6 на уровне интернет-провайдера. В таком случае целесообразно связаться с поддержкой провайдера для выяснения возможных ограничений или ограничений на использование IPv6.

  5. Использование двойного стека
    Если проблема продолжает возникать, временное решение может заключаться в использовании опции --inet4-only, чтобы принудительно использовать IPv4. В долгосрочной перспективе, однако, стоит стремиться к налаживанию полноценной поддержки IPv6, чтобы не отставать от новых стандартов интернет-технологий.

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

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

Капча загружается...