Proxy transparente de conexões TCP na porta (principalmente, sem acesso root)

2

Eu tenho a máquina do Cliente vivendo em algum lugar na Internet, e ela precisa acessar uma porta personalizada da máquina Target (ou, inicialmente qualquer porta em qualquer máquina alcançável, mas, eventualmente, uma porta específica, digamos, 12345, no Target) que mora dentro de uma rede privada e aceita conexões somente das máquinas dentro dessa rede.

               |
Client --X-->  |   Target:12345
               |
(the Internet)   (private network)

Sem VPN

A rede privada tem um servidor VPN, mas não tenho acesso root no Cliente, e não consigo usar (Open) VPN e, portanto, não tenho acesso fácil à rede privada.

"Gate" sem raiz

A primeira coisa que, presumivelmente, pode ajudar o Cliente a atingir o Alvo é a máquina Gate na rede privada que pode ser acessada do mundo externo, e o Target aceitaria conexões TCP do Gate:

               |
Client --?--> Gate --ok--> Target:12345
               |

O problema é configurar o encaminhamento transparente de tráfego TCP no Gate, para que o Cliente se conecte ao Gate [: some_port] e realmente fale com o Target: 12345.

  • Se eu tivesse acesso root no Gate, usaria iptables para encaminhar transparentemente o tráfego TCP que vinha para o Gate [: chosen_port] para o Target: 12345. No entanto, eu não tenho acesso root no Gate (embora eu tenha um acesso em nível de usuário e possa SSH para ele).

  • Se eu tivesse um acesso SSH à Target, eu estabeleceria um túnel SSH entre Target e Gate, fazendo com que o Target fosse acessado pelo Cliente através deste túnel; no entanto, não tenho acesso SSH no Target (na verdade, a única coisa que posso fazer com o Target é estabelecer a conexão TCP com a porta 12345 de dentro da rede privada).

É possível estabelecer o encaminhamento TCP descrito acima, não tendo raiz no Cliente e no Gate e não tendo acesso SSH ao Target? Se a resposta for não, então há uma pergunta de acompanhamento.

"Gate" sem raiz + "Insider" com raiz

Além do Gate, a rede privada tem a máquina Insider, onde eu tenho acesso root.

               |
Client -ssh-> Gate -ssh-> Insider --?--> Target:12345
               |

Existe um túnel SSH reverso estabelecido de Insider para Gate, assim o cliente pode usar SSH to Insider e, teoricamente, Insider pode, então, ("manualmente") estabelecer uma conexão TCP com a porta 12345 do Target. No entanto, não é exatamente uma solução de encaminhamento de tráfego TCP transparente que estou procurando.

Nesta última situação, meu acesso root no Insider pode ajudar a transmitir o tráfego de forma transparente do cliente para o Target: 12345?

Qualquer sugestão é muito apreciada!

    
por victor 11.03.2015 / 07:35

1 resposta

2

Você pode usar o encaminhamento de porta ssh

ssh [email protected] -L 10000:172.16.10.10:10000

Depois de conectar-se ao host local: 10000 e, na verdade, você se conectará ao serviço em 172.16.10.10:10000

Você também pode criar um "proxy" com o parâmetro ssh -D.

    
por 11.03.2015 / 08:19