Meu ambiente é o seguinte (tem que ser MESMO este):


Cliente 1(192.168.5.2)<->Router 1(192.168.3.2)--NET<->Router 2(192.168.4.2)<-> Cliente 2 (192.168.6.2)


Onde, Cliente 1 e 2 fazem parte de uma rede interna, sem acesso direto a internet.


E eu tenho as seguintes regras nos router 1 e tbm no router 2 de acordo com os IPs acima:


#Aceitando todos os pacotes TCP e UDP
iptables -I INPUT -p ALL -i em1 -j ACCEPT");


#Redireciona todos os pacotes com destino ao router 1 para o cliente 1 na porta 22
iptables -t nat -I PREROUTING -p tcp --dport 222 -j DNAT --to-destination 192.168.5.2:22


#Altera a origem dos pacotes de 5.2 (cliente 1) para o IP da interface atual da placa de rede
iptables -t nat -A POSTROUTING -s 192.168.5.2 -o em1 -j MASQUERADE


Até aqui, tudo bem, estou redirecionando todos os pacotes com destino aos routers para os clientes e quando os pacotes saem do cliente e chegam ao router, o endereço IP de origem é modificado para o endereço real da placa de rede do router.


O PROBLEMA É O SEGUINTE:


Realizo um telnet do Cliente 2 (6.2) para o router 1 (3.2) na porta 222. De acordo com as regras acima, o acesso será direcionado para o cliente 1. Perfeito. Agora, com o telnet sempre em curso, eu altero o endereço IP do router 2 (de 4.2 para 8.2), e neste mesmo instante adiciono as seguintes regras no router 1 (3.2) para sanar o problema:




# No router 1, altero o destino do pacote vindo do cliente 1 de 4.2 para 8.2 (endereço real do router 2 agora)

iptables -t nat -A PREROUTING -d 192.168.4.2 -i p4p1 -j DNAT --to 192.168.8.2



# No router 1, altero a origem do pacote de 8.2 para 4.2 e envio para o cliente 1, para que não perceba a alteração do IP do router 2, ou seja, pra ele, ele continuará recebendo pacotes do 4.2 e não do 8.2

iptables -t nat -A POSTROUTING -s 192.168.8.2 -o p4p1 -j SNAT --to 192.168.4.2


AGORA O PROBLEMA É: As regras acima (DNAT e SNAT) não funcionam, ou seja, pelo que eu entendi, a tabela NAT do iptables não realiza alterações nas ligações em curso, antes do início das regras, é isso? Existe alguma solução e eu não estou conseguindo enxergar?


Agradeço aí pessoal, se puderem dar uma esclarecida se souberem.