Я немного борюсь, пытаясь понять, как использовать 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 или что-то еще в этом отношении) как другой пользователь И ТАКЖЕ НЕ из графического сеанса пользователя, с которым вы хотите подключиться - иначе вы получите черный экран или падение и т. д.
Надеюсь, мой ответ может помочь.