Я пытаюсь использовать возможности переадресации портов PuTTY для установления соединения с моего домашнего ПК (работающего на Windows 11) к экземпляру AWS Lightsail (работающего на Ubuntu LTS 20.04), который я подготовил и настроил. Идея состоит в том, чтобы использовать интернет-подключение, доступное экземпляру, через мой домашний ПК — что-то вроде использования прокси-сервера или VPN для доступа в Интернет.
Предположим следующие параметры:
- Публичный IP-адрес экземпляра AWS:
x.x.x.x
- Частный IP-адрес экземпляра AWS:
Y.Y.Y.Y
- SSH-порт:
22
- Я открыл порт
6088
как на уровне аккаунта, так и на уровне экземпляра. - Публичный IP-адрес моего локального ПК (IP-адрес маршрутизатора):
a.a.a.a
- Частный IP-адрес моего локального ПК:
b.b.b.b
На данный момент мое теоретическое понимание состоит в том, что мне следует использовать PuTTY для удаленной переадресации порта 6088 удаленного экземпляра Lightsail на соответствующий локальный порт 6088 моего домашнего ПК.
Я пытался (безуспешно) получить доступ к удаленному Интернету со своего ПК после настройки параметров прокси-сервера домашнего ПК на localhost:6088
. Первоначально я планировал получить доступ к удаленному экземпляру через схему клиент-сервер VNC, но не смог заставить ее работать.
Немного погуглив, я узнал, что AWS также предлагает экземпляры специально для настройки сетей VPN, и что они позволяют реализовать тот вариант использования, который я рассматриваю.
Может ли кто-нибудь подсказать, как правильно?
решение1
У вас есть режим переадресации в обратном порядке. «Удаленная» переадресация заставляет сервер быть прослушивателем; соединения будут устанавливаться на адрес сервера:порт (возможно, на localhost:6088 изнутри сервера или, возможно, на serverip:6088 с других хостов) и перенаправляться на вашу клиентскую систему.
То, что вы пытаетесь сделать, является полной противоположностью этому, поэтому это будет включать что-то вроде «локального» режима пересылки, где SSHклиентявляется прослушивателем порта 6088 (и правила брандмауэра сервера AWS не имеют значения).
Оба режима "Remote" и "Local" являются фиксированными функциями; то есть они не позволяют приложению указывать, куда оно хочет подключиться – они всегда пересылают только в указанное место назначения. Например, если у вас есть "Local" forward, где локальный порт – 6088, а удаленное место назначения – google.com:443, токаждыйподключение к localhost:6088 будет ретранслироваться на google.com:443 и никуда больше.
(Это также означает, что даже если «Локальный» или «Удаленный»былподходящий режим, вы не будете использовать порт впрокси(конфигурация – вы будете использовать ее напрямую, как если бы это была реальная служба.)
Вместо этого вам нужен третий режим в PuTTY – «Динамическая» переадресация – которая все еще находится в той же категории, что и «Локальная», но заставляет PuTTY действовать как прокси SOCKS. С «Динамической» переадресацией на порту 6088 вы можете настроить свой браузер на использование localhost:6088 в качестве прокси SOCKS и иметь возможность просматривать через сервер AWS.
PuTTY может работать только как прокси-сервер SOCKS, а Firefox и Chrome умеют использовать прокси-серверы, поддерживающие протокол SOCKS, но многие другие приложения этого не делают; довольно часто можно увидеть приложения, поддерживающие «HTTP CONNECT», но не SOCKS.
Поскольку PuTTY не имеет функции для эмуляции этого, вам может потребоваться запуститьнастоящийHTTP-прокси-сервер (например, Squid или Privoxy) на сервере AWS, затем используйте «локальную» переадресацию для доступа к нему через SSH. (Или, может быть, сделайте то, что делает/делал Tor, и запустите Privoxy/Polipo локально и укажите его на «динамический» порт PuTTY, перейдя по схеме «браузер→HTTP→Privoxy→SOCKS→PuTTY→SSH→AWS».)
Все вышеперечисленные типы прокси-серверов могут обрабатывать только TCP-трафик; если вам для чего-либо нужен UDP (или даже если вы хотите
ping
использовать прокси-сервер), ни один из этих типов прокси-серверов не подойдет.В этом случае вам нужно будет настроить целый VPN-туннель между вашим ПК и сервером AWS. (SSH не может сделать этого в Windows и вообще не очень подходит для этого; вместо этого вы бы использовали OpenVPN, Tailscale, WireGuard или что-то подобное.) Для этой цели вам не нужен какой-то особый тип сервера.
(Существуют типы серверов, которые не подходят для настройки VPN, а именно крайне дешевые «VPS», предлагаемые некоторыми провайдерами, которые представляют собой просто замаскированные контейнеры OpenVZ, хотя даже они обычно могут размещать по крайней мере OpenVPN. Я не думаю, что у AWS есть что-то подобное; все их VPS представляют собой полностью функциональные виртуальные серверы.)