Este é o meu cenário:
Configuração
Existem 3 máquinas:
A
: na internet: tem ip ( a.a.a.a
), tem porta pa
open
B
: meu servidor / gateway: possui ip ( b.b.b.b
), tem porta pb
open
C
: na internet: tem ip ( c.c.c.c
), tem porta pc
open
Restrições
O proprietário da máquina A
oferece um serviço pela porta pa
que deve ser acessado na máquina C
via porta pc
. O problema é que o proprietário de A
só pode permitir a conexão direta com o meu servidor, a máquina B
na porta pb
.
Note que A
e C
estão na internet , então, na verdade, tenho que atuar como um gateway entre duas máquinas na internet (a literatura que encontrei em a maioria dos documentos de firewall preocupa-se em atuar como um gateway entre a internet e sua rede local ).
Extras
A máquina B
está executando o OpenSuse 11.4
Requisitos
Minha tarefa é garantir que eu forneça à máquina C
o serviço oferecido por A
através do meu servidor B
, de forma que o tráfego de A:pa
acabe em C:pc
e o tráfego de C:pc
acaba em A:pa
.
Então, como posso conseguir isso, digamos, usando iptables
ou outro utilitário Linux / Unix? É mesmo possível?
Solução Hipotética:
Aqui está uma ideia que tenho em mente, mas não tenho certeza se é legítima ou faz sentido:
iptables -t nat -A PREROUTING -p tcp --source a.a.a.a --source-port pa \
--destination b.b.b.b --destination-port pb -j DNAT --to-destination c.c.c.c:pc
e
iptables -t nat -A PREROUTING -p tcp --source c.c.c.c --source-port pc \
--destination b.b.b.b --destination-port pb -j DNAT --to-destination a.a.a.a:pa