Endereço IP: diferença entre IPv4 e IPv6, esgotamento e NAT
IPv4 esgotou em 2020 na América Latina. Entenda a notação, os limites do NAT, as mudanças do IPv6 e o que isso significa para quem escreve código.
Em 2011, o IANA distribuiu os últimos blocos de endereços IPv4 para os registros regionais. A LACNIC, que cuida da América Latina, esgotou o estoque em 2020. Hoje, quando uma operadora quer adicionar um novo cliente à rede, ela tem três opções: pagar caro por um bloco IPv4 no mercado secundário, empilhar mais um NAT em cima de outro NAT, ou finalmente ligar o IPv6. É um problema de endereçamento que a maioria dos devs toca todo dia sem perceber — e que explica por que 10.0.0.x aparece na sua interface de rede em vez do IP que o mundo enxerga.
Se você quer entender o que acontece antes de um IP sequer ser usado — como o DNS resolve nomes, como o TCP estabelece conexão — tem um post irmão sobre isso: Como a internet funciona: DNS, HTTP e o que acontece antes do primeiro byte. Este aqui foca no endereçamento em si.
O que é um endereço IP
Um endereço IP é um identificador numérico atribuído a cada interface de rede. "Interface", não "máquina" — um servidor com duas placas de rede tem dois IPs. Um container Docker tem o seu próprio. Um VPN split-tunnel cria uma interface virtual com outro.
A função é dupla: identifica o host e indica sua localização na topologia da rede. Roteadores usam o IP de destino para decidir para onde encaminhar cada pacote. Sem isso, não tem roteamento — é só flood.
Existem dois espaços de endereçamento em uso: IPv4 e IPv6. Não são versões do mesmo protocolo no sentido de compatibilidade retroativa — são protocolos distintos que coexistem na infraestrutura atual via dual-stack.
IPv4: a notação, os limites, a matemática do esgotamento
IPv4 usa endereços de 32 bits, representados em quatro octetos decimais separados por ponto:
192.168.1.100
Cada octeto vai de 0 a 255. O espaço total é 2³² = 4.294.967.296 endereços — menos de 4,3 bilhões. Parecia muito em 1981. Hoje há mais de 15 bilhões de dispositivos conectados.
Parte desse espaço nunca foi disponível para uso público. Alguns blocos são reservados:
| Faixa | Uso |
|---|---|
10.0.0.0/8 |
Rede privada (RFC 1918) |
172.16.0.0/12 |
Rede privada (RFC 1918) |
192.168.0.0/16 |
Rede privada (RFC 1918) |
127.0.0.0/8 |
Loopback |
169.254.0.0/16 |
Link-local (APIPA) |
224.0.0.0/4 |
Multicast |
As faixas privadas (RFC 1918) foram a solução emergencial para o esgotamento: em vez de cada dispositivo ter um IP público, uma rede inteira de dispositivos compartilha um único IP público via NAT.
O NAT: gambiarra que virou padrão
NAT (Network Address Translation) é o mecanismo pelo qual seu roteador doméstico deixa 20 dispositivos compartilhando um único IP público. O roteador mantém uma tabela de mapeamento: quando um pacote sai, anota o IP e porta internos, substitui pelo IP público com uma porta diferente, e faz o processo inverso quando a resposta chega.
Dispositivo interno: 192.168.1.50:45231
Roteador (IP público): 203.0.113.1:60001
Servidor destino vê: 203.0.113.1:60001
Funciona bem para conexões iniciadas de dentro para fora. Para conexões de fora para dentro — hospedar um servidor, P2P, VoIP, jogos online — o NAT quebra o modelo end-to-end da internet e exige workarounds como port forwarding, STUN, TURN ou hole punching.
O NAT Carrier-Grade (CGN ou CGNAT) é a versão industrial disso: o ISP aplica NAT antes mesmo do tráfego chegar ao roteador do cliente. Resultado: múltiplos clientes compartilham o mesmo IP público, o cliente não controla o mapeamento de portas, e hospedar qualquer coisa de casa se torna impossível sem contratar um IP estático separado.
IPv6: notação, escala e o que muda na prática
IPv6 usa endereços de 128 bits, representados em oito grupos de quatro dígitos hexadecimais separados por dois pontos:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
Zeros à esquerda em cada grupo podem ser omitidos, e uma sequência contínua de grupos zero pode ser comprimida com :: (uma vez por endereço):
2001:db8:85a3::8a2e:370:7334
O espaço de endereçamento é 2¹²⁸ — um número na ordem de 3,4 × 10³⁸. Para ter uma dimensão: dá pra atribuir mais de 10²⁴ endereços IPv6 para cada metro quadrado da superfície da Terra. NAT em IPv6 não é necessário e, por projeto, não é recomendado — cada dispositivo pode ter um endereço público globalmente roteável. A conectividade end-to-end, que o NAT destruiu no IPv4, volta a funcionar.
Tipos de endereço IPv6
| Prefixo | Tipo | Equivalente IPv4 |
|---|---|---|
::1/128 |
Loopback | 127.0.0.1 |
fe80::/10 |
Link-local (auto-configurado) | 169.254.x.x |
fc00::/7 |
Unique Local (ULA, rede privada) | RFC 1918 |
2000::/3 |
Global unicast (IP público) | IPs públicos |
O endereço link-local (fe80::) é configurado automaticamente em toda interface IPv6 ativa — sem DHCP, sem configuração manual. É suficiente para comunicação na mesma rede local.
Por que a adoção do IPv6 ainda é incompleta
IPv6 foi especificado em 1998. Em 2026, a adoção global está em torno de 40-50%, dependendo da métrica. O Brasil chegou perto de 50% em 2024. A pergunta óbvia é: por que levou tanto tempo?
Três razões principais:
1. IPv4 e IPv6 não são compatíveis. Um host IPv4-only não consegue se comunicar com um host IPv6-only sem algum mecanismo de transição. Isso significa que habilitar IPv6 não desliga o IPv4 — você opera dual-stack por um período indefinido, mantendo dois stacks para gerenciar, monitorar e debugar.
2. O NAT "resolveu" o problema urgente. Enquanto o mercado secundário de IPv4 e o CGNAT mantinham a internet funcionando, a pressão para migrar diminuiu. Migração tem custo; problema "resolvido" não tem urgência.
3. Suporte inconsistente em equipamentos legados. Roteadores antigos, firewalls corporativos de décadas passadas, sistemas embarcados — parte da infraestrutura simplesmente não suportava IPv6 sem substituição de hardware.
O que acelerou nos últimos anos foi a pressão dos hyperscalers e ISPs mobile. Google, Facebook e outros grandes players habilitaram IPv6 há anos. Operadoras mobile (que nunca tiveram endereços IPv4 suficientes para a base de smartphones) adotaram IPv6 mais rápido do que provedores fixos.
Diferenças técnicas que importam no dia a dia de dev
Além do endereçamento, IPv6 introduziu mudanças no protocolo que têm impacto prático:
Header simplificado: o header IPv4 tem tamanho variável (por causa das Options) e inclui checksum. O header IPv6 é fixo em 40 bytes, sem checksum (delegado para as camadas superiores), com extensão via extension headers opcionais. Isso facilita o processamento em linha nos roteadores.
SLAAC (Stateless Address Autoconfiguration): em IPv6, um dispositivo pode configurar seu próprio endereço global sem DHCP, usando o prefixo anunciado pelo roteador e um identificador local. DHCPv6 existe, mas não é obrigatório.
IPsec nativo: IPv6 foi projetado com IPsec como parte integrante do protocolo, não como extensão opcional como no IPv4. Na prática, o uso ainda é opcional, mas o suporte é mandatório nas implementações.
Sem broadcast: IPv6 usa multicast onde IPv4 usaria broadcast. ff02::1 é o equivalente de 255.255.255.255 — mas é multicast para todos os nós no link, não flood cego.
Implicações práticas para quem escreve código
Bind em 0.0.0.0 vs ::. Se você sobe um servidor que faz bind em 0.0.0.0, está escutando em todas as interfaces IPv4. Para escutar em IPv6, o bind deve ser em ::. A maioria dos sistemas operacionais modernos configura sockets IPv6 com IPV6_V6ONLY por padrão — um socket em :: não aceita conexões IPv4 automaticamente. Verifique se sua aplicação faz bind explícito nos dois protocolos ou se o framework que você usa cuida disso.
Parsing de endereços. Se você armazena IPs em banco, IPv4 cabe em um inteiro de 32 bits ou em 4 bytes. IPv6 precisa de 128 bits — 16 bytes. PostgreSQL tem o tipo inet que suporta ambos. Se você usa VARCHAR, precisará de pelo menos 39 caracteres para o endereço IPv6 no formato expandido. E se você faz parsing manual com regex para IPv4, vai precisar reescrever para lidar com IPv6.
Logs e métricas. Sistemas que fazem parsing de logs para extrair IPs precisam tratar IPv6. Um endereço como ::ffff:192.0.2.1 é um IPv4-mapped IPv6 address — IPv6 embrulhando um IPv4, comum quando um socket IPv6 recebe uma conexão IPv4.
Para inspecionar o IP público que um sistema enxerga, o ISP, o ASN e se está chegando via IPv4 ou IPv6, uso o IP Address Info — útil especialmente quando você está debugando comportamento de dual-stack e quer confirmar qual protocolo está sendo usado na conexão.
Perguntas frequentes
Por que meu IP começa com 192.168 ou 10.x?
Esses são endereços privados (RFC 1918) — não roteáveis na internet pública. São o IP que o roteador atribuiu ao seu dispositivo na rede local. O IP que o mundo enxerga é o IP público do roteador, atribuído pelo ISP. Para ver o IP público, você precisa perguntar a um servidor externo — ou usar uma ferramenta como o IP Address Info.
IPv6 é mais rápido que IPv4?
Não de forma inerente. A velocidade da conexão depende da infraestrutura entre origem e destino, não do protocolo de endereçamento. Em alguns cenários, IPv6 pode ser ligeiramente mais eficiente pelo header simplificado e pela ausência de NAT (que adiciona latência e estado nos roteadores), mas a diferença é marginal na maioria dos casos práticos.
Meu site precisa suportar IPv6?
Depende do seu público. Se uma parcela significativa dos seus usuários está em mobile (especialmente em países com adoção alta de IPv6), eles podem estar chegando via IPv6. Se seu servidor só escuta em IPv4, a maioria dos clientes modernos fará fallback automático (Happy Eyeballs / RFC 6555), mas com um pequeno atraso. Para hospedar em dual-stack, a maioria dos provedores de cloud já oferece IPv6 — é uma configuração de rede, não de código de aplicação.
Por que ainda existe IPv4 se o IPv6 é melhor?
Porque migração tem custo e o IPv4 ainda funciona. O CGNAT resolveu o problema de endereços de forma suficiente para não criar urgência. IPv6 vai dominar eventualmente — mas "eventualmente" em infraestrutura de rede é medido em décadas.
Esgotamento resolvido, complexidade aumentada
O IPv4 durou mais do que devia por causa do NAT — uma solução que funcionou mas que quebrou o modelo original da internet onde todo host tem um endereço único e roteável. IPv6 restaura esse modelo com espaço de sobra, mas chegou tarde o suficiente para encontrar décadas de infraestrutura, código e operações construídas em torno do IPv4.
O dual-stack atual é o resultado: duas versões do protocolo coexistindo indefinidamente, com todo o custo operacional que isso implica. Para quem escreve sistemas distribuídos, o mínimo é garantir que o código trata endereços IPv6 corretamente — tanto no bind dos servidores quanto no armazenamento e parsing dos IPs que chegam nos logs.
Nota: o conteúdo editorial acabou aqui. O que vem abaixo é uma indicação de ferramenta relacionada ao tema do post.
Ferramenta relacionada
Para ver qual IP público está sendo usado numa conexão — IPv4 ou IPv6 — junto com ISP, ASN e localização aproximada, o IP Address Info mostra esses dados em tempo real no navegador. Útil para confirmar se uma conexão dual-stack está usando o protocolo esperado.
- 01 Como organizar estudos de programação sem se perder Sair do tutorial hell, estudar com consistência e terminar projetos — o sistema prático que realmente funciona para aprender programação.
- 02 Clean Code sem dogmas: o que realmente importa Clean Code virou religião — e tem fiéis que aplicam os mandamentos sem entender a teologia. O que realmente reduz bugs e custo de manutenção.