TCP proxy reverso através de VPN

4

Eu tenho uma situação bastante estranha, mas é simples, eu juro. Eu tenho um servidor (vamos chamá-lo de host A) que está conectado à internet e eu uso para alguns sites e outras probabilidades e fins. Eu tenho outro servidor (vamos chamá-lo de B) que hospeda arquivos e algumas outras coisas, mas está atrás de um firewall e NAT.

O que eu gostaria de fazer é configurá-lo de modo que uma porta específica no host A aceite o tráfego TCP em uma determinada porta e encaminhe-a através de uma VPN ou outro túnel ponto-a-ponto para o host B. host B então será capaz de responder. Basicamente, o host A atuará como um balanceador de carga / proxy reverso, mas como o host B está em um local diferente em uma rede diferente (atrás de um firewall), gostaria que A e B se conectassem através de um túnel em vez de diretamente. >

Eu sei que isso é ineficiente, mas estou confiante de que é a melhor solução disponível para a situação de rede bastante estranha do host B.

Eu acho que a solução será uma mistura de fproxy e um túnel ipsec, mas estou tendo problemas para descobrir como configurar o ipsec corretamente (nunca usei antes). Eu olhei para o OpenSwan e para o StrongSwan, mas o problema é que ambos pretendem fazer a ponte entre duas LANs, e além disso, a documentação sobre NAT atravessada no ipsec parece estar além da minha compreensão. Na minha situação, quero que o túnel apresente apenas as duas máquinas envolvidas, provavelmente como sua própria interface em cada máquina. Dessa forma, eu poderia simplesmente configurar o fproxf (ou outro proxy reverso) para fazer proxy para um endereço IP virtual que automagicamente transportaria o tráfego para a outra máquina, onde apareceria o software naquela máquina como outro virtual endereço.

A questão chave que peço aqui, porém, é porque eu não sei se essa é a melhor maneira de fazer isso. Estou aberto a sugestões ou conselhos sobre como configurar o ipsec para permitir a comunicação entre as duas máquinas.

    
por jcrawfordor 20.02.2012 / 22:47

2 respostas

2

Isso não precisa ser complicado. Usando seus exemplos de host_a e host_b :

host_b# ssh -f -N -g -R 80:host_b:80 user@host_b

Isso deve encaminhar a porta 80 (www) no host_b para a porta 80 (www). Eu não testei essa combinação exata, mas eu uso bastante portas encaminhadas como essa.

    
por 21.02.2012 / 01:35
3

Você pode fazer um túnel SSH como sugere o @David, embora manter persistentemente o túnel exigirá algum tipo de processo na máquina que termina o túnel para verificar periodicamente o estado do túnel e restabelecê-lo (se necessário).

Eu provavelmente instalaria o OpenVPN em ambas as máquinas com a máquina "host A" configurada como um servidor e a máquina "host B" configurada como um cliente. O OpenVPN irá restabelecer o túnel automaticamente se ele falhar (e é por isso que eu seria parcial em relação ao SSH). Uma vez instalado e funcionando, provavelmente usaria as regras iptables na máquina "host A" para o tráfego NAT / forward para a máquina "host" B "no túnel OpenVPN.

    
por 21.02.2012 / 15:33