Назад | Перейти на главную страницу

wget на сервер IPv4 с VPS только с IPv6

У меня есть CentOS 7 VPS, который не имеет IPv4, а имеет только сеть IPv6. Я открыл порт 443 для приема всех TCP-соединений.

Когда я пытаюсь wget https://www.litespeedtech.com/packages/6.0/lsws-6.0RC1-ent-x86_64-linux.tar.gz, это вызывает ошибку (я считаю, что это потому, что https://litespeedtech.com/ не включен IPv6):

Resolving www.litespeedtech.com (www.litespeedtech.com)... 52.55.120.73
Connecting to www.litespeedtech.com (www.litespeedtech.com)|52.55.120.73|:443... failed: No route to host.

При попытке сделать то же самое для Google (с включенным IPv6) wget https://google.com, это удается:

Resolving www.google.com (www.google.com)... 2a00:1450:4016:805::2004, 172.217.23.68
Connecting to www.google.com (www.google.com)|2a00:1450:4016:805::2004|:443... connected.
HTTP request sent, awaiting response... 200 OK

Как я могу подключиться к серверам IPv4 с моего VPS только для IPv6? Я слышал о TunnelBroker, но я новичок и понятия не имею, что мне делать, чтобы его настроить.

IPv6 и IPv4 - разные протоколы. Если у вас есть только IPv6-адрес в Интернет-пространстве, вы не можете напрямую подключаться к сервисам, использующим только IPv4. Это действительно короткий ответ - «нет, нельзя».

TunnelBroker и другие свободно services предлагает только туннели в других направлениях, то есть с IPv4 на IPv6, а не наоборот, насколько мне известно. Вы можете настроить свой собственный туннель на другом хосте с двойным стеком (как IPv4, так и IPv6) или попытаться найти какую-нибудь коммерческую услугу для этой цели, но это выходит за рамки Server Fault, и я сомневаюсь, что это то, что вам нужно.

Для загрузки файла вы можете использовать другой компьютер и просто передать его на свой IPv6-сервер через SSH.

Решением было перейти на Debian 10 (хотя это также должно работать для Ubuntu) и заменить серверы имен в /etc/resolv.conf использовать эта общедоступная служба передачи обслуживания NAT64:

search blue.kundencontroller.de
options rotate
nameserver 2a00:1098:2b::1
nameserver 2a00:1098:2c::1
nameserver 2a01:4f8:c2c:123f::1
nameserver 2001:67c:2b0::4
nameserver 2001:67c:2b0::6

Обратите внимание, что файл resolv.conf предназначен специально для VPS-серверов EUServ. Если вы используете другой VPS, скопируйте и вставьте только серверы имен.

Это позволило VPS (совершенно волшебным образом) получить доступ к Интернету IPv4 (да, даже устанавливать пакеты с сайтов поставщиков IPv4).

Этой службой управляет один человек, который также имеет доступ ко всему вашему трафику IPv4 и всему вашему трафику DNS. Если вы передаете конфиденциальные данные или создаете серьезный веб-сайт, я думаю, что лучше всего на данный момент получить VPS с поддержкой IPv4. Вы также можете использовать это, чтобы загрузить какой-то пакет, который вы не смогли, а затем вернуться к исходным серверам имен.

Использование прямого Wget - не единственное решение для получения установочных пакетов на ваш сервер. Поскольку сеть только IPv6 отлично работает для вашего варианта использования (сайт за Cloudflare), я бы не стал пытаться использовать какие-либо хаки для получения подключения IPv4 даже временно, но использовать другие способы передачи данных:

  1. Используйте промежуточный сервер с возможностью подключения как IPv4, так и IPv6 и зеркалируйте пакет там.

    user@intermediate:/var/www$ wget https://ipv4only.example.com/packages/install.tar.gz
    
    user@vps:~$ wget https://intermediate.example.net/install.tar.gz
    
  2. Если у вас уже есть SSH-соединение с сервером, вы, вероятно, также можете использовать SFTP (Протокол передачи файлов SSH) для загрузки пакета вместо его загрузки напрямую.

  3. Настройте Wget для использования прокси HTTPS в ~/.wgetrc (или глобальный /etc/wgetrc):

    https_proxy = http://[Proxy_Server]:[port]
    

    Вы можете использовать любой прокси, поддерживающий IPv6 и HTTPS, и вы готовы доверять ему. Однако я бы все равно проверил целостность файла, сравнив суммы MD5 (md5sum install.tar.gz).