+ Responder ao Tópico



  1. #21

    Padrão

    Citação Postado originalmente por AndrioPJ Ver Post
    essa é a parte chata,
    ele cria 2 regras para cada IP, uma UDP e outra TCP.
    Infelizmente não tem como escapar disso.
    A menos que faça um NAT global.
    exemplo:
    NAT 1 IP publico para 32 IPs privados.

    nesse caso, para atender um /26, seria apenas 64 regras de NAT.
    o problema é que vc não teria como identificar quem desses 32 clientes cometeu o crime.

    Não é necessariamente um problema é apenas uma questão de poluição visual mesmo. Em geral o funcionamento está perfeito, pois IP fixo no Radius + as portas bem definidas pra cada IP ficou uma solução bem legal e não é preciso um log muito complexo para identificar usuários em caso de qualquer problema. Vou deixar dessa forma até ativar o IPv6!
    Mais uma vez, agradeço bastante!
    Última edição por Seraph; 22-08-2018 às 20:52. Razão: correção da quebra de linha

  2. #22

    Padrão Re: Script CGNAT

    Netmap. Mudei todos os meus cgnat em Mikrotik para cgnat com netmap, de mais de 3100 regras, reduz pra pouco mais de 250.

    O cgnat do Andrio tem problema tá, não está 100%...

  3. #23

    Padrão Re: Script CGNAT

    Citação Postado originalmente por andrecarlim Ver Post
    Netmap. Mudei todos os meus cgnat em Mikrotik para cgnat com netmap, de mais de 3100 regras, reduz pra pouco mais de 250.

    O cgnat do Andrio tem problema tá, não está 100%...
    uso esse mesmo script aqui (com algumas pequenas modificações, tal como adicionar o IP publico na interface e criar o pool automaticamente)

    mas diga ai, qual seria o problema?
    por favor, aponte para q eu possa corrigir.

  4. #24

    Padrão Re: Script CGNAT

    De cabeça aqui não lembro, amanhã se der um tempo eu testo novamente e retorno aqui.

  5. #25

    Padrão Re: Script CGNAT

    Citação Postado originalmente por andrecarlim Ver Post
    De cabeça aqui não lembro, amanhã se der um tempo eu testo novamente e retorno aqui.
    Opa, fico no aguardo do feedback.

  6. #26

    Padrão Re: Script CGNAT

    Citação Postado originalmente por AndrioPJ Ver Post
    Opa, fico no aguardo do feedback.
    Então Andrio, rodei aqui, e deixa eu me retratar, não é um problema com o cgnat em si, mas como trata as regras, eu queria um que caso não fechasse com TCP/UDP aplicasse o NAT do restante para cada IP Publico daquele bloco privado, e também um que fosse simples de aplicar as regras... Só isso na verdade, ai escrevi um inteiro, que a gente coloca só o bloco privado, o bloco publico e a posição de inicio das regras e ele se vira fazer tudo, bem simples.

  7. #27

    Padrão Re: Script CGNAT

    Em geral podemos concluir que a diferença entre esse script do CGNAT e o NAT feito com NETMAP seria que nesse script redirecionamos e distribuímos conforme necessário apenas as portas TCP e UDP, enquanto no NETMAP ele redireciona qualquer protocolo, correto?

    Há alguma outra diferença relevante entre o src/dst-nat e o netmap?

  8. #28

    Padrão Re: Script CGNAT

    Errado, o esquema que eu faço com cgnat tem o mesmo efeito e muito superior a qualquer outro que não use netmap, e é por range de portas e a principal diferença é, o mesmo efeito produzido pelo script do Andrio, que no fim, gera dezenas de centenas de regras, o meu fica com aproximadamente, 10% das regras, ou seja, se com o "comum" você tem 2000 regras com o meu, pouco mais de 200. E onde isso impacta mais? No processamento!

  9. #29

    Padrão

    Citação Postado originalmente por andrecarlim Ver Post
    Errado, o esquema que eu faço com cgnat tem o mesmo efeito e muito superior a qualquer outro que não use netmap, e é por range de portas e a principal diferença é, o mesmo efeito produzido pelo script do Andrio, que no fim, gera dezenas de centenas de regras, o meu fica com aproximadamente, 10% das regras, ou seja, se com o "comum" você tem 2000 regras com o meu, pouco mais de 200. E onde isso impacta mais? No processamento!
    Fiquei curioso.
    Esse por netmap que vc refere-se é o CGNAT Horizontal?

    Exemplo:
    Código :
    add action=jump chain=CGNAT_100_64 jump-target=CGNAT_100_64_0 src-address=100.64.0.0/21
    add action=netmap chain=CGNAT_100_64_0 protocol=tcp src-address=100.64.0.0/25 to-addresses=192.0.2.0/25 to-ports=5000-5499
    add action=netmap chain=CGNAT_100_64_0 protocol=udp src-address=100.64.0.0/25 to-addresses=192.0.2.0/25 to-ports=5000-5499
    add action=netmap chain=CGNAT_100_64_0 protocol=tcp src-address=100.64.0.128/25 to-addresses=192.0.2.0/25 to-ports=5500-5999
    add action=netmap chain=CGNAT_100_64_0 protocol=udp src-address=100.64.0.128/25 to-addresses=192.0.2.0/25 to-ports=5500-5999

    Se for esse... então eu Já estudei ele certa vez.
    Mas não implementei ele pela dificuldade de identificação sem ter um log.

    Logo, gostaria de saber como está fazendo a identificação dos clientes?
    Pois diferente do CGNAT Vertical, nesse CGNAT Horizontal é o Netmap que cuida de direcionar um IP publico para um IP privado CGNAT, logo, como você saberia que o IP privado 100.64.0.10 saiu pelo 192.0.2.2 e não pelo 192.0.2.3, já que foi atribuido um bloco /25 de IP publico e o netmap pode atribuir qualquer um desses?

  10. #30

    Padrão Re: Script CGNAT

    Porque, primeiro, ele é do tipo 1:1 quando se usa blocos de mesmo tamanhos, ele não faz sorteio, e segundo não precisa nada de logs, é exatamente o mesmo funcionamento do teu script, só que com muito menos regras.

    Cara, esses nomes (vertical e horizontal) é tudo invenção. É tudo CGNAT.

  11. #31

    Padrão

    Citação Postado originalmente por andrecarlim Ver Post
    Cara, esses nomes (vertical e horizontal) é tudo invenção. É tudo CGNAT.
    né kkkkkkkkkk
    O povo coloca esses nomes para diferenciar um do outro.

    Enfim,
    vou criar o script para esse tipo de CGNAT.
    Nos próximos dias posto ele aqui.

  12. #32

    Padrão Re: Script CGNAT

    Boa sorte mano!

  13. #33

    Padrão Re: Script CGNAT

    Citação Postado originalmente por andrecarlim Ver Post
    Errado, o esquema que eu faço com cgnat tem o mesmo efeito e muito superior a qualquer outro que não use netmap, e é por range de portas e a principal diferença é, o mesmo efeito produzido pelo script do Andrio, que no fim, gera dezenas de centenas de regras, o meu fica com aproximadamente, 10% das regras, ou seja, se com o "comum" você tem 2000 regras com o meu, pouco mais de 200. E onde isso impacta mais? No processamento!
    Eu percebi esse impacto no processamento, estou monitorando essa parte antes de concluir qualquer coisa.

    Sobre endereços:
    Com um bom radius ou syslog server dá pra achar o cliente fanfarrão, mesmo se o IP público dele for alocado de maneira dinâmica!
    Última edição por Seraph; 26-08-2018 às 11:07. Razão: consertar_quebra_de_linha

  14. #34

    Padrão Re: Script CGNAT

    Citação Postado originalmente por leosmendes Ver Post
    Opa Andrio, me tira uma dúvida. Hoje os clientes navegam ou pela 443 ou pela 80 certo, outras portas que eles precisem o roteador vai alocando aleatoriamente. Se meu raciocínio está certo, não teria como criar o cg-nat que oferecesse apenas duas portas por IP uma para http e outra para https e deixar o restante das portas dinâmico?
    Não são apenas essas portas usadas, tem porta 53 de DNS, o cliente pode querer acessar um FTP na internet pela porta 21, vários outros serviços usam portas diferentes da 80 e 443. O cliente pode te requisitar uma porta especifica pra acessar uma câmera por exemplo. O CG-NAT é bom, mas cria várias outras limitações e quem tem só um IP valido, como liberar 1000 portas pra mais de 100 clientes? Não rola... Quem usa Load Balance creio que já era com CG-NAT tb, correto? Quem precisa de liberar portas específicas por cliente...

  15. #35

    Padrão Re: Script CGNAT

    Boa Tarde, gostaria de uma ajuda, testei o script aqui, funcionou perfeitamente, só não estou conseguindo pingar quando estou usando um IP que esta rodando sobre a NAT, alguem poderia me ajudar?

    OBS: Já tentei fazer aquela regra de ICMP que esta postada aqui no grupo.

  16. #36

    Padrão Re: Script CGNAT

    Citação Postado originalmente por brunovalmorbida Ver Post
    Boa Tarde, gostaria de uma ajuda, testei o script aqui, funcionou perfeitamente, só não estou conseguindo pingar quando estou usando um IP que esta rodando sobre a NAT, alguem poderia me ajudar?

    OBS: Já tentei fazer aquela regra de ICMP que esta postada aqui no grupo.
    Colega, também tive esse problema aqui. Você precisa corrigir a rota para o ip privado, você consegue
    isso através de políticas de roteamento (policy routing).

    Vá em IP > Routes > Rules
    Adicione uma nova política:

    Src. Address: endereço da rede que você quer pingar até o cliente
    Dst. Address: 100.64.0.0/21 (A rede privada que você usa. Nesse exemplo, coloquei a rede do CGNAT que uso aqui)
    Action: Lookup
    Table: Main

    Essa regra faz o seguinte: quando o endereço de destino for a rede do cgnat, a RB vai olhar primeiramente a tabela MAIN, que é onde está o ip e a rota para os clientes sem passar pelo nat.

    Export config:

    /ip route rule
    add disabled=no dst-address=100.64.0.0/21 table=main


    Caso você esteja usando uma faixa de IP diferente do CGNAT, você tem que fazer outra regra.
    Por exemplo, suponhamos que além do CGNAT você use uma faixa privada para os hosts no seu escritório,
    a regra ficaria mais ou menos assim:

    /ip route rule
    add disabled=no dst-address=100.64.0.0/21 src-address=192.168.0.0/24 table=main


    add disabled=no dst-address=192.168.0.0/24 src-address=100.64.0.0/21 table=main


    Lembre-se que o PING é uma ferramenta que manda um pacote e espera por uma resposta,
    por isso temos que fazer a rota de IDA e de VOLTA.

  17. #37

    Padrão Re: Script CGNAT

    Citação Postado originalmente por andrecarlim Ver Post
    Porque, primeiro, ele é do tipo 1:1 quando se usa blocos de mesmo tamanhos, ele não faz sorteio, e segundo não precisa nada de logs, é exatamente o mesmo funcionamento do teu script, só que com muito menos regras.

    Cara, esses nomes (vertical e horizontal) é tudo invenção. É tudo CGNAT.
    Opa @andrecarlim,

    vc que é o cara de linux, kkkkkkkk. Sabe dizer se o netmap do iptables tem como fixar as portas de NAT igual ao RouterOS? Estou caçando aqui mas sem sucesso.

  18. #38

    Padrão Re: Script CGNAT

    Então cara, não gastei muito tempo ainda com o netmap do Linux, mas a um tempo atrás tentei fazer isso e não funcionava igual, acho que o pessoal do Mikrotik fez incrementação no netfilter que eles usam.

  19. #39

    Padrão Re: Script CGNAT

    Opa. Valeu.

    Eu estava pensando em montar um laboratório para uma caixa de cgnat aqui.

    Se for fazer, vou tentar via srcnat mesmo então.

    Valeu

  20. #40

    Padrão Re: Script CGNAT

    Citação Postado originalmente por fhayashi Ver Post
    Opa @andrecarlim,

    vc que é o cara de linux, kkkkkkkk. Sabe dizer se o netmap do iptables tem como fixar as portas de NAT igual ao RouterOS? Estou caçando aqui mas sem sucesso.
    Faz muito tempo que não mexo com iptables, mas acho que é mais ou menos assim:

    iptables -v -t nat -A PREROUTING -p tcp -s 192.168.100.0/24 -j NETMAP --to 10.0.0.0/24:1024-3023
    iptables -v -t nat -A PREROUTING -p udp -s 192.168.100.0/24 -j NETMAP --to 10.0.0.0/24:1024-3023

    # translations.
    192.168.100.0/24 - 10.0.0.0/24
    192.168.100.1 - 10.0.0.1 sport 1024-3023
    192.168.100.2 - 10.0.0.2 sport 1024-3023
    192.168.100.3 - 10.0.0.3 sport 1024-3023
    192.168.100.... - 10.0.0.... sport 1024-3023
    192.168.100.255 - 10.0.0.255 sport 1024-3023