socat connect-connect "прокси" два входящих TCP-соединения для предоставления службы с межсетевым экраном?
Я немного пытаюсь понять, как использовать socat (или подобный перенаправитель TCP-порта) для предоставления службы брандмауэра на ПК.
Вот сценарий: у меня есть серверный ПК, который будет действовать как прокси / перенаправитель прослушивания-прослушивания между двумя клиентскими машинами. На сервере может быть открыто столько портов брандмауэра, сколько необходимо, и он имеет общедоступный IP-адрес. На первом "клиенте" (как при установлении исходящего соединения с прокси-сервером), клиенте А, я размещаю службу на порту 4200. Этот ПК находится за брандмауэром, который разрешает только входящие TCP-соединения на основе предыдущего исходящего соединения. То же самое относится и к клиенту Брандмауэра, который находится позади.
Мне нужно, чтобы клиент 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)
Буду очень признателен за любые советы, спасибо.
2 ответа
Что-то вроде
На "Сервере":
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
Теперь клиент-b может подключиться к серверу:4200 для RDP.
ВАЖНАЯ ЗАМЕТКА!!
Вы должны запустить PortFusion на client-a
(или socat, или что-нибудь еще в этом отношении) как другой пользователь, а также НЕ из графического сеанса пользователя, к которому вы хотите подключиться - иначе вы получите черный экран или каплю и т. д.
Надеюсь, мой ответ может помочь.