Можно ли направить весь трафик с моего локального ПК и на него через экземпляр AWS с помощью переадресации портов?

Можно ли направить весь трафик с моего локального ПК и на него через экземпляр AWS с помощью переадресации портов?

Я пытаюсь использовать возможности переадресации портов 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

  1. У вас есть режим переадресации в обратном порядке. «Удаленная» переадресация заставляет сервер быть прослушивателем; соединения будут устанавливаться на адрес сервера:порт (возможно, на localhost:6088 изнутри сервера или, возможно, на serverip:6088 с других хостов) и перенаправляться на вашу клиентскую систему.

    То, что вы пытаетесь сделать, является полной противоположностью этому, поэтому это будет включать что-то вроде «локального» режима пересылки, где SSHклиентявляется прослушивателем порта 6088 (и правила брандмауэра сервера AWS не имеют значения).

  2. Оба режима "Remote" и "Local" являются фиксированными функциями; то есть они не позволяют приложению указывать, куда оно хочет подключиться – они всегда пересылают только в указанное место назначения. Например, если у вас есть "Local" forward, где локальный порт – 6088, а удаленное место назначения – google.com:443, токаждыйподключение к localhost:6088 будет ретранслироваться на google.com:443 и никуда больше.

    (Это также означает, что даже если «Локальный» или «Удаленный»былподходящий режим, вы не будете использовать порт впрокси(конфигурация – вы будете использовать ее напрямую, как если бы это была реальная служба.)

    Вместо этого вам нужен третий режим в PuTTY – «Динамическая» переадресация – которая все еще находится в той же категории, что и «Локальная», но заставляет PuTTY действовать как прокси SOCKS. С «Динамической» переадресацией на порту 6088 вы можете настроить свой браузер на использование localhost:6088 в качестве прокси SOCKS и иметь возможность просматривать через сервер AWS.

  3. PuTTY может работать только как прокси-сервер SOCKS, а Firefox и Chrome умеют использовать прокси-серверы, поддерживающие протокол SOCKS, но многие другие приложения этого не делают; довольно часто можно увидеть приложения, поддерживающие «HTTP CONNECT», но не SOCKS.

    Поскольку PuTTY не имеет функции для эмуляции этого, вам может потребоваться запуститьнастоящийHTTP-прокси-сервер (например, Squid или Privoxy) на сервере AWS, затем используйте «локальную» переадресацию для доступа к нему через SSH. (Или, может быть, сделайте то, что делает/делал Tor, и запустите Privoxy/Polipo локально и укажите его на «динамический» порт PuTTY, перейдя по схеме «браузер→HTTP→Privoxy→SOCKS→PuTTY→SSH→AWS».)

  4. Все вышеперечисленные типы прокси-серверов могут обрабатывать только TCP-трафик; если вам для чего-либо нужен UDP (или даже если вы хотите pingиспользовать прокси-сервер), ни один из этих типов прокси-серверов не подойдет.

    В этом случае вам нужно будет настроить целый VPN-туннель между вашим ПК и сервером AWS. (SSH не может сделать этого в Windows и вообще не очень подходит для этого; вместо этого вы бы использовали OpenVPN, Tailscale, WireGuard или что-то подобное.) Для этой цели вам не нужен какой-то особый тип сервера.

    (Существуют типы серверов, которые не подходят для настройки VPN, а именно крайне дешевые «VPS», предлагаемые некоторыми провайдерами, которые представляют собой просто замаскированные контейнеры OpenVZ, хотя даже они обычно могут размещать по крайней мере OpenVPN. Я не думаю, что у AWS есть что-то подобное; все их VPS представляют собой полностью функциональные виртуальные серверы.)

Связанный контент