CGNAT é o compartilhamento de um IPv4 público entre vários assinantes, e virou inevitável: a LACNIC esgotou o estoque geral de IPv4 e comprar prefixo no mercado secundário custa caro por endereço. O problema começa quando o CGNAT é dimensionado no olho e os limites aparecem em produção, na forma de porta esgotada em horário de pico ou de um ofício judicial que o log não consegue responder.
A conta correta cabe em uma página. Vamos fazê-la para um ISP de 40 mil assinantes, um porte comum no interior do Centro-Oeste.
A obrigação que define o projeto
O Marco Civil da Internet (Lei 12.965/2014, art. 13) obriga o provedor a guardar registros de conexão por 12 meses. Com CGNAT, "registro de conexão" precisa permitir responder: qual assinante estava usando o IP público X, porta Y, no instante Z.
O jeito ingênuo de responder é logar cada sessão NAT. Um assinante doméstico abre algumas dezenas de milhares de sessões por dia; 40 mil assinantes geram na casa de bilhões de linhas por mês. Guardar 12 meses disso significa manter dezenas de terabytes de log consultáveis sob prazo judicial, um custo que a alocação determinística de portas, descrita a seguir, elimina quase por completo.
A alocação determinística dispensa o log de sessões
Na alocação determinística de portas em blocos (PBA, port block allocation), cada assinante recebe uma faixa fixa de portas de um IP público, calculada por fórmula a partir do seu IP privado. A tradução deixa de ser sorteio e vira função, e o mapeamento pode ser reconstruído a qualquer momento sem log nenhum, só com a configuração e o cadastro de qual assinante tinha qual IP privado.
A conta de capacidade:
portas utilizáveis por IP público: 64 512 (1024–65535)
bloco por assinante: 2 048 portas
assinantes por IP público: 31
IPs para 40 mil assinantes: 1 291 → um /21 (2 048 IPs) com folga
lado privado: 100.64.0.0/10 (RFC 6598, reservado para CGNAT)
Duas decisões merecem atenção nessa tabela. Primeiro, o tamanho do bloco: 2.048 portas atendem o assinante doméstico típico, cujo pico fica entre 300 e 1.000 sessões simultâneas. Blocos de 512 espremem mais assinantes por IP, mas geram esgotamento de porta para quem usa muitas conexões, e esse chamado é difícil de diagnosticar. Segundo, a folga: os 1 291 IPs necessários equivalem a um /21,7, e arredondar para o /21 inteiro deixa 59% de sobra de propósito. Dimensione pela base projetada para os próximos 24 meses, porque a base de hoje estará defasada antes da primeira expansão.
O que ainda se loga: a atribuição do IP privado ao assinante (que o servidor PPPoE ou DHCP já registra) e, se o equipamento alocar blocos dinâmicos adicionais em pico, cada alocação de bloco. Esse segundo registro fica em poucas linhas por assinante por dia, contra dezenas de milhares no log por sessão. A resposta ao ofício sai de um cruzamento de duas tabelas pequenas.
O que o equipamento precisa suportar
Antes de fechar a compra ou reaproveitar o roteador que existe, verifique três comportamentos:
- PBA determinístico de fato, com a fórmula documentada pelo fabricante. "Suporta CGNAT" sem determinismo devolve o problema do log.
- EIM/EIF (endpoint-independent mapping e filtering): mantém o mesmo mapeamento externo independentemente do destino, o que faz jogos, VoIP e videochamada funcionarem atrás do CGNAT. Sem isso, o suporte recebe a fatura em chamados.
- Contadores de esgotamento de bloco exportáveis para a monitoração. Assinante sem porta livre navega "com lentidão", e sem o contador esse defeito não aparece em gráfico nenhum.
IPv6 anda junto
CGNAT bem dimensionado compra tempo enquanto o IPv6 não chega ao assinante. Cada assinante com IPv6 nativo tira do CGNAT justamente o tráfego mais pesado, porque os grandes destinos de vídeo e redes sociais já atendem em IPv6. Um dual stack bem feito reduz o tráfego traduzido a uma fração e adia a próxima expansão de pool por anos. A ordem de ativação que funciona sem parar a rede é assunto para um artigo próprio.
Se o seu CGNAT foi dimensionado há mais de dois anos, ou se ninguém consegue dizer hoje qual assinante estava atrás de determinado IP e porta em uma data passada, vale refazer essa conta: contato@castelapi.com.br.