+ Responder ao Tópico



  1. #1

    Padrão natd - problema

    Boa tarde,
    Tenho um problema com o natd.
    Estou a usar um imulador de redes (Imunes) em FreeBSD e
    estou a fazer um redirecionamento.
    Eu quero que todos os pacotes tcp que venha direcionados a 161.10.19.2(ip publico) com porta 1025 vao ter ao host com endereço 172.16.1.253.
    E com outras portas pra outros hosts.
    Imagem da rede: http://www.geocities.com/redhat69_lesi/rede/rede.JPG

    No servidor natd ponho a executar o seguinte:
    "natd -config natd.conf"
    --------------------------------------------------
    #natd.conf
    redirect_port tcp 172.16.1.253:1025 161.10.19.2:1025
    --------------------------------------------------
    em que "172.16.1.253" é o endereço de um host e 161.10.19.2 o endereço publico da rede, sendo tambem o endereço de saida do proprio servidor.

    E ao executar aparece o seguinte erro:

    natd: instance default: aliasing address not given.

    Podem me dizer porque sera?

    Desde ja obrigado.

  2. #2

    Padrão

    vc não precisa mencionar ESTA máquina, só a maquina DESTINO, então ficaria:

    "maq_destino doispontos porta(destino) porta(origem)".

    esse maldito post não deixa escrever direito:

    maq_destino: + porta porta

    veja um trecho do man natd:
    :==========
    For example, the argument

    tcp inside1:telnet 6666

    means that incoming TCP packets destined for port 6666 on
    this machine will be sent to the telnet port on the inside1
    machine.

    tcp inside2:2300-2399 3300-3399

    will redirect incoming connections on ports 3300-3399 to host
    inside2, ports 2300-2399. The mapping is 1:1 meaning port
    3300 maps to 2300, 3301 maps to 2301, etc.
    :========

    divirta-se.

  3. #3

    Padrão

    Citação Postado originalmente por redhatlesi Ver Post
    Boa tarde,
    Tenho um problema com o natd.
    Estou a usar um imulador de redes (Imunes) em FreeBSD e
    estou a fazer um redirecionamento.
    Eu quero que todos os pacotes tcp que venha direcionados a 161.10.19.2(ip publico) com porta 1025 vao ter ao host com endereço 172.16.1.253.
    E com outras portas pra outros hosts.
    Imagem da rede: http://www.geocities.com/redhat69_lesi/rede/rede.JPG

    No servidor natd ponho a executar o seguinte:
    "natd -config natd.conf"
    --------------------------------------------------
    #natd.conf
    redirect_port tcp 172.16.1.253:1025 161.10.19.2:1025
    --------------------------------------------------
    em que "172.16.1.253" é o endereço de um host e 161.10.19.2 o endereço publico da rede, sendo tambem o endereço de saida do proprio servidor.

    E ao executar aparece o seguinte erro:

    natd: instance default: aliasing address not given.

    Podem me dizer porque sera?

    Desde ja obrigado.
    Amigo Lusitano,

    Seria assim:

    redirect_port tcp 172.16.1.253:1025 1025

    Recomendaria voce colocar tambem no seu natd as opcoes "same ports" e "use sockets".

    Saudações,

  4. #4

    Padrão

    Citação Postado originalmente por irado Ver Post
    vc não precisa mencionar ESTA máquina, só a maquina DESTINO, então ficaria:

    "maq_destino doispontos porta(destino) porta(origem)".

    esse maldito post não deixa escrever direito:

    maq_destino: + porta porta

    veja um trecho do man natd:
    :==========
    For example, the argument

    tcp inside1:telnet 6666

    means that incoming TCP packets destined for port 6666 on
    this machine will be sent to the telnet port on the inside1
    machine.

    tcp inside2:2300-2399 3300-3399

    will redirect incoming connections on ports 3300-3399 to host
    inside2, ports 2300-2399. The mapping is 1:1 meaning port
    3300 maps to 2300, 3301 maps to 2301, etc.
    :========

    divirta-se.
    Já experimentei e continua o mesmo erro... Será algum bug do natd do FreBSD ou do Imunes?

  5. #5

    Padrão

    Citação Postado originalmente por GrayFox Ver Post
    Amigo Lusitano,

    Seria assim:

    redirect_port tcp 172.16.1.253:1025 1025

    Recomendaria voce colocar tambem no seu natd as opcoes "same ports" e "use sockets".

    Saudações,
    http://www.geocities.com/redhat69_lesi/rede/erro.JPG

    Já experimentei e continua o mesmo erro... Será algum bug do natd, do FreBSD ou do Imunes?

    E ja experimentei também colocar a opcao "interface eth1" e da o seguinte erro:
    natd: Unable to create divert socket.: Protocol not supported
    Última edição por redhatlesi; 20-01-2009 às 16:50.

  6. #6

    Padrão

    Está faltando a interface. Se a sua placa de rede com o ip publico for a "rl0", faça assim:

    natd -f acesso/natd.conf -n rl0


    Qualquer coisa, instale o rinetd para testar.
    Após instalar o rinetd, faça um arquivo com esse conteudo:

    161.10.19.2 1025 172.16.1.253 1025


    e inicie o rinetd:

    rinetd -c /etc/arquivo-com-esse-conteudo


    Boa sorte.
    Ah, nao mande mais mensagens privadas, mande as duvidas pro forum.

  7. #7

    Padrão

    Citação Postado originalmente por GrayFox Ver Post
    Está faltando a interface. Se a sua placa de rede com o ip publico for a "rl0", faça assim:

    natd -f acesso/natd.conf -n rl0


    Qualquer coisa, instale o rinetd para testar.
    Após instalar o rinetd, faça um arquivo com esse conteudo:

    161.10.19.2 1025 172.16.1.253 1025


    e inicie o rinetd:

    rinetd -c /etc/arquivo-com-esse-conteudo


    Boa sorte.
    Ah, nao mande mais mensagens privadas, mande as duvidas pro forum.
    Pois mas é um imulador, estou a imular uma rede (ver imagem da rede), ou seja é tudo feito localmente no freeBSD, e o interface do (suposto) ip publico é o eth1.
    mas eu utilizando a opcao -n eth1 da o erro:
    natd: Unable to create divert socket.: Protocol not supported

    sera que tenho de compilar o kernel com a opcao IPDIVERT?
    Como posso saber se já está compilado com essa opcao?

    Ah e o rinetd so da pra testar depois de o servidor natd estar a funcionar correctamente nao é?
    Última edição por redhatlesi; 20-01-2009 às 17:20.

  8. #8

    Padrão

    Sim, voce precisa ter no kernel o IPDIVERT, só que assim, eth1 é o nome de interface usada no Linux e nao no FreeBSD. Digite ifconfig e veja quais sao as suas interfaces.

    O rinetd nao precisa ter o natd funcionando. É um programa a parte.

    Saudações,

  9. #9

    Padrão

    Citação Postado originalmente por GrayFox Ver Post
    Sim, voce precisa ter no kernel o IPDIVERT, só que assim, eth1 é o nome de interface usada no Linux e nao no FreeBSD. Digite ifconfig e veja quais sao as suas interfaces.

    O rinetd nao precisa ter o natd funcionando. É um programa a parte.

    Saudações,
    Como posso saber se o kernel ja tem o IPDIVERT?

    o ifconfig no servidor natd:

    http://www.geocities.com/redhat69_le...e/ifconfig.JPG

  10. #10

    Padrão

    Deve ter sido apelidado as interfaces.
    Qualquer coisa, carregue o modulo na mao mesmo.

    Digite: kldload ipdivert

    E veja o que acontece.

  11. #11

    Padrão

    Citação Postado originalmente por GrayFox Ver Post
    Deve ter sido apelidado as interfaces.
    Qualquer coisa, carregue o modulo na mao mesmo.

    Digite: kldload ipdivert

    E veja o que acontece.
    Da o seguinte erro:

    kldload: can´t load ipdivert: No such file or directory

    E já fiz rinetd -c /etc/arquivo-com-esse-conteudo e acho que ficou redirecionado, pelo menos não deu nenhum erro.

    Mas agora estou com problema para testar se realmente ta a ser redirecionado.

    tentei com um traceroute no terminal do router RE (end:161.10.19.1)
    -p(porta) -P (protocolo)
    traceroute -p 1025 -P tcp 161.10.19.2 so que fica procurando, nao chega ao host.
    vou ter de fazer uma captura de pacotes pra ver o que acontece.

    Tem alguma ideia pra eu testar isso?
    Última edição por redhatlesi; 20-01-2009 às 18:35.

  12. #12

    Padrão

    A e obrigado pela ajuda ate agora
    Se me puder ajudar agraceço desde já...

  13. #13

    Padrão

    Faça assim, deixe o rinetd funcionando, fazendo o redirecionamento e dê um tcpdump nessa porta. Outra coisa, tire o firewall, deixe sem nenhum firewall ( ipfw -f flush ; ipfw add allow all from any to any )

    entao, de um tcpdump na interface do ip publico e de fora da rede, de um telnet na porta 1025.

    Exemplo:

    maquina local
    # ipfw -f flush
    #ipfw add allow all from any to any
    #tcpdump -ni INTERFACE port 1025


    maquina remota
    #telnet ippublico 1025


    E veja o que acontece.

    Saudações,

  14. #14

    Padrão

    Citação Postado originalmente por GrayFox Ver Post
    Faça assim, deixe o rinetd funcionando, fazendo o redirecionamento e dê um tcpdump nessa porta. Outra coisa, tire o firewall, deixe sem nenhum firewall ( ipfw -f flush ; ipfw add allow all from any to any )

    entao, de um tcpdump na interface do ip publico e de fora da rede, de um telnet na porta 1025.

    Exemplo:

    maquina local
    # ipfw -f flush
    #ipfw add allow all from any to any
    #tcpdump -ni INTERFACE port 1025


    maquina remota
    #telnet ippublico 1025


    E veja o que acontece.

    Saudações,
    Boas!
    Olha desde que fiz isto:
    # ipfw -f flush
    #ipfw add allow all from any to any
    agora nao consigo fazer ping nem ao localhost

    dá: ping: sendto: Permission denied

    Ah e fazendo como me disse da:
    Trying IPpublico...
    telnet:connect to address IPpublico: Permission denied
    telnet:Unable to connect to remote host

    O que sera que aconteceu?

    Saudações

  15. #15

    Padrão

    Faça assim entao e veja:

    ipfw -f flush
    ipfw add 1 allow all from any to any

    Numerei a regra... Pelo visto seu firewall está em default to deny. Por isso o erro.

    Tente agora...

    Saudações,

  16. #16

    Padrão

    Citação Postado originalmente por GrayFox Ver Post
    Faça assim entao e veja:

    ipfw -f flush
    ipfw add 1 allow all from any to any

    Numerei a regra... Pelo visto seu firewall está em default to deny. Por isso o erro.

    Tente agora...

    Saudações,
    Ok parece que era isso, o resultado foi esse:
    PS: mudei a porta de tudo para 1026.

    http://www.geocities.com/redhat69_lesi/rede/rinetd.JPG

    Parece me que está a redireccionar bem... Não é?

    Só mais uma pergunta...
    O rinetd funciona como o natd? Ou seja, acaba por ser um servido NAT?

    Saudações
    Última edição por redhatlesi; 26-01-2009 às 17:12.

  17. #17

    Padrão

    Sim, está funcionando...
    O rinetd reescreve a tabela, parecido como o natd. O rinetd é um serviço de port forwarding.

    Saudações,

    Citação Postado originalmente por redhatlesi Ver Post
    Ok parece que era isso, o resultado foi esse:
    PS: mudei a porta de tudo para 1026.

    http://www.geocities.com/redhat69_lesi/rede/rinetd.JPG

    Parece me que ta a redireccionar bem... Não é?

    Só mais uma pergunta...
    O rinetd funciona como o natd? Ou seja, acaba por ser um servido nat?

    Saudações

  18. #18

    Padrão

    Citação Postado originalmente por GrayFox Ver Post
    Sim, está funcionando...
    O rinetd reescreve a tabela, parecido como o natd. O rinetd é um serviço de port forwarding.

    Saudações,
    Já experimentei também com o wireshark a correr no host e os pacotes chegam lá!

    Ok, muito obrigado por toda a ajuda sem ela não tinha conseguido! Foi fundamental.

    Abraço.