У меня есть 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 даже временно, но использовать другие способы передачи данных:
Используйте промежуточный сервер с возможностью подключения как 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
Если у вас уже есть SSH-соединение с сервером, вы, вероятно, также можете использовать SFTP (Протокол передачи файлов SSH) для загрузки пакета вместо его загрузки напрямую.
Настройте Wget для использования прокси HTTPS в ~/.wgetrc
(или глобальный /etc/wgetrc
):
https_proxy = http://[Proxy_Server]:[port]
Вы можете использовать любой прокси, поддерживающий IPv6 и HTTPS, и вы готовы доверять ему. Однако я бы все равно проверил целостность файла, сравнив суммы MD5 (md5sum install.tar.gz
).