[MASOCH-L] Iptables - redirecionamento para Terminal Server

Fabio Catunda fcatunda at lightcomm.com.br
Wed Jun 16 10:08:22 -03 2010


Rodrigo,

Pelo que você descreveu, acredito que o gateway da sua máquina Windows 
não é o seu firewall, isso explicaria algumas coisas, vamos ver o 
caminho de um pacote sem a regra que fez funcionar tudo:
1 - Um pacote com origem 200.0.0.5 chega ao seu firewall com dport 3389
2 - O iptables muda o IP de DESTINO (apenas o de destino) para 192.168.1.3
3 - Este pacote chega na máquina Windows com origem 200.0.0.5 e destino 
192.168.1.3:3389
4 - A máquina Windows responde, mas não sabe como chegar ao IP 
200.0.0.5, então ela manda o pacote para o default gateway dela, que eu 
não sei qual é
5 - O default gw da máquina windows manda o pacote para a internet com 
destino ao 200.0.0.5, porém, com outro IP de origem, afinal, dois 
gateways não devem ter o mesmo IP.
6 - A máquina 200.0.0.5, que estava tentando acessar o TS recebe o 
pacote e descarta, afinal, ela estava aguardando a resposta com outro IP 
de origem.

A regra de MASQUERADE que você criou muda o cenário no passo 2, que 
passaria a ser:
2 - O iptables muda o IP de DESTINO quando o pacote passa no PREROUTING, 
quando o pacote passa no POSTROUTING o IP de ORIGEM é alterado para o IP 
do próprio firewall.
Isso implica que ao chegar na máquina Windows a máquina tem como origem 
o IP do firewall, que provavelmente está na mesma rede, talvez seja 
192.168.1.1.
Quando a máquina Windows vai responder, ela não precisa mandar o pacote 
para o default gw dela e sim para o 192.168.1.1, que recebe este pacote 
e então manda para a Internet pois você tem uma regra de masquerade com  
-o eth1 que provavelmente está antes da outra regra de masquerade que 
fez as coisas funcionarem.

Sobre ter dois redirecionamentos para a mesma porta, é totalmente 
possível, mas o ideal é ser extremamente específico para evitar que 
ocorra um match acidental, no seu caso, você poderia criar negação de 
origem para evitar que a segunda regra de match quando você remover a 
primeira.

Att,

Catunda.


Rodrigo Trevisaneli wrote:
> Ola,
>
> Tenho um novo servidor de Terminal Server na rede, e ele
> nao tem saida para a Internet, somente acesso local.
> Porem precisava que ele fosse acessado pela Internet, mas
> usando a conhecida regra:
>
> -A PREROUTING -t nat -p tcp --dport 3389 -j DNAT --to-dest 192.168.1.3:3389
>
> nao funcionou, claro, porque pelo gateway dele ele nao tem saida para a
> Internet.
>
> Ok, so que adicionado esta regra, funciona:
>
> -A POSTROUTING -t nat -p tcp --dport 3389 -j MASQUERADE
>
> Pergunto, isso ocorre porque quando o iptables faz nat dessa forma, ele
> entrega os pacotes na porta 3389 do TS como se estivesem vindo do
> proprio iptables, ou seja, 192.168.1.1, e o TS devolve os pacotes para ele?
> Entao para o TS, é como se a conexao viesse de dentro da rede local?
> O que nao entendo é que ja tinha essa regra:
>
> -A POSTROUTING -t nat -o eth1 -j MASQUERADE
>
> Mas tive que criar esta mais especifica, para o TS.
>
> Outra questao, tenho outro TS na rede, este com acesso
> a Internet, porem só é acessado por 1 IP externo, entao ficou:
>
> -A PREROUTING -t nat -p tcp --dport 3389 -j DNAT --to-dest 192.168.1.3:3389(TS1)
> -A PREROUTING -t nat -i eth1 -p tcp --dport 3389 -s 200.X.X.X -j DNAT
> --to-dest 192.168.1.2:3389 (TS2)
>
> Isso é possivel? A mesma porta redirecionada duas vezes? O Iptables sabe
> que, se
> a conexao vier do IP 200.X.X.X, vai para o TS2 e se for outro IP vai para o
> TS1?
> Aparentemente esta funcionando. Se isso estiver correto, há uma ordem
> correta
> para estas duas ultimas regras, ou tanto faz? Seria a mais especifica
> primeiro?
>
> Obrigado!
> -Rodrigo
> __
> masoch-l list
> https://eng.registro.br/mailman/listinfo/masoch-l
>   



More information about the masoch-l mailing list