CGNAT explicado: por que um endereço IP não equivale a um usuário
O Carrier-grade NAT coloca milhares de assinantes atrás de um único endereço. Veja o que isso quebra em bloqueios por IP, rate limiting e analytics — e o que fazer no lugar.
Muitas regras antifraude e antiabuso ainda partem de uma premissa que deixou de ser confiável há anos: a de que um endereço IP identifica um usuário. O Carrier-grade NAT, ou CGNAT, é um dos principais motivos para isso não ser mais verdade.
O que é CGNAT
Os endereços IPv4 se esgotaram. Em vez de comprar blocos cada vez mais escassos para entregar um IP público a cada assinante, operadoras móveis e muitos provedores de internet fixa colocam clientes atrás de um conjunto compartilhado de endereços públicos, fazendo a tradução de portas na saída. Na prática, um único endereço público pode representar centenas ou milhares de residências ou celulares ao mesmo tempo.
Do ponto de vista do seu servidor, todo esse tráfego parece vir de um único cliente.
O que isso quebra
Bloqueio. Se você banir um endereço depois de uma tentativa de força bruta, pode acabar bloqueando um quarteirão inteiro de usuários de uma rede móvel. O atacante reconecta, recebe outro endereço do pool em segundos e continua tentando.
Rate limiting. Um limite de 10 requisições por minuto por IP pode ser generoso para uma pessoa, mas é absurdamente apertado para 2.000 assinantes compartilhando a mesma saída. Você vai limitar usuários legítimos nos horários de pico e talvez nem perceba, porque eles simplesmente vão embora.
Atribuição. "Duas contas no mesmo IP" é um indício fraco de múltiplas contas quando falamos de uma rede de operadora. Em uma conexão residencial de fibra, pode significar alguma coisa. Em CGNAT, quase não significa nada.
Analytics. Contagens de visitantes únicos baseadas em endereço IP ficam comprimidas no tráfego móvel e infladas em redes que trocam endereços com frequência. Nos dois casos, o erro costuma passar despercebido no dashboard.
Como perceber que você está vendo CGNAT
Alguns sinais devem acender o alerta:
- Tipo de conexão identificado como mobile, ou um ASN pertencente a uma operadora móvel.
- Diversidade muito alta de requisições vindas de um único endereço: muitos user agents, muitas contas, muitos locais.
- Endereços em faixas de transição compartilhada (100.64.0.0/10) aparecendo em headers encaminhados.
Uma consulta de inteligência de IP entrega os dois primeiros sinais diretamente, o que já basta para ajustar a política em tempo real, durante a requisição.
O que fazer no lugar
- Ajuste os limites por classe de rede. Conexões residenciais podem ter um limite por IP mais rígido. Faixas móveis e corporativas precisam de limites bem mais folgados, compensados por controles mais fortes por conta e por dispositivo.
- Leve a identidade para uma camada mais adequada. Sempre que possível, aplique rate limiting por ID de conta, sessão ou sinal de dispositivo. Use o IP como chave secundária, não como identificador principal.
- Prefira desafios a bloqueios. Um desafio incomoda uma rede compartilhada; um bloqueio pune todo mundo junto.
- Use expiração agressiva. Se for inevitável bloquear um endereço compartilhado, pense em minutos, não em dias. O atacante já terá mudado de IP muito antes de o seu ban expirar.
- Monitore o impacto colateral. Se um único ban afetaria mais do que algumas poucas contas ativas, isso é um forte sinal de que o endereço é compartilhado — e de que o bloqueio é a ferramenta errada.
O princípio por trás disso
Endereço IP é uma propriedade do caminho da conexão, não da pessoa. Ele é um sinal de risco valioso, mas um péssimo identificador. Sistemas que respeitam essa diferença bloqueiam muito mais abuso por falso positivo do que sistemas que ignoram essa realidade — e a adoção do IPv6, embora recupere certo grau de endereçamento por assinante, não elimina o problema enquanto o tráfego móvel continuar crescendo.
