Página 5 de 5 PrimeiroPrimeiro 12345
+ Responder ao Tópico



  1. #81

    Padrão

    Citação Postado originalmente por inquiery Ver Post
    Adicionei essa opção, está lá no repositório.

    Esse programa desenvolvi para satisfazer uma solução pontual que eu tinha, fiz outro para criar regras "netmap", o que faz com que se reduza bastante a quantidade de regras necessárias. Vou postar também este, porém ainda não testei. Desenvolvi para utilizar no novo roteador CGNAT que vamos colocar aqui.

    Segue o repositório: https://github.com/inquiery/mkcgnat_netmap

    Uma breve explicação abaixo.
    Anexo 69736
    1:
    Você pode criar vários perfis de conjunto de regras e deixar gravado com um nome específico. Por exemplo, um perfil para cada roteador que faz CGNAT, com endereços diferentes.
    Basta digitar um nome qualquer, e clicar no botão com o ícone de um disco. No botão X você exclui o perfil selecionado.

    2:
    Aqui você edita as informações da regra que quer adicionar ou alterar.
    - Endereço Privado: O endereço de rede do bloco CGNAT a ser usado na regra. A quantidade de blocos usada vai depender do campo Divisão.
    - Endereço Público: O endereço de rede do bloco público a ser utilizado.
    - Prefixo: O tamanho do bloco a ser utilizado paa a tradução. Os endereços privados e públicos serão recalculados se o endereço de rede informado nos campos "Endereço Privado" e "Endereço Público" estiverem incorretos.
    - Divisão: A quantidade de endereços privados em cada endereço público. Será utilizado uma quantidade de blocos dos endereços privados igual o valor do campo "Divisão". Se "Divisão" for 32, serão utilizados 32 blocos de endereços privados para o bloco de endereço público, iniciando pelo endereço indicado no campo "Endereço Privado".

    3:
    Lista das regras adicionadas. Pode-se adicionar várias regras para cumprir o resultado desejado. Cada item adicionado, porém, resultará num novo conjunto de regras netmap.

    4:
    Apresenta um sumário da regra selecionada, indicando o primeiro e o último endereço privado e público que será utilizado por essa regra. Facilita na confecção do conjunto de regras caso se vá utilizar mais de uma.

    5:
    Clicando no botão "Gerar", será gerado o script com o conjunto de regras para importar na routerboard.
    O botão "Resumo", se baseia no número a sua esquerda - que é um prefixo de rede - e gera um resumo dos blocos de endereços privados utilizados dentro de cada bloco de endereço público, e cria um sumário resumindo os blocos de rede privada em blocos menos até o prefixo indicado no campo ao lado do botão.

    6:
    A caixa "Calcular Netmaps" serve para facilitar a tarefa de verificação de tradução de endereços.
    Você pode indicar um endereço privado qualquer, que esteja dentro das regras, e ele calculará qual o endereço público aquele endereço privado utilizará.
    Também pode-se indicar um endereço público, que esteja dentro das regras, e um número de porta, e será calculado qual o endereço privado que utiliza aquele IP público com a porta específica indicada.

    7:
    Salva um arquivo de script para importar na routerboard.






    Amigo caso aconteça um crime cibernético, como irei localizar o cliente, já que esse programa defini as portas por bloco de IP

  2. #82

    Padrão Re: Script CGNAT

    Citação Postado originalmente por awswallace Ver Post
    Amigo caso aconteça um crime cibernético, como irei localizar o cliente, já que esse programa defini as portas por bloco de IP
    Boa noite

    Para isso coloquei aquela box lá na direita em cima, "Calcular Netmaps". Se você precisar identificar o cliente, você digita o IP público externo e a porta de origem da conexão, e clica em "Calc", e o programa vai calcular o IP privado que utiliza aquele IP público na porta que vc informou.

    Por exemplo, você recebe um e-mail do CERT informando que alguém ta com um malware (comum receber esses e-mails), e o e-mail do CERT ele vai te informar a data e hora, o IP público de origem/destino e a porta de origem/destino.

    algo assim:
    Código :
    ======================================================================
    Formato: "asn","ip","timestamp","malware","src_port","dst_ip","dst_port","dst_host","proto"
     
    "626262","4.100.200.6","2019-07-25 00:12:07","necurs","2724","181.182.183.184","80","","tcp"
    "626262","4.100.200.6","2019-07-28 21:25:14","necurs","2754","181.182.183.184","80","","tcp"
    ======================================================================

    Você vai colocar ali no programa, na caixa de "Calcular Netmaps", no campo "Público", o IP de origem, que é neste caso 4.100.200.6 e a porta de origem, que neste caso foram as 2724 e 2754 (digite uma porta por vez, pois cada linha é um registro de conexão que tem que ser pesquisado individualmente), e clica em Calc. Logo abaixo, vai aparecer um resumo que vai informar qual o IP privado que utiliza aquele IP público naquela porta de origem.

    Com a informação do IP privado e a data e hora da conexão, vc vai pesquisar no seus logs de conexão qual estava utilizando aquele IP privado naquele momento.

  3. #83

    Padrão

    Citação Postado originalmente por inquiery Ver Post
    Adicionei essa opção, está lá no repositório.

    Esse programa desenvolvi para satisfazer uma solução pontual que eu tinha, fiz outro para criar regras "netmap", o que faz com que se reduza bastante a quantidade de regras necessárias. Vou postar também este, porém ainda não testei. Desenvolvi para utilizar no novo roteador CGNAT que vamos colocar aqui.

    Segue o repositório: https://github.com/inquiery/mkcgnat_netmap

    Uma breve explicação abaixo.
    Anexo 69736
    1:
    Você pode criar vários perfis de conjunto de regras e deixar gravado com um nome específico. Por exemplo, um perfil para cada roteador que faz CGNAT, com endereços diferentes.
    Basta digitar um nome qualquer, e clicar no botão com o ícone de um disco. No botão X você exclui o perfil selecionado.

    2:
    Aqui você edita as informações da regra que quer adicionar ou alterar.
    - Endereço Privado: O endereço de rede do bloco CGNAT a ser usado na regra. A quantidade de blocos usada vai depender do campo Divisão.
    - Endereço Público: O endereço de rede do bloco público a ser utilizado.
    - Prefixo: O tamanho do bloco a ser utilizado paa a tradução. Os endereços privados e públicos serão recalculados se o endereço de rede informado nos campos "Endereço Privado" e "Endereço Público" estiverem incorretos.
    - Divisão: A quantidade de endereços privados em cada endereço público. Será utilizado uma quantidade de blocos dos endereços privados igual o valor do campo "Divisão". Se "Divisão" for 32, serão utilizados 32 blocos de endereços privados para o bloco de endereço público, iniciando pelo endereço indicado no campo "Endereço Privado".

    3:
    Lista das regras adicionadas. Pode-se adicionar várias regras para cumprir o resultado desejado. Cada item adicionado, porém, resultará num novo conjunto de regras netmap.

    4:
    Apresenta um sumário da regra selecionada, indicando o primeiro e o último endereço privado e público que será utilizado por essa regra. Facilita na confecção do conjunto de regras caso se vá utilizar mais de uma.

    5:
    Clicando no botão "Gerar", será gerado o script com o conjunto de regras para importar na routerboard.
    O botão "Resumo", se baseia no número a sua esquerda - que é um prefixo de rede - e gera um resumo dos blocos de endereços privados utilizados dentro de cada bloco de endereço público, e cria um sumário resumindo os blocos de rede privada em blocos menos até o prefixo indicado no campo ao lado do botão.

    6:
    A caixa "Calcular Netmaps" serve para facilitar a tarefa de verificação de tradução de endereços.
    Você pode indicar um endereço privado qualquer, que esteja dentro das regras, e ele calculará qual o endereço público aquele endereço privado utilizará.
    Também pode-se indicar um endereço público, que esteja dentro das regras, e um número de porta, e será calculado qual o endereço privado que utiliza aquele IP público com a porta específica indicada.

    7:
    Salva um arquivo de script para importar na routerboard.

    muito obrigado

  4. #84

    Padrão Re: Script CGNAT

    Ainda nai entendi... fiz essa calculadora abaxio. alguem pode me ajudar?? nao funcionaram.
    Arquivos Anexos Arquivos Anexos

  5. #85

    Padrão

    Citação Postado originalmente por inquiery Ver Post
    Boa noite

    Para isso coloquei aquela box lá na direita em cima, "Calcular Netmaps". Se você precisar identificar o cliente, você digita o IP público externo e a porta de origem da conexão, e clica em "Calc", e o programa vai calcular o IP privado que utiliza aquele IP público na porta que vc informou.

    Por exemplo, você recebe um e-mail do CERT informando que alguém ta com um malware (comum receber esses e-mails), e o e-mail do CERT ele vai te informar a data e hora, o IP público de origem/destino e a porta de origem/destino.

    algo assim:
    Código :
    ======================================================================
    Formato: "asn","ip","timestamp","malware","src_port","dst_ip","dst_port","dst_host","proto"
     
    "626262","4.100.200.6","2019-07-25 00:12:07","necurs","2724","181.182.183.184","80","","tcp"
    "626262","4.100.200.6","2019-07-28 21:25:14","necurs","2754","181.182.183.184","80","","tcp"
    ======================================================================

    Você vai colocar ali no programa, na caixa de "Calcular Netmaps", no campo "Público", o IP de origem, que é neste caso 4.100.200.6 e a porta de origem, que neste caso foram as 2724 e 2754 (digite uma porta por vez, pois cada linha é um registro de conexão que tem que ser pesquisado individualmente), e clica em Calc. Logo abaixo, vai aparecer um resumo que vai informar qual o IP privado que utiliza aquele IP público naquela porta de origem.

    Com a informação do IP privado e a data e hora da conexão, vc vai pesquisar no seus logs de conexão qual estava utilizando aquele IP privado naquele momento.

    Boa tarde.

    Como funciona a lógica deste cálculo?

    É algo como: Os primeiro ipv4 privado, para as primeiras portas dos primeiro ipv4 público?

  6. #86

    Padrão Re: Script CGNAT

    Citação Postado originalmente por viniciusmoll Ver Post
    Boa tarde.

    Como funciona a lógica deste cálculo?

    É algo como: Os primeiro ipv4 privado, para as primeiras portas dos primeiro ipv4 público?
    Bom dia,

    A lógica é a do netmap mesmo, considerando que ele vai fazer isso em um range de portas.
    Por exemplo, pegamos varios IPs privados, e traduzimos sempre no mesmo IP público, mas em ranges de portas diferentes.

    100.64.0.0/24 traduzido para xxx.yyy.zzz.0/24

    Neste caso, são 256 endereços privados, traduzidos nos respectivos endereços de rede no bloco público, de forma "binária", ou seja:
    100.64.0.0 = xxx.yyy.zzz.0
    100.64.0.1 = xxx.yyy.zzz.1
    100.64.0.2 = xxx.yyy.zzz.2
    100.64.0.3 = xxx.yyy.zzz.3
    e assim por diante.

    Claro que essa é uma forma facil de vizualizar, mas por exemplo:

    100.64.0.128/25 traduzido para xxx.yyy.zzz.0/25. É a mesma coisa, o primeiro endereço da rede 100.64.0.128/25 será traduzido para o primeiro endereço da rede xxx.yyy.zzz.0/25, o segundo endereço de 100.64.0.128/25 para o segundo de xxx.yyy.zzz.0/25, e assim por diante:

    100.64.0.128 = xxx.yyy.zzz.0
    100.64.0.129 = xxx.yyy.zzz.1
    100.64.0.130 = xxx.yyy.zzz.2
    100.64.0.131 = xxx.yyy.zzz.3
    e assim por diante.

    Então, em resumo, o primeiro endereço da rede de origem é traduzido para o primeiro endereço da rede de destino (o to-address), o segundo endereço da rede de origem, para o segundo endereço da rede de destino.

    No final das contas, é ainda um pouco mais complicado que isso, porque na realidade o netmap traduz um "conjunto de ip" para outro, e esse conjunto de IP pode ser um range, por exemplo 100.64.0.20-100.64.0.147, que no caso são 128 endereços, e você poderia usar netmap para traduzir esse range para um bloco /25, no nat 1:1 do netmap (primeiro da origem no primeiro do destino, segundo da origem no segundo do destino, etc).


    Então, utilizando esse esquema, você traduz uma lista de redes privadas, para uma única rede pública. Só que, somente desta forma, você não teria como identificar o usuário do IP público num log de acesso, consultando seu log de conexão (como exige a legislação), pois se você decidiu traduzir, por exemplo, 32 redes privadas, para uma rede pública, ao tentar identificar um usuário de um log de acesso qualquer, consultando o seu log de conexão, você teria 32 possíveis usuários. Para poder fazer essa consulta de forma específica, você então traduz a porta de origem de cada um dos blocos de origem, para um range novo e diferente para cada bloco. Assim, no log de acesso você terá a informação da porta de origem da conexão, como no exemplo dos logs do CERT que ele envia por e-mail. E a porta de origem, vai estar então restrita dentro de um bloco específico de rede private, dentro do qual você pode buscar o usuário específico daquele acesso.

    Por exemplo:

    100.64.0.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 2001-7000
    100.64.1.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 7001-12000
    100.64.2.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 12001-17000
    100.64.3.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 17001-22000
    100.64.4.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 22001-27000
    100.64.5.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 27001-32000
    100.64.6.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 32001-37000
    100.64.7.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 37001-42000
    100.64.8.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 42001-47000
    100.64.9.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 47001-52000
    100.64.10.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 52001-57000
    100.64.11.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 57001-62000

    Neste caso, você está traduzindo além do endereço de origem, a porta de origem também, porém. Como pode observar, cada grupo de endereço privado, vai ter a porta de origem traduzida em um range de 5000 portas, e o range é diferente para cada rede privada, mas todas vão ter o endereço de IP traduzido para o mesmo IP público. Por exemplo:

    100.64.0.1 = xxx.yyy.0.1
    100.64.1.1 = xxx.yyy.0.1
    100.64.2.1 = xxx.yyy.0.1
    e assim por diante.

    Ou seja, cada um daqueles blocos privados /24 vai ser traduzido para o mesmo bloco público /24, o que vai fazer que (neste exemplo) 12 clientes (um de cada rede privada) utilize o mesmo endereço público, porém, em um range de portas diferente.
    E, considerando que você liberou 5000 portas neste caso, para cada range, isso quer dizer que o usuário vai ter 5000 conexões simultâneas disponíveis, o que é o suficiente para um usuário residencial.

    No final das contas, esse exemplo utilizei 5000 portas por usuário, você pode utilizar 2000 por exemplo, para economizar endereços públicos. Com 2000 portas por usuário, da para colocar 32 usuários por IP público. Com 1000 portas, você pode colocar até 64 usuários por IP público. Esse calculo do range de portas o programinha vai fazer sozinho, baseado na Divisão que você escolher.

    O calculo é esse, depois que a gene consegue dar a volta ao redor dele, não parece tão complexo.

  7. #87

    Padrão

    Citação Postado originalmente por inquiery Ver Post
    Bom dia,

    A lógica é a do netmap mesmo, considerando que ele vai fazer isso em um range de portas.
    Por exemplo, pegamos varios IPs privados, e traduzimos sempre no mesmo IP público, mas em ranges de portas diferentes.

    100.64.0.0/24 traduzido para xxx.yyy.zzz.0/24

    Neste caso, são 256 endereços privados, traduzidos nos respectivos endereços de rede no bloco público, de forma "binária", ou seja:
    100.64.0.0 = xxx.yyy.zzz.0
    100.64.0.1 = xxx.yyy.zzz.1
    100.64.0.2 = xxx.yyy.zzz.2
    100.64.0.3 = xxx.yyy.zzz.3
    e assim por diante.

    Claro que essa é uma forma facil de vizualizar, mas por exemplo:

    100.64.0.128/25 traduzido para xxx.yyy.zzz.0/25. É a mesma coisa, o primeiro endereço da rede 100.64.0.128/25 será traduzido para o primeiro endereço da rede xxx.yyy.zzz.0/25, o segundo endereço de 100.64.0.128/25 para o segundo de xxx.yyy.zzz.0/25, e assim por diante:

    100.64.0.128 = xxx.yyy.zzz.0
    100.64.0.129 = xxx.yyy.zzz.1
    100.64.0.130 = xxx.yyy.zzz.2
    100.64.0.131 = xxx.yyy.zzz.3
    e assim por diante.

    Então, em resumo, o primeiro endereço da rede de origem é traduzido para o primeiro endereço da rede de destino (o to-address), o segundo endereço da rede de origem, para o segundo endereço da rede de destino.

    No final das contas, é ainda um pouco mais complicado que isso, porque na realidade o netmap traduz um "conjunto de ip" para outro, e esse conjunto de IP pode ser um range, por exemplo 100.64.0.20-100.64.0.147, que no caso são 128 endereços, e você poderia usar netmap para traduzir esse range para um bloco /25, no nat 1:1 do netmap (primeiro da origem no primeiro do destino, segundo da origem no segundo do destino, etc).


    Então, utilizando esse esquema, você traduz uma lista de redes privadas, para uma única rede pública. Só que, somente desta forma, você não teria como identificar o usuário do IP público num log de acesso, consultando seu log de conexão (como exige a legislação), pois se você decidiu traduzir, por exemplo, 32 redes privadas, para uma rede pública, ao tentar identificar um usuário de um log de acesso qualquer, consultando o seu log de conexão, você teria 32 possíveis usuários. Para poder fazer essa consulta de forma específica, você então traduz a porta de origem de cada um dos blocos de origem, para um range novo e diferente para cada bloco. Assim, no log de acesso você terá a informação da porta de origem da conexão, como no exemplo dos logs do CERT que ele envia por e-mail. E a porta de origem, vai estar então restrita dentro de um bloco específico de rede private, dentro do qual você pode buscar o usuário específico daquele acesso.

    Por exemplo:

    100.64.0.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 2001-7000
    100.64.1.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 7001-12000
    100.64.2.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 12001-17000
    100.64.3.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 17001-22000
    100.64.4.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 22001-27000
    100.64.5.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 27001-32000
    100.64.6.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 32001-37000
    100.64.7.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 37001-42000
    100.64.8.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 42001-47000
    100.64.9.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 47001-52000
    100.64.10.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 52001-57000
    100.64.11.0/24 qualquer porta de origem - traduz para xxx.yyy.0.0/24 e porta de origem 57001-62000

    Neste caso, você está traduzindo além do endereço de origem, a porta de origem também, porém. Como pode observar, cada grupo de endereço privado, vai ter a porta de origem traduzida em um range de 5000 portas, e o range é diferente para cada rede privada, mas todas vão ter o endereço de IP traduzido para o mesmo IP público. Por exemplo:

    100.64.0.1 = xxx.yyy.0.1
    100.64.1.1 = xxx.yyy.0.1
    100.64.2.1 = xxx.yyy.0.1
    e assim por diante.

    Ou seja, cada um daqueles blocos privados /24 vai ser traduzido para o mesmo bloco público /24, o que vai fazer que (neste exemplo) 12 clientes (um de cada rede privada) utilize o mesmo endereço público, porém, em um range de portas diferente.
    E, considerando que você liberou 5000 portas neste caso, para cada range, isso quer dizer que o usuário vai ter 5000 conexões simultâneas disponíveis, o que é o suficiente para um usuário residencial.

    No final das contas, esse exemplo utilizei 5000 portas por usuário, você pode utilizar 2000 por exemplo, para economizar endereços públicos. Com 2000 portas por usuário, da para colocar 32 usuários por IP público. Com 1000 portas, você pode colocar até 64 usuários por IP público. Esse calculo do range de portas o programinha vai fazer sozinho, baseado na Divisão que você escolher.

    O calculo é esse, depois que a gene consegue dar a volta ao redor dele, não parece tão complexo.

    Amigo primeiramente parabéns pelo tópico, me diz uma coisa, consegue colocar no aplicado opção de colocar nome da interface, assim podemos setar a interface de saida, fazendo com que o nat fique apenas pra rede externa.
    Se possivel inclui nos 2 aplicativos.

  8. #88

    Padrão Re: Script CGNAT

    Amigos meu cenário é o seguinte eu tenho 3 Link do mesmo provedor que compro Link e faço um load balance:

    LINK 1: IP FIXO (PUBLICO)
    LINK 2: IP REDE
    LINK 3: IP REDE

    SEGUE ABAIXO IMAGEM ANEXA.
    O modo de autenticação é PPPOE, só tenho uma RB3011, que é onde chega link e autentica clientes e nela que faço balance tbm.

    Clique na imagem para uma versão maior

Nome:	         mk.png
Visualizações:	318
Tamanho: 	105,1 KB
ID:      	69791

    Nesse caso como eu deveria, proceder para fazer meu CGNAT
    Última edição por amaurybrito; 28-09-2019 às 16:51.

  9. #89

    Padrão Re: Script CGNAT

    Citação Postado originalmente por leviferreira Ver Post
    Amigo primeiramente parabéns pelo tópico, me diz uma coisa, consegue colocar no aplicado opção de colocar nome da interface, assim podemos setar a interface de saida, fazendo com que o nat fique apenas pra rede externa.
    Se possivel inclui nos 2 aplicativos.
    Boa tarde,

    Adicionei essas opções. Obrigado.

  10. #90

    Padrão Re: Script CGNAT

    Citação Postado originalmente por amaurybrito Ver Post
    Amigos meu cenário é o seguinte eu tenho 3 Link do mesmo provedor que compro Link e faço um load balance:


    LINK 1: IP FIXO
    LINK 2: IP PRIVADO
    LINK 3: IP PRIVADO


    Nesse caso como eu deveria, proceder para fazer meu CGNAT

    Se você não tem AS, e vai usar blocos de IPs fornecidos pelos operadoras/provedores que te fornecem o link, você vai precisar fazer de uma forma m pouco mais complexa mesmo, com marcações em cada link para entrar num conjunto de regras de CGNAT somente para aquele link.

    Neste caso, não seria mais interessante você contratar um suporte se você não consegue fazer?

  11. #91

    Padrão Re: Script CGNAT

    sim creio que terei que contratar suporte atualizei o post coloquei uma img

  12. #92

    Padrão Re: Script CGNAT

    Olá pessoal,

    Ja usei o script desse post com sucesso (aproveito para parabenizar os amigos que contribuíram com o código).

    Usei fazendo PPPoE+CGNAT na mesma RB.
    E se for usar RBs separadas? Uma para PPPoE e outra pra CGNAT?

    Funciona também? ou seja, ligo as duas via OSPF e na segunda RB depois do PPPoE subo as regras de CGNAT ?

  13. #93

    Padrão Re: Script CGNAT

    Como adicionar esta regra para adicionar um /20(4096 ips) privados para /25(128 ips) público?
    Preciso adicionar regra por regra manualmente ou tem como a por de uma única vez ?

  14. #94

    Padrão Re: Script CGNAT

    Citação Postado originalmente por ajack Ver Post
    Olá pessoal,


    Ja usei o script desse post com sucesso (aproveito para parabenizar os amigos que contribuíram com o código).


    Usei fazendo PPPoE+CGNAT na mesma RB.
    E se for usar RBs separadas? Uma para PPPoE e outra pra CGNAT?


    Funciona também? ou seja, ligo as duas via OSPF e na segunda RB depois do PPPoE subo as regras de CGNAT ?

    Não precisa nem usar OSPF neste caso, a não ser que você tenha uma rede muito grande que precise. O mais fácil seria só configurar uma rota padrão na RB PPPoE usando a RB CGNAT como gateway (cria uma rede /30 entre as duas para esse fim).

    No pool que você usar para o PPPoE, cria uma rota na RB CGNAT para a RB PPPoE.

  15. #95

    Padrão Re: Script CGNAT

    Citação Postado originalmente por brunocemeru Ver Post
    Como adicionar esta regra para adicionar um /20(4096 ips) privados para /25(128 ips) público?
    Preciso adicionar regra por regra manualmente ou tem como a por de uma única vez ?
    Usando o programinha de CGNAT netmap, você poderia considerar 16 blocos /24. Por exemplo, digamos que seu bloco é 200.100.0.0/20, neste caso você tem os seguintes blocos /24 dentro desse /20:

    200.100.0.0/24
    200.100.1.0/24
    200.100.2.0/24
    200.100.3.0/24
    200.100.4.0/24
    200.100.5.0/24
    200.100.6.0/24
    200.100.7.0/24
    200.100.8.0/24
    200.100.9.0/24
    200.100.10.0/24
    200.100.11.0/24
    200.100.12.0/24
    200.100.13.0/24
    200.100.14.0/24
    200.100.15.0/24

    Então você adicionaria 16 regras no programa. Se por exemplo, você escolher uma divisão de 1:32 (o que da 2015 portas por regra), cada bloco /24 de IP públicos serão direcionados a 32 blocos /24 de IPs privados, ficando assim:

    200.100.0.0/24 -> 100.64.0.0 (vai usar 100.64.0.0 até 100.64.31.255)
    200.100.1.0/24 -> 100.64.32.0 (vai usar 100.64.32.0 até 100.64.63.255)
    200.100.2.0/24 -> 100.64.64.0 (vai usar 100.64.64.0 até 100.64.95.255)
    200.100.3.0/24 -> 100.64.96.0 (vai usar 100.64.96.0 até 100.64.127.255)
    200.100.4.0/24 -> 100.64.128.0 (vai usar 100.64.128.0 até 100.64.159.255)
    200.100.5.0/24 -> 100.64.160.0 (vai usar 100.64.160.0 até 100.64.191.255)
    200.100.6.0/24 -> 100.64.192.0 (vai usar 100.64.192.0 até 100.64.223.255)
    200.100.7.0/24 -> 100.64.224.0 (vai usar 100.64.224.0 até 100.64.255.255)
    200.100.8.0/24 -> 100.65.0.0 (vai usar 100.65.0.0 até 100.65.31.255)
    200.100.9.0/24 -> 100.65.32.0 (vai usar 100.65.32.0 até 100.65.63.255)
    200.100.10.0/24 -> 100.65.64.0 (vai usar 100.65.64.0 até 100.65.95.255)
    200.100.11.0/24 -> 100.65.96.0 (vai usar 100.65.96.0 até 100.65.127.255)
    200.100.12.0/24 -> 100.65.128.0 (vai usar 100.65.128.0 até 100.65.159.255)
    200.100.13.0/24 -> 100.65.160.0 (vai usar 100.65.160.0 até 100.65.191.255)
    200.100.14.0/24 -> 100.65.192.0 (vai usar 100.65.192.0 até 100.65.223.255)
    200.100.15.0/24 -> 100.65.224.0 (vai usar 100.65.224.0 até 100.65.255.255)

    Clique na imagem para uma versão maior

Nome:	         netmap.jpg
Visualizações:	230
Tamanho: 	568,9 KB
ID:      	70064
    Depois, só clicar para gerar as regras, e aplicar pelo terminal na RB CGNAT.


    Você pode também adicionar só 1 item, com o bloco /20 inteiro

    200.100.0.0/20 -> 100.64.0.0 (vai usar 100.64.0.0 até 100.64.255.255).

    Clique na imagem para uma versão maior

Nome:	         netmap2.jpg
Visualizações:	181
Tamanho: 	545,7 KB
ID:      	70065

    Neste caso, você terá menos regras, porém vale a pena comparar o desempenho (o uso de CPU) dos dois casos, pois não sei a diferença de performance do netmap quando utiliza blocos menores e maiores.

  16. #96

    Padrão Re: Script CGNAT

    Fico grato pela resposta.
    Eu não consegui usar o programa.
    É não quis insistir porque imagino que as regras em netmap não atendam minha necessidade caso receba uma futura notificação e tente localizar um possível cliente infrator.
    Talvez possa está entendendo errado,mas queria usar a regra do script ,essa sei que atende.

  17. #97

    Padrão Re: Script CGNAT

    Citação Postado originalmente por brunocemeru Ver Post
    Fico grato pela resposta.
    Eu não consegui usar o programa.
    É não quis insistir porque imagino que as regras em netmap não atendam minha necessidade caso receba uma futura notificação e tente localizar um possível cliente infrator.
    Talvez possa está entendendo errado,mas queria usar a regra do script ,essa sei que atende.
    Ah sim. Mas o netmap atende sim, para isso serve aquele campo lá em cima de "Calcular netmap". Inclusive aumenta o desempenho de modo geral comparado com o modelo de src-nat.

    Vou dar uma olhada no script depois pra ver como usar com os parametros que vc quer.

  18. #98

    Padrão Re: Script CGNAT

    Obrigado pela ajuda amigo.
    Apliquei as configurações em um mk de teste e pude ver como funciona.
    Consegui entender a lógica.

  19. #99

    Padrão

    Estou precisando ajuda para usar cgnat em minha rede porem tentando o script eo programa sem sucesso venho pedir aos amigos que posam me ajudar a colocar para funcionar minha rede em cgnat meu cenario eo seguinte
    tenho o ip dos clientes 100.64.0.0/24
    tenho o mkauth com ip 72.31.255.2
    tenho uma rede interna em minha casa e escritorio 170.0.0.0/24
    e um bloco de ip xxx.xxx.xxx.50/28 gw xxx.xxx.xxx.49
    como ficaria essa rede desculpem minha iguinorancia mais pfv to quabrando a cabeça aqui tanto no script como no programa e nada desde ja agradeço aos amigos.

  20. #100

    Padrão

    Citação Postado originalmente por AndrioPJ Ver Post
    Pessoal,

    No Site da Mikrotik existe um script para criação das Regras de CGNAT.
    Acontece que ao utilizar esse script, se colocamos para criar as regras para 64 IPs, ele cria uma regra a mais. Se colocamos para 32 IPs, ele cria regra a menos.

    Como não achei algum outro script funcional, acabei criando o meu próprio, Baseado no que tem disponível no wiki da Mikrotik e em algumas dicas nos fóruns.

    Segue abaixo Script para criação das Regras de CGNAT.

    Nesse Script precisamos informar o Network do IP privado (IP/26, /27, /28, /29), quantos IPs queremos por regra/jump, o IP Publico, quantidade de portas alocada para cada IP...
    A partir dai, ele calcula automaticamente os IPs disponíveis nesse network configurado, cria 2 Regras (uma TCP e uma UDP) para cada IP, já dividido e alocado a quantidade de Portas especificada para cada IP.
    Bem como Para ajudar a diminuir a carga de CPU, ele já cria algumas regras de jump's (Baseado na quantidade de IPs que você configurou/disse que quer por regra).

    Como usar?
    1 - Copie o código abaixo e execute no terminal do seu MK
    Código :
    :global addNatRules do={
    :global srcStart [:pick $NetworkIP 0 [:find $NetworkIP "/"]]
    :global srcStart2 $srcStart
    :global QtdRegras 0
    :global QtdRegras2 0
    :global portStop ($portStart + $portsPerAddr - 1)
      /ip firewall nat add chain=srcnat action=jump jump-target=$NewChain comment="Inicio CGNAT - By Andriopj" src-address="$NetworkIP"
            :log info "O Network é $NetworkIP";
            :log info "Iniciando em $srcStart";
    :put "Current IP: $srcStart\r\nTarget: $NetworkIP\r\n"
      :while ($srcStart in $NetworkIP) do={
            :log info "IP atual é $srcStart";
        /ip firewall nat add chain=$NewChain action=jump jump-target="$NewChain-$($QtdRegras)" src-address="$srcStart-$($srcStart + ($IPsPerRule - 1 ))"
            :set QtdRegras ($QtdRegras + 1);
            :set srcStart ($srcStart + $IPsPerRule);
      }
            :log info "Qtd de Regras Jump criadas: $QtdRegras";
      :while ($srcStart2 in $NetworkIP) do={
            :for i from=1 to=$IPsPerRule do={
             /ip firewall nat add chain="$NewChain-$QtdRegras2" action=src-nat comment="CGNAT IP $srcStart2 Porta $portStart - $portStop - By Andriopj" protocol=tcp src-address=$srcStart2 to-address=$toPublicIP to-ports="$portStart-$portStop"
             /ip firewall nat add chain="$NewChain-$QtdRegras2" comment="CGNAT IP $srcStart2 Porta $portStart - $portStop - By Andriopj" action=src-nat protocol=udp src-address=$srcStart2 to-address=$toPublicIP to-ports="$portStart-$portStop"
            :set srcStart2 ($srcStart2 + 1);
            :set $portStart ($portStop + 1);
            :set $portStop ($portStart + $portsPerAddr - 1);
            :set i ($i + 1)
            }
            :set QtdRegras2 ($QtdRegras2 + 1);
      }
    }

    2 - Edite o código abaixo, Copie e execute no terminal do seu MK.
    Caso precise criar as regras para bastante IPs, basta repetir a Regra abaixo sempre alterando o Network e o IP Publico.
    Código :
    $addNatRules NewChain=cgnat NetworkIP=100.64.200.0/27 IPsPerRule=8 toPublicIP=2.2.2.2 portStart=1025 portsPerAddr=2000

    Variáveis:
    - NewChain = Nome desejado para o Chain das regras CGNAT, caso for rodar a regra várias vezes no mesmo concentrador, recomendo alterar esse nome tbm. Basta colocar um numero na frente.
    - NetworkIP = Bloco (Network /26, /27, /28, /29) Privado que será usado na criação das regras.
    - IPsPerRule = Quantidade de IPs (2, 4, 8, 16, 32, 64) desejado por Regra Jump
    - toPublicIP = IP Publico que será dividido
    - portStart = Inicio das Portas
    - portsPerAddr = Quantidade de Portas por IP Privado.


    Lembre-se que existem apenas 64536 portas.
    Se colocar um Network com 64 IPs e configurar 2000 portas por IP, vai ultrapassar a quantidade de portas disponíveis.

    Fonts:
    https://wiki.mikrotik.com/wiki/Manual:IP/Firewall/NAT
    https://wiki.mikrotik.com/wiki/Manua...pting-examples
    Estou tentando aplica em um bloco de ip/29 mas não estou conseguindo estou seguindo como estar no script vou mostrar as alteração que diz no script onde pode estar errado?

    :global addNatRules do={
    :global srcStart [ick $NetworkIP 0 [:find $NetworkIP "128.201.97.216/29"]]
    :global srcStart2 $srcStart
    :global QtdRegras 30
    :global QtdRegras2 30
    :global portStop ($portStart + $portsPerAddr - 4000)
    /ip firewall nat add chain=srcnat action=jump jump-target=$NewChain comment="Inicio CGNAT - By Andriopj" src-address="$NetworkIP"
    :log info "O Network é $NetworkIP";
    :log info "Iniciando em $srcStart";
    ut "Current IP: $srcStart\r\nTarget: $NetworkIP\r\n"
    :while ($srcStart in $NetworkIP) do={
    :log info "IP atual é $srcStart";
    /ip firewall nat add chain=$NewChain action=jump jump-target="$NewChain-$($QtdRegras)" src-address="$srcStart-$($srcStart + ($IPsPerRule - 8 ))"
    :set QtdRegras ($QtdRegras + 1);
    :set srcStart ($srcStart + $IPsPerRule);
    }
    :log info "64000: $QtdRegras";
    :while ($srcStart2 in $NetworkIP) do={
    :for i from=1 to=$IPsPerRule do={
    /ip firewall nat add chain="$NewChain-$QtdRegras2" action=src-nat comment="CGNAT IP $srcStart2 Porta $portStart - $portStop - By Andriopj" protocol=tcp src-address=$srcStart2 to-address=$toPublicIP to-ports="$portStart-$portStop"
    /ip firewall nat add chain="$NewChain-$QtdRegras2" comment="CGNAT IP $srcStart2 Porta $portStart - $portStop - By Andriopj" action=src-nat protocol=udp src-address=$srcStart2 to-address=$toPublicIP to-ports="$portStart-$portStop"
    :set srcStart2 ($srcStart2 + 1);
    :set $portStart ($portStop + 1);
    :set $portStop ($portStart + $portsPerAddr - 4000);
    :set i ($i + 1)
    }
    :set QtdRegras2 ($QtdRegras2 + 1);
    }
    }