+ Responder ao Tópico



  1. #1

    Padrão Problemas com DNAT - IPTABLES

    Olá Pessoal:

    Estou com um problema que já tenho a muito tempo e nunca soube resolver.
    Gostaria que alguém me desse uma força.

    Seguinte, tenho uma regra que redireciona o trafego da porta 5432 (Postgres) do IP Valido do meu Firewall, pro IP do Servidor do banco de dados. Porém esta regra só está funcionando se a conexão for iniciada de fora da rede (pela internet). Se a conexão partir de dentro da rede local, dá "Unable do complete network request to host".

    Segue um desenho da rede, obviamente eu troquei as duas ultimas partes do IP pra um numero que nao existe 333.333.

    DESENHO >>> RapidShare: 1-CLICK Web hosting - Easy Filehosting

    Segue também a linha do NAT.

    iptables -A PREROUTING -t nat -p tcp -d 200.225.333.333 --dport 5432 -j DNAT --to 192.168.1.2:5432
    Pergunta:
    Pra que os usuários também consigam se conectar ao servidor usando o IP 200.225.333.333 de dentro da rede, precisa de mais alguma regra ? Atualmente é necessário alterar nas fontes de dados ODBC o ip pra 192.168.1.2, caso contrario não dá certo.
    Se eu conseguir uma regra que funcione pra quem ta dentro e fora da rede, eu eliminaria a necessidade de mexer no ODBC toda vez que o usuario chegue na empresa ou precise se conectar de fora.

    A rede está exatamente como no desenho.

    Aguardo e agradeço antecipadamente.

    Abraços.
    Última edição por leonardobruno; 18-10-2009 às 07:25. Razão: O UPLOAD COM O DESENHO NAO FUNCIONOU - ADICIONEI O LINK

  2. #2

    Padrão

    Antes que alguem sugira, o ip no desenho ficou errado, ao i nves de 201.225.333.333 é 200.225.333.333 conforme na regra. Desculpem-me ....

  3. #3

    Padrão

    Amigo, não consegui baixar a imagem (rapidshare é bloqueado por aqui) para ter certeza do seu problema. Mas pela regra me parece que o seu problema é o que eu expliquei nesse post:[Dica] Problema Comum no Redirecionando com Iptables (NAT & SNAT) - Parte 1/2

    Recomendo também você dar uma lida nessa sugestão de topologia que eu fiz: [Dica] Problema Comum no Redirecionando com Iptables (NAT & SNAT) - Parte 2/2

    Ela vai te poupar muitos problemas...

    Caso você não queira utilizar essas soluções algo que eu te recomendo é utilizar, ao invés do IP, um nome para o servidor, caso você disponha de um servidor DNS. Dessa forma esse nome é resolvido dinâmicamente e evita a necessidade de alteração. Caso você não tenha um DNS, você pode utilizar o arquivo hosts que funciona como um "DNS local"

    Até mais...

  4. #4

    Padrão

    Citação Postado originalmente por Magnun Ver Post
    Amigo, não consegui baixar a imagem (rapidshare é bloqueado por aqui) para ter certeza do seu problema. Mas pela regra me parece que o seu problema é o que eu expliquei nesse post:[Dica] Problema Comum no Redirecionando com Iptables (NAT & SNAT) - Parte 1/2

    Recomendo também você dar uma lida nessa sugestão de topologia que eu fiz: [Dica] Problema Comum no Redirecionando com Iptables (NAT & SNAT) - Parte 2/2

    Ela vai te poupar muitos problemas...

    Caso você não queira utilizar essas soluções algo que eu te recomendo é utilizar, ao invés do IP, um nome para o servidor, caso você disponha de um servidor DNS. Dessa forma esse nome é resolvido dinâmicamente e evita a necessidade de alteração. Caso você não tenha um DNS, você pode utilizar o arquivo hosts que funciona como um "DNS local"

    Até mais...
    Obrigado pela resposta.

    Li os posts mas nenhum deles se parece com a minha situacao.

    Não esta sendo possivel postar a imagem aqui, mas tentarei explicar com detalhes.


    FW ETH0 - 200.225.333.333
    FW ETH1 - 192.168.1.1/24

    BD ETH0 - 192.168.1.2/24

    ETH1 do FW ligada no mesmo Switch onde esta ligada a ETH0 do BD.

    Os usuarios tambem estao ligados no Switch referido acima e estao configrados como 192.168.1.x/24.

    Esta é a regra de NAT:

    iptables -A PREROUTING -t nat -p tcp -d 200.225.333.333 --dport 5432 -j DNAT --to 192.168.1.2:5432

    A aplicação utiliza ODBC para se conectar ao banco de dados.

    O IP configurado no odbc é o 200.225.333.33 e a porta é a padrao (5432).

    Quando os vendedores acessa a aplicacao estando fora da empresa (INTERNET) o nat funciona beleza.

    Mas quando chegam na empresa, não funciona, acusando "UNABLE TO COMPLETE NETWORK REQUEST TO HOST" obrigando abrir chamada pra mudar o alias ODBC pra 192.168.1.2.

    Agora as perguntas:

    1 - Visto que o IP que esta na regra é o do próprio firewall, ele não deveria encaminhar corretamente esses pacotes quando a requisição chegasse nele, independente se viessem da WAN ou da LAN ?

    2 - Esta regra está funcionando pra quem está na WAN. Tenho que adicionar outra regra pra quem está na LAN ?

    3 - A regra esta incorreta ?



    Mais uma vez muito obrigado por tentar me ajudar.

    Grande abraço.

  5. #5

    Padrão

    Cara, agora que estou em casa baixe a imagem da sua topologia e afirmo: seu problema é exatamente o que expliquei no primeiro link que te passei. Dá uma olhada com calma que você vai entender o problema.

    Suas regras de firewall funcionam mas a conexão é terminada com um erro devido a um IP de destino incorreto.

    Até mais...

  6. #6

    Padrão

    Citação Postado originalmente por Magnun Ver Post
    Cara, agora que estou em casa baixe a imagem da sua topologia e afirmo: seu problema é exatamente o que expliquei no primeiro link que te passei. Dá uma olhada com calma que você vai entender o problema.

    Suas regras de firewall funcionam mas a conexão é terminada com um erro devido a um IP de destino incorreto.

    Até mais...

    Olha só:

    Mexi na regra, deixando a que ja tinha la e adicionei o SNAT, ficou assim:

    iptables -A PREROUTING -t nat -p tcp -d 200.225.333.333--dport 5432 -j DNAT --to 192.168.1.2:5432
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -d 192.168.1.1 -p tcp --dport 5432 -j SNAT --to 192.168.1.1

    Também testei assim :

    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -d 200.225.333.333-p tcp --dport 5432 -j SNAT --to 192.168.1.1


    Nao sei se o raciocinio esta correto, mas eu quero que tudo que venha de 192.168.1.0/24 saindo pela eth1 com destino a 200.225.333.333 porta 5432 tenha a origem alterada pra 192.168.1.1 (FIREWALL).
    Última edição por leonardobruno; 19-10-2009 às 21:09.

  7. #7

    Padrão

    Concordo com o Magnum, seu problema é exatamente o que ele descreveu.

    Mas vim só para dizer que a melhor solução é por um DNS para resolver os nomes. A solução utilizando somente iptables e NAT sobrecarrega o gateway pois a conexão não ocorre de maneira fim-a-fim. Todos os pacotes passam pelo gateway.

  8. #8

    Padrão

    Citação Postado originalmente por PEdroArthurJEdi Ver Post
    Concordo com o Magnum, seu problema é exatamente o que ele descreveu.

    Mas vim só para dizer que a melhor solução é por um DNS para resolver os nomes. A solução utilizando somente iptables e NAT sobrecarrega o gateway pois a conexão não ocorre de maneira fim-a-fim. Todos os pacotes passam pelo gateway.

    É, depois de olhar com calma eu tb concordo.

    O problema é q não consigo acertar a regra de SNAT.

    Tentei de várias maneiras e nao da certo.

  9. #9

    Padrão

    Caro bruno, tenta por uma regra parecida com essa que postei aqui, pois tinha um problema parecido com um seu e esta regra foi ideal para o mesmo. Tenta e faz as alteracoes necessarias ok.

    iptables - t nat -A POSTROUTING -o eth1 -d 201.100.x.x -p tcp --sport 7661 - j SNAT --to 200.200.x.x:7661

  10. #10

    Padrão

    Citação Postado originalmente por iudemar Ver Post
    Caro bruno, tenta por uma regra parecida com essa que postei aqui, pois tinha um problema parecido com um seu e esta regra foi ideal para o mesmo. Tenta e faz as alteracoes necessarias ok.

    iptables - t nat -A POSTROUTING -o eth1 -d 201.100.x.x -p tcp --sport 7661 - j SNAT --to 200.200.x.x:7661
    Olá amigo:

    Primeiramente obrigado pelo post.

    Olha só, deixa eu ver se entendi a sua regra, td q sai pela eth1 com desytino a 201.100.x.x porta 7661 vc ta trocando o ip de origem pra 200.200.x.x . é isso ne ?

    Essa regra ta funcionando ? vc fez de cabeça ou colou do seu firewall ?

    Qual a regra de DNAT que acompanha ela ?

    Se nao for abusar, mas ja abusando, vc deu uma olhada na imagem da minha topografia ?

    pq pus essa regra, traduzindo pro meu cenario, e coloquei a seguinte regra de DNAT junto e nao funciona nem, a pau.

    ficaram assim :


    iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -d 200.225.333.333-p tcp --dport 5432 -j DNAT --to 192.168.1.1
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -d 200.225.333.333-p tcp --sport 5432 -j SNAT --to 192.168.1.1

    como nao funcionou tentei inverter o IN OUT ( -i ou -o) a eth é eth1 mesmo.

    Mesmo assim nao deu .

    Mais uma vez agradeço.

  11. #11
    Não Registrado
    Visitante

    Padrão

    Bruno,

    essa regra de SNAT tenho aqui no firewall da empresa em que trabalho no momento ela nao esta sendo mais utilizada mais a algum tempo atras ela funcionava perfeitamente. Nao a uilizo mais pq nao ha mais necessidade ok. A regra de DNAT q utilizo ainda funciona perfeitamente pois nesse momento so ela p/ mim é o que interessa, vou postar como ela se comporta p/ vc. Da uma sakda.

    iptables -t nat -A PREROUTING - i eth0 -p tcp --dport 7661 -j DNAT --to 192.168.0.x:7661
    #tudo que entre pela eth0 com destino a 7661 mande para maquina 0.x que eh um server q comporta algumas aplicacoes.

    Só uma observaçao na sua regra DNAT v só:
    ela diz: todo pacote q venha da rede lan entrando pela inteface eth1 com destino ao ip 200.x.x.x com destino a porta 5432 seja feito um DNAT para a propria rede LAN ou seja no meu entender tem um ¨loop¨ ele é originado da tua rede vai p/ tua eth0 e volta novamente. Se estiver errado caros colegas do forum por favor corrigir meu erro.

    Bruno lendo sua regra pode-se v isto. Verifica essa regra de DNAT depois c pensa na SNAT uma a uma sem pressa.

  12. #12

    Padrão

    Prezado Bruno,

    Eu tenho aqui na empresa em que trabalho um firewall que possui essa regra regra de SNAT sim, ela funcionava perfeitamente porem agora ela nao esta mais em uso pq nao temos mais a necessidade de utilizar a mesma. Temos tb a regra de DNAT que ainda é bastante util vou postar aqui a regra de DNAT que caminhava junto com SNAT a um tempo atras. Repito a regra de SNAT nao esta sendo mais utilizada pq nao me interessa neste momento mais ja me foi util.

    #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 7661 -j DNAT --to 192.168.0.x:7661
    #############todo pacote que entre pela interface eth0 p/ destino porta 7661 mande p/ ip 0.x na porta 7661
    tenho uma regra de FORWARD nessa porta tb no meu firewall que libera essa porta.

    Vendo aqui sua regra de DNAT Bruno, percebi uma coisinha. Vou colar aqui sua regra e analisa-la.. colegas do forum se estiver enganado por favor me corrijam, conto com vcs ok!!!
    #iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -d 200.225.333.333-p tcp --dport 5432 -j DNAT --to 192.168.1.1

    v SÓ.. todo pacote que esta sendo originado da lan entrando pela eth1 com dest a 200.x.x.x. e dest na porta 5432 mande p/ a lan.
    OU seja pode-se v um ¨loop¨ sai na lan vai no firewall e volta p/ lan. Bruno v essa regra d DNAT depois vc pensa na SNAT. Colegas se tiver errado por favor me corrijam ok. Vlw!!

  13. #13
    Não Registrado
    Visitante

    Padrão

    Citação Postado originalmente por iudemar Ver Post
    Prezado Bruno,

    Eu tenho aqui na empresa em que trabalho um firewall que possui essa regra regra de SNAT sim, ela funcionava perfeitamente porem agora ela nao esta mais em uso pq nao temos mais a necessidade de utilizar a mesma. Temos tb a regra de DNAT que ainda é bastante util vou postar aqui a regra de DNAT que caminhava junto com SNAT a um tempo atras. Repito a regra de SNAT nao esta sendo mais utilizada pq nao me interessa neste momento mais ja me foi util.

    #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 7661 -j DNAT --to 192.168.0.x:7661
    #############todo pacote que entre pela interface eth0 p/ destino porta 7661 mande p/ ip 0.x na porta 7661
    tenho uma regra de FORWARD nessa porta tb no meu firewall que libera essa porta.

    Vendo aqui sua regra de DNAT Bruno, percebi uma coisinha. Vou colar aqui sua regra e analisa-la.. colegas do forum se estiver enganado por favor me corrijam, conto com vcs ok!!!
    #iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -d 200.225.333.333-p tcp --dport 5432 -j DNAT --to 192.168.1.1

    v SÓ.. todo pacote que esta sendo originado da lan entrando pela eth1 com dest a 200.x.x.x. e dest na porta 5432 mande p/ a lan.
    OU seja pode-se v um ¨loop¨ sai na lan vai no firewall e volta p/ lan. Bruno v essa regra d DNAT depois vc pensa na SNAT. Colegas se tiver errado por favor me corrijam ok. Vlw!!
    Entao:

    Este é o problema.

    A aplicacao que esta me fazendo passar esta dor de cabeça só aceita 1 alias ODBC.
    Eu preciso fazer uma regra que permita que os usuarios que estao na LAN acessem o banco de dados que esta na mesma rede, com mesma faixa, pelo IP 200.225.333.333.

    Entendeu ?

    Preciso que o servidor de banco de dados fique disponivel pra quem ta dentro e fora da lan pelo ip 200.225.333.333, seguindo a topologia que esta no desenho. (link no inicio do post).