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

socat connect-connect «прокси» для двух входящих TCP-соединений, чтобы открыть службу с брандмауэром?

Я немного борюсь, пытаясь понять, как использовать socat (или аналогичный перенаправитель портов TCP), чтобы открыть службу с брандмауэром на ПК.

Вот сценарий: у меня есть серверный ПК, который будет действовать как «прокси» / перенаправитель для прослушивания-прослушивания между двумя клиентскими машинами. Сервер может иметь столько открытых портов брандмауэра, сколько необходимо, и иметь общедоступный IP-адрес. На первом «клиенте» (как при установлении исходящего соединения с прокси-сервером), клиенте A, я размещаю службу на порту 4200. Этот компьютер находится за брандмауэром, который разрешает только входящие TCP-соединения на основе предыдущего исходящего соединения. То же самое и с брандмауэром, который находится позади клиента B.

Что мне нужно сделать, так это сделать так, чтобы клиент B мог получить доступ к порту 42000 на клиенте A через прокси-сервер TCP с выходом в Интернет. Проблема в том, что я могу инициировать исходящие TCP-соединения только от клиента A. Как я могу перенаправить TCP-соединения через сервер, когда оба клиента реле находятся за брандмауэрами, которые разрешают только исходящие соединения? Пожалуйста, посмотрите схему ниже и дайте мне знать, если у вас есть разъяснения.

                  ------------
                 |   Server   |
                 |w/ public IP|
                  ------------
                 /            \
          {|<Firewall>|}    {|<Firewall>|}
                |                 |
          ----------          ----------        
         | Client A |        | Client B |
          ----------          ----------
       (hosting a service    (wanting to access
         on port 4200)         Client A port 4200)

Буду очень признателен за любой совет, спасибо.

Что-то вроде

На «сервере»:

socat TCP4-LISTEN:10000 TCP4-LISTEN:4200

На "Клиенте А"

socat TCP4:Server:10000 TCP4:localhost:4200

На «Клиенте Б»
Настройте клиент для подключения к серверу: 4200

В качестве альтернативы взгляните на переадресацию портов SSH.

Вы также можете использовать PortFusion который я изначально разработал лично для этого типа сценария, специально для RDP.

  server> PortFusion                ] 10000        [
client-a> PortFusion 4200 localhost - 10000 server [ 4200

Теперь client-b может подключиться к серверу: 4200 для RDP.

ВАЖНАЯ ЗАМЕТКА!!

Вы должны запустить PortFusion на client-a (или socat или что-то еще в этом отношении) как другой пользователь И ТАКЖЕ НЕ из графического сеанса пользователя, с которым вы хотите подключиться - иначе вы получите черный экран или падение и т. д.

Надеюсь, мой ответ может помочь.