Alguém fazendo CGNAT com freebsd?
Versão Imprimível
Alguém fazendo CGNAT com freebsd?
Boa noite pessoal,
Recentemente precisei configurar um CGNAT e, apesar de que o script no MK resolve bastante coisa, o caso que eu queria resolver precisava de uma quantidade meio grande de regras. Baseado nos scripts que achei pela internet, inclusive esse do @AndrioPJ (alias, obrigado Andrio), eu criei o meu script para criar as regras da forma que eu queria.
No entanto, desenvolver algo mais complexo no script do MK é difícil, e além disso demora muito tempo para executar. Meu script, gerando 43.000+ regras, demorou quase 20 minutos.
Eu desenvolvi, então, um programinha em FreePascal para gerar script com as regras, para importar diretamente no MK.
Quem quiser usar, está no Github: https://github.com/inquiery/mkcgnat
Anexo 69573
1: Endereço de IP privado inicial
2: Endereço de IP privado final
(endereços normalmente da rede 100.64.0.0/10)
3: A quantidade de endereços de IP privados que será traduzido para cada endereço de IP público.
4: Define um range de endereços de IP público para adicionar a lista de ranges a ser utilizado. Deve clicar em Adicionar após digitar. Somente os endereços adicionados na lista serão utilizados, se somente digitar no campo e não adicionar, o range não será utiliado.
5: Lista de ranges de endereços públicos que serão utilizados.
6: Basta clicar em Gerar depois de configurar para gerar o script.
7: Salva em um arquivo .rsc para fazer upload para a Routerboard e importar com o comando import Exemplo:
Código :
import file=cgnat.rsc
Tenha em mente que, a soma de endereços nos ranges de IPs públicos deve ter no mínimo a quantidade de endereços informada no campo "IPs públicos necessários".
No Github está o código fonte, e na pasta release uma versão já compilada para quem não quer baixar o Lazarus e compilar.
aqui nao sei que fiz de errado nao criou as regra so cria uma
Usando o script ou o programinha?
De mais detalhes que a gente pode tentar ajudar.
olá, peço ajuda de vcs,
minha dúvida é a seguinte:
eu recebo ex um /29 com o ip final do .42 a .46 para ser usado no cgnat vertical usando script
crio o script usando entao do .42 ao .46 gateway .41 e rede .40
agora o que preciso fazer no /ip address do mikrotik que recebe o link na ether1?
coloca a regra dizendo que o ip 42 é referente a ether1, o ip 43 ref. ether1 e assim com os demais?
não colocar regra nenhuma e somente o gateway apontando a rota padrao?
ou somente criar loopback com cada ip publico?
agradeço desde já
Como eu colocaria essa regra em pratica no caso que eu queira um bloco de ip privado 100.64.0.0/20 ou eu queira por /21 ou /22, ( qual o intuito disso, deixa o mikrotik mais enxuto de regras do CGNat ) no caso eu tenho um bloco de ip publico /28 ou /29 e usar 1 ip publico por range e atribuindo 400 portas por cada Range de ips internos privados, que se possível coloca para começa em vez de .0 e .1 começa-se de .2 até 164 !!??
Exemplo:
2.2.2.2 >> 100.64.0.2-100.64.0.164
2.2.2.3 >> 100.64.1.2-100.64.1.164
Bom dia @gbovelar
Adicionei a opção 64:1, e fiz algumas correções.
Inclusive adicionei uma opção de "Mark" nos Ranges públicos, com a possibilidade de adicionar várias marks separadas por ";". Essas Marks criarão regras de roteamento (/ip route rule) para cada bloco com lookup em uma tabela de roteamento com o nome especificado; assim você pode obrigar um range a sair SEMPRE pela mesma rota ou grupo de rotas, ou dar preferência para uma rota ou grupo de rotas sobre outra, bastando para isso adicionar mais de uma Mark no Range.
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.