+ Responder ao Tópico



  1. #1

    Padrão Não funciona DNAT/SNAT...

    Olá pessoal.
    Primeiramente, segue minha topologia:

    - Firewall Linux:
    eth0: 200.x.x.x
    eth1: 192.168.2.254


    - Possuo outra subrede:
    192.168.3.0/24

    - No Firewall Linux, possuo a rota criada para 192.168.3.0/24:
    route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.1

    - Onde 192.168.2.1 é o gateway da RPV/Copel.

    As subredes 192.168.2.0/24 - 192.168.3.0/24 estão se comunicando perfeitamente.
    O que não estou conseguindo é fazer o DNAT para o IP 192.168.3.7, sendo que estou tentando da seguinte forma:

    $ipt -t nat -A PREROUTING -p tcp -m tcp -d 200.x.x.x/32 --dport 8080 -j DNAT --to 192.168.3.7:8080
    $ipt -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.3.7/32 --sport 8080 -j SNAT --to-source 20.X.X.X:8080

    Simplesmente não funciona! Não consigo realizar o DNAT "por dentro" da rede privada virtual.

    Quem possuir alguma dica, desde já agradeço.

  2. #2

    Padrão Re: Não funciona DNAT/SNAT...

    Pessoal, resolvi de forma paleativa usando o tal do 'redir':

    redir --lport 8080 --cport 8080 --caddr=192.168.3.7

    Mas, não gostaria de usar isto! Eu usava este cara há uns 8 anos atrás ... apenas usei pra testes e funcionou! =]
    Sobre a regra do iptables, nao consegui fazer funcionar ainda... já segui vários exemplos de redirecionamneto de portas que há net ... Agora, o redirecionamento via iptables funciona sem problemas para qquer host estando na rede 192.168.2.0/24, que é a rede a do firewall ...

    Vou continuar pesquisando... quem puder dar uma dica, por favor!

    []'s

  3. #3

    Ingresso
    Aug 2009
    Localização
    Santo Antonio do Sudoeste/PR
    Posts
    5

    Padrão Re: Não funciona DNAT/SNAT...

    iptables -t nat -A PREROUTING -p tcp -d 200.x.x.x/32 --dport 8080 -j DNAT --to 192.168.3.7:8080

  4. #4

    Padrão Re: Não funciona DNAT/SNAT...

    Bom Dia,

    A liberação de pacotes entres as redes esta ok certo?

    echo "1" > /proc/sys/net/ipv4/ip_forward

    Seu Firewall consegue pingar este IP da rede .3.x ?

    att

  5. #5

    Padrão Re: Não funciona DNAT/SNAT...

    Sim, consigo pingar este IP 192.168.3.7 sem problemas .... Sobre a regra, o que pude constatar é que o SNAT não está de acordo, ou seja, os pacotes chegam até o destino (DNAT), mas não sabem como retornar (SNAT) ....

  6. #6

    Padrão Re: Não funciona DNAT/SNAT...

    Imagino que seja legal começar os testes definindo melhor as regras, adicione a placa de rede nas linhas do IP tables...

    -i ETH_externa

    e -i ETH_interna

    Veja se isso já pode ajudar de alguma forma... porque os pacotes parecem estar se perdendo.

    Att

  7. #7

    Padrão Re: Não funciona DNAT/SNAT...

    Acrescentei as interfaces e ficou da seguinte forma:

    $ipt -t nat -A PREROUTING -p tcp -m tcp -i eth0 -d 200.20.20.20/32 --dport 3389 -j DNAT --to 192.168.3.7:3389
    $ipt -t nat -A POSTROUTING -p tcp -m tcp -o eth1 -s 192.168.3.7/32 --sport 3389 -j SNAT --to 200.20.20.20:3389

    Onde:
    eth0 = Wan
    eth1 = Lan

    Mas, não funcionou ...

    Estou fazendo testes com host dentro da subrede do Firewall mesmo:
    Firewall
    eth0=200.20.20.20
    eth1=192.168.2.254
    Servidor 2003=192.168.2.1

    $ipt -t nat -A PREROUTING -p tcp -m tcp -i eth0 -d 200.20.20.20/32 --dport 3389 -j DNAT --to 192.168.2.1:3389
    $ipt -t nat -A POSTROUTING -p tcp -m tcp -o eth1 -s 192.168.2.1/32 --sport 3389 -j SNAT --to 200.20.20.20:3389

    Por enqto. sem sucesso...
    Obrigado pelas respostas....

  8. #8

    Padrão Re: Não funciona DNAT/SNAT...

    Me diz uma coisa,

    O que você quer é... acessar o servidor WTS de fora da sua rede? remotamente é isso?

    Se esta for a ideia Acesso remoto WTS, você não precisa de SNAT.

    Outro detalhe é que o "-o eth1" (aqui é a interface de saida).

    Mas arranca a regra de SNAT.

    Seguinte, o pacote entra em sua rede na porta 3389 e é redirecionado para 192.168.2.1 e depois para 192.168.3.7 certo? então no caminho de volta ele sai de 192.168.3.7 passa para 192.168.2.1 e ai sim chega ao firewall para sair...

    Em sua regra de SNAT vc coloca que a origem é 192.168.3.7 porem no meio do caminho sua origem foi alterada para 192.168.2.1 que é um router.

    Por isso imagino que a regra de SNAT esta ferrando tudo.

    Retire o SNAT deve funcionar. e no nat a interface da linha deve ser a da internet.

    Boa sorte.
    Última edição por Lynx; 24-09-2010 às 15:20.

  9. #9

    Padrão Re: Não funciona DNAT/SNAT...

    Coloca um tcpdump no teu roteador 192.168.2.1 e cola aqui, assim é mais facil de analisar.

    Você só vai precisar utilizar SNAT se o gateway da tua rede 192.168.3.0 NÃO for o roteador que conecta com a rede 192.168.2.0 ou se o gateway desse roteador NÃO for 192.168.2.254.

    Cola as rotas do roteador 192.168.2.1.

    Miguel Xavier
    Última edição por leugim; 24-09-2010 às 16:39.

  10. #10

    Padrão Re: Não funciona DNAT/SNAT...

    Aproveito o tópico pois meu problema é parecido, explicarei da maneira mais detalhada possível.

    Tenho um server com 3 placas de rede (os endereços obviamente não são estes):

    eth0 - 192.168.1.1 rede 192.168.1.0/24
    eth1 - 200.200.200.200 (CTBC)
    eth2 - 201.201.201.201 (Virtua)

    Tenho um servidor interno cujo IP é 192.168.1.10 e que possui um servidor WWW respondendo na porta 80 para conexões que entram pelo link da CTBC.

    A regra que eu uso é a seguinte:

    iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth1 -j DNAT --to-dest 192.168.1.10

    Possuo regras de SNAT nass interfaces eth1 e eth2.

    O problema está no fato de que os desenvolvedores precisam testar a aplicação acessando pelo IP externo da CTBC mesmo estando dentro da rede local.

    Criei portanto a seguinte regra de DNAT:

    iptables -t nat -I PREROUTING -p tcp --dport 80 -i eth0 -d 200.200.200.200 -j DNAT --to-dest 192.168.1.10

    A partir desse momento os pacotes passaram a chegar no servidor, porém eles chegam no server com o endereço de origem da rede 192.168.1.0, o que faz com que o servidor responda diretamente ao computador de origem, que descarta o pacote, pois não espera nenhuma resposta de 192.168.1.10 e sim de 200.200.200.200.

    Tentei algumas regras de SNAT, a última delas foi a seguinte:

    iptables -t nat -I POSTROUTING -d 192.168.1.10 -j SNAT --to-source 200.200.200.200

    A ideia é forçar o retorno desses pacotes para o servidor, porém mesmo assim não está funcionando.

    Sinto que estou deixando passar batido algo banal, gostaria muito de uma ajuda de vocês para ver onde está o furo.

    Agradeço pela atenção.

  11. #11

    Padrão Re: Não funciona DNAT/SNAT...

    Crushing,

    Coloque a seguinte regra de SNAT:

    iptables -t nat -I POSTROUTING -o eth0 -s 192.168.1.0/24 -d 192.168.1.10 -p tcp -j SNAT --to-source 192.168.1.1

    Isso deve resolver, coloque um tcpdump nos dois servidores e nos mostre o trafego de pacotes:

    tcpdump -i eth0 port 80 -nn

    Cole sua tabela nat também:

    iptables -t nat -L -nv

    Abração
    Miguel Xavier

  12. #12

    Padrão Re: Não funciona DNAT/SNAT...

    Agradeço pela atenção, leugim. Porém já estou com exatamente esta regra de firewall e mesmo assim não funciona.

    Segue abaixo minhas regras de firewall no gateway:

    # Generated by iptables-save v1.4.2 on Thu Oct 7 16:29:25 2010
    *filter
    :FORWARD ACCEPT [0:0]
    :INPUT DROP [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -i lo -j ACCEPT
    -A INPUT -i eth0 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    COMMIT
    # Completed on Thu Oct 7 16:29:25 2010
    # Generated by iptables-save v1.4.2 on Thu Oct 7 16:29:25 2010
    *mangle
    :PREROUTING ACCEPT [1994958:1390387734]
    :INPUT ACCEPT [39483:4654146]
    :FORWARD ACCEPT [1953387:1385497131]
    :OUTPUT ACCEPT [22258:2303461]
    :POSTROUTING ACCEPT [1975645:1387800592]
    COMMIT
    # Completed on Thu Oct 7 16:29:25 2010
    # Generated by iptables-save v1.4.2 on Thu Oct 7 16:29:25 2010
    *nat
    :OUTPUT ACCEPT [0:0]
    :PREROUTING ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    -A PREROUTING -p tcp -m tcp -i eth1 --dport 80 -j DNAT --to-destination 192.168.1.10
    -A PREROUTING -p tcp -m tcp -i eth1 --dport 7531:7532 -j DNAT --to-destination 192.168.1.10
    -A PREROUTING -p tcp -m tcp -m multiport -d 200.200.200.200 -i eth0 -j DNAT --to-destination 192.168.1.10 --dports 80,7531,7532
    -A POSTROUTING -p tcp -m tcp -m multiport -s 192.168.1.0/24 -d 192.168.1.10 -o eth0 -j SNAT --to-source 192.168.1.1 --dports 80,7531,7532
    -A POSTROUTING -o eth2 -j MASQUERADE
    -A POSTROUTING -o eth1 -j MASQUERADE
    -A PREROUTING -p tcp -m tcp -i eth1 --dport 25 -j DNAT --to-destination 192.168.1.20
    COMMIT
    # Completed on Thu Oct 7 16:29:25 2010

    Assim que possível farei um dump dos pacotes...

  13. #13

    Padrão Re: Não funciona DNAT/SNAT...

    Aparentemente está configurado perfeitamente, coloque o tcpdump no firewall e nas extremidades, para que possamos analisar melhor.

    Abraço
    Miguel Xavier

  14. #14

    Padrão Re: Não funciona DNAT/SNAT...

    Buenas novamente, ressucitando o tópico, continuo sem entender o problema, contudo tem mais um sintoma:

    Usando o comando netstat-nat eu percebo que ele adiciona uma entrada à lista quando o acesso é externo à rede, porém ao fazer este acesso a partir da LAN ele não adiciona nenhum registro.