socat conecte-conecte “proxy” duas conexões TCP de entrada para expor um serviço com firewall?

2

Estou lutando um pouco tentando ver como usar o socat (ou um redirecionador de porta TCP semelhante) para expor um serviço com firewall em um PC.

Aqui está o cenário: Eu tenho um PC servidor que atuará como um "proxy" / redirecionador "listen-listen" entre duas máquinas cliente. O servidor pode ter tantas portas de firewall abertas quanto necessário e tem um IP público. No primeiro "cliente" (como no estabelecimento de uma conexão de saída para o servidor proxy), Cliente A, estou hospedando um serviço na porta 4200. Esse PC está protegido por um firewall que permite apenas conexões TCP de entrada com base em uma conexão de saída anterior. O mesmo acontece com o firewall que o Cliente B está por trás.

O que eu preciso fazer é ter o Cliente B capaz de acessar a porta 42000 no Cliente A através do servidor proxy TCP voltado para a Internet. O problema é que só posso iniciar conexões TCP de saída do Cliente A. Como posso redirecionar as conexões TCP através do servidor quando ambos os clientes do relay estão atrás de firewalls que permitem somente conexões de saída? Por favor, veja o diagrama abaixo & deixe-me saber se o esclarecimento está em ordem.

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

Eu agradeceria muito qualquer conselho, obrigado.

    
por slashp 02.04.2011 / 06:24

2 respostas

2

Algo como

Em "Servidor":

socat TCP4-LISTEN:10000 TCP4-LISTEN:4200

No "Cliente A"

socat TCP4:Server:10000 TCP4:localhost:4200

Em "Cliente B"
Configurar o cliente para conectar ao servidor: 4200

Como alternativa, dê uma olhada no encaminhamento de porta SSH.

    
por 02.04.2011 / 11:01
1

Você também pode usar o PortFusion que eu desenvolvi pessoalmente para esse tipo de cenário, especificamente para o RDP.

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

Agora o client-b pode se conectar ao servidor: 4200 para o RDP.

NOTA IMPORTANTE !!

Você deve iniciar o PortFusion em client-a (ou socat ou qualquer outra coisa) como um usuário diferente E TAMBÉM NÃO de dentro da sessão gráfica do usuário que deseja conectar como - caso contrário você terá uma tela preta ou uma gota, etc.

Espero que minha resposta possa ser útil.

    
por 01.09.2011 / 02:22