Para melhor conhecimento sobre CGNAT, primeiro precisamente entender o motivo de utilizá-lo… Voltando um pouco na histórica da Internet, no momento que o protocolo IP (Internet Protocol) foi criado, cerca de 4 bilhões de IPv4 foram disponibilizados para serem distribuídos, naquela época foi visto como um valor satisfatório em relação a necessidade de uso.

Esses prefixos eram utilizados para ‘NAT’ de prefixos de redes internas, RFC1918, que não tinham acesso a Internet. O NAT basicamente traduz o prefixo privado para o público. Com isso conseguimos fazer com que vários clientes consigam navegar por apenas um único IP público e isso em pequena escala, com poucos IP’s privados sendo substituídos por um público, não nos traz problemas, mas em grande escala pode causar problemas de conexão ou falta dela. Conforme a necessidade de distribuição de prefixos foi aumentando, o esgotamento dos prefixos de IPv4 foi chegando cada vez mais próximo do limite.

Com o tempo e o crescimento da internet foi criado um segundo protocolo de endereçamento, chamado IPv6, a fim de contornar o esgotamento do IPv4, nada melhor que bilhões e bilhões de IP’s disponíveis para utilizar. Porém junto a criação do IPv6 surgiu a complexidade de implementação por exigir troca de equipamento que suportasse o protocolo e a adaptação ao protocolo.

Com isso, a migração da internet para o novo protocolo de IP até os dias atuais não está 100%, com isso surgiu a necessidade de criar uma medida provisória para suprir o esgotamento, sem necessitar de alterações na Internet em si e sim diretamente em redes provedores… Com isso o protocolo CGNAT ‘Carrier Grade Network Address Translation’ foi criado para auxiliar nessa adaptação.

Mas o que é CGNAT? Antes de nos aprofundarmos precisamos entender melhor qual o funcionamento dele, como ele ajuda no esgotamento de endereços? O CGNAT consiste em utilizar as portas UDP e TCP dos endereços de IP’s públicos dividindo entre blocos de IP’s privados para que estabeleçam conexões com destinos na Internet, seria um NAT em larga escala.

Existem basicamente dois tipos de CGNAT, o Determinístico e o Bulk Port Allocation. No Determinístico, como no exemplo anterior, nós alocamos uma quantidade de portas TCP/UDP fixas por IPv4 público, ou seja, se fizermos um 100.64.0.0/24 com saída usando um /27 público e pré-fixando 8192 portas para cada assinante, teremos um limite imutável de atendimento de uns 256 assinantes, podemos ver na imagem abaixo um exemplo de tabela de CGNAT determinístico.

Para esse tipo de CGNAT, não existe a quantidade de portas mínimo para cada conexão podendo ser implementado com até 256 portas fixas por conexão, porém quanto menor for a quantidade de portas, mais problemas teremos com destinos inacessíveis e falta de navegação. Para evitar esses problemas, abaixo uma tabela contendo a quantidade necessária de blocos públicos em relação aos blocos privados com o número de portas.

CGNAT determinístico com 1 público para 16 privados, sendo 4 mil portas por conexão.

CGNAT determinístico com 1 público para 32 privados, sendo 2 mil portas por conexão.

Para esse modelo, temos uma página criada pela equipe da made4it que gera script para mikrotik, acessível através do link made4it.com.br/cgnat/ e um artigo explicativo de como configurar que pode ser acessado clicando aqui

Já no modelo Bulk Port Allocation, as portas TCP/UDP são alocadas conforme a necessidade do assinante em blocos de portas de tamanho definidos, o bloco sendo de 256 portas e um assinante usar apenas um bloco economizaremos recursos e com isso poderemos colocar muito mais assinantes com um /27 público. A grande desvantagem desse modelo é porque dependemos de gerar logs do uso das portas e armazenar essa informação para consultas futuras. Na imagem demonstra o cliente 1 utilizando apenas 256 portas para navegar e o cliente 2 utilizando 2 blocos de 256…

Com o surgimento do CGNAT, alguns equipamentos que já suportam a criação de CGNAT, como o Mikrotik, que é um equipamento que não foi criado especificamente para essa finalidade, porém sua parte de CGNAT funciona perfeitamente, se for devidamente configurado. Temos também algumas outras soluções de CGNAT sendo A10, DANOS (Linux), Iptables (Linux), Cisco, Huawei, Juniper, NFWare, 6Wind, entre outros…

Até o processo de adaptação da internet com IPv6 for 100% concluída teremos que utilizar o CGNAT para conseguir contornar a escassez do IPv4. Caso precise de algum auxílio para implementação do protocolo, independente do modelo ou equipamento, a equipe da made4it pode auxiliar na implementação, entre em contato através do e-mail contato@made4it.com.br ou pelo fone (43) 3047-8340 ou (43) 9 8485-4013

Autor. Kevin Wauters.