NAT (Network Address Translation) e IPv6

Até aqui, estudamos a camada de rede em profundidade: roteamento, endereçamento IPv4 com CIDR, DHCP para alocação dinâmica, e a hierarquia global de alocação (ICANN → RIRs → ISPs → DHCP local). Mas chegamos a um impasse crítico: o espaço IPv4 de 32 bits tem apenas 4,3 bilhões de endereços, insuficiente para os bilhões de hosts e dispositivos IoT conectados hoje.

Este capítulo final do módulo de Camada de Rede responde a pergunta: Como a Internet funciona apesar do esgotamento do IPv4? E Como a próxima geração de endereçamento (IPv6) resolve isso permanentemente?

Exploraremos:

  1. NAT (Network Address Translation) — solução de curto prazo que permite múltiplos hosts privados compartilharem um IP público
  2. Controvérsias do NAT — seus impactos negativos em aplicações e arquitetura
  3. Técnicas de NAT Traversal — como aplicações conseguem funcionar apesar do NAT
  4. IPv6 — a evolução de longo prazo com espaço de endereçamento vastamente maior
  5. Transição IPv4 → IPv6 — estratégias práticas como tunelamento e dual-stack

NAT (Network Address Translation)

O Problema: Esgotamento de IPv4

Lembre-se do capítulo anterior: em 2011, o IANA alocou o último /8 de endereços aos RIRs. Desde então, todas as regiões atingiram seus limites de alocação. O esgotamento é real e presente:

RegiãoData de EsgotamentoSolução Atual
APNIC (Ásia-Pacífico)2011NAT, IPv6, compartilhamento
RIPENCC (Europa)2012NAT, IPv6, espera por reciclagem
ARIN (América do Norte)2015NAT, IPv6, mercado secundário (vendas)
LACNIC (América Latina)2014-2015NAT, IPv6, fragmentos recirculados
AFRINIC (África)2019+Ainda há espaço, mas em contagem regressiva

A resposta imediata: NAT — técnica que permite múltiplos hosts privados compartilharem um único IP público.

Conceito de NAT

NAT funciona reescrevendo endereços IP e portas TCP/UDP nos cabeçalhos dos pacotes enquanto atravessam um roteador:

ComponenteDescriçãoExemplo
Endereços Privados (RFC 1918)IPs não roteáveis globalmente — reservados para redes internas192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12
Endereços PúblicosIPs roteáveis globalmente — alocados por ISP200.1.50.1
Tabela NATMapeamento dinâmico de (IP privado : porta) → (IP público : porta)192.168.1.100:5000 ↔ 200.1.50.1:40000
Roteador NATDispositivo que reescreve pacotes — tipicamente um router doméstico200.1.50.0/24 conectado ISP; 192.168.1.0/24 conectado internamente

Como NAT Funciona: Passo a Passo

Considere uma casa com 3 dispositivos (laptop, smartphone, tablet) compartilhando um único IP público 200.1.50.1:

1. Host interno inicia conexão

O laptop (192.168.1.100) inicia uma conexão HTTP com um servidor web remoto (8.8.8.8:80):

CampoOrigemDestino
IP origem (privado)192.168.1.100
Porta origem54321 (aleatória)
IP destino8.8.8.8
Porta destino80 (HTTP)

2. Router NAT intercepta e mapeia

O router doméstico vê o pacote saindo e reescreve a origem:

CampoAntes (Privado)Depois (Público)
IP origem192.168.1.100200.1.50.1
Porta origem5432140000 (escolhida pelo router)
IP destino8.8.8.88.8.8.8 (inalterado)
Porta destino8080 (inalterado)

Tabela NAT do router agora armazena:

(192.168.1.100 : 54321) ↔ (200.1.50.1 : 40000) → destino 8.8.8.8:80

3. Servidor remoto responde

O servidor remoto (8.8.8.8) vê um pacote vindo de 200.1.50.1:40000 e responde para esse endereço (não conhece o IP privado 192.168.1.100):

CampoValor
IP origem8.8.8.8
Porta origem80
IP destino200.1.50.1
Porta destino40000

4. Router revertem o mapeamento

O router recebe a resposta, consulta sua tabela NAT, encontra o mapeamento (200.1.50.1:40000 ↔ 192.168.1.100:54321) e reescreve de volta:

CampoAntes (Público)Depois (Privado)
IP destino200.1.50.1192.168.1.100
Porta destino4000054321
IP origem8.8.8.88.8.8.8 (inalterado)
Porta origem8080 (inalterado)

5. Host interno recebe resposta

O laptop (192.168.1.100) recebe a resposta de 8.8.8.8:80 na porta 54321, como esperado — NAT é transparente para a aplicação!

Visualizacao Interativa: Fluxo NAT ponta a ponta

Observe as etapas de saida, traducao no roteador e retorno do pacote para o host interno.

Tipos de NAT

TipoComportamentoImpactoExemplo
Full Cone (Aberto)Router mapeia (IP privado:porta) → (IP público:porta fixo). Qualquer host externo pode enviar para essa porta pública.Menos restritivo; P2P funciona bemRoteadores corporativos de qualidade
Restricted Cone (Restrito)Router mapeia (IP privado:porta) → (IP público:porta). Apenas hosts para os quais o internal host enviou pacotes podem responder.Mais restritivo; P2P parcialmente bloqueadoRoteadores domésticos padrão
Port Restricted ConeTipo acima + restrição adicional: apenas a porta específica de destino pode responder.Ainda mais restritivoRoteadores domésticos conservadores
Symmetric NATRouter aloca uma porta pública diferente para cada destino externo diferente — mesmo IP:porta privado → portas públicas diferentes conforme destino.Maximamente restritivo; P2P praticamente impossívelAlguns ISPs e roteadores corporativos

Benefícios do NAT

  1. Extensão do espaço IPv4: múltiplos hosts privados = 1 IP público
  2. Privacidade/Sigilo: hosts internos não são visíveis do exterior — requer port forwarding para aceitar conexões externas
  3. Simplicidade: usuários finais não precisam gerenciar endereços públicos — ISP fornece 1 IP, roteador cuida do resto
  4. Compatibilidade com IPv4 limitado: permite mais tempo antes de migração forçada a IPv6

Problemas e Controvérsias do NAT

Problema 1: Violação do Princípio End-to-End

A arquitetura original da Internet (RFC 1958) pressupõe comunicação ponto-a-ponto (end-to-end): dois hosts podem se comunicar diretamente sem intermediários modificando pacotes. NAT viola esse princípio:

AspectoIdeal (End-to-End)Com NAT
ComunicaçãoHost A ↔ Host B diretamenteHost A → Router NAT → Host B
ReescritaNenhuma modificação nos headersIP e portas reescritas a cada salto
Falhas de ConectividadeRaros — ambos os hosts se veemComuns — external hosts não alcançam internos
Exemplo ProblemáticoP2P direto (Skype clássico, BitTorrent) | Host externo inicia conexão (SSH)Requer técnicas de traversal

Problema 2: P2P e Aplicações que Aceitam Conexões

Um servidor interno (ex: 192.168.1.50) rodando um servidor SSH não pode ser acessado de fora, pois:

  • Pacotes SYN chegam em 200.1.50.1 (IP público do router)
  • Router não sabe para qual IP interno rotear (sem port forwarding manual)
  • Port forwarding 200.1.50.1:22 → 192.168.1.50:22 é requerido — impraticável para aplicações dinâmicas

Problema 3: Sobrecarga do Router NAT

Cada conexão ativa exige uma entrada na tabela NAT. Routers domésticos têm limite (~5.000 entradas). Em data centers, NAT é uma gargalo de performance.

Problema 4: Conflitos de IP Privados

Múltiplas redes internas podem usar o mesmo espaço privado (ex: duas filiais corporativas, ambas com 192.168.1.0/24). Conectar essas redes (VPN, fusão) causa conflitos e requer renumeração — operação custosa.

Problema 5: Transparência Quebrada

Aplicações que confiam em IPs reais (análise de logs, auditoria, geo-localização, anti-fraude) recebem o IP do router NAT, não do usuário real. Exemplo: todos os 5 usuários de uma casa aparecem com o mesmo IP público 200.1.50.1 — impossível distinguir quem fez o quê.

Visualização Interativa: Tabela NAT Dinâmica

Observe como múltiplos hosts internos compartilham um IP público e a tabela NAT é atualizada com novas conexões.

NAT Traversal: Contornando as Limitações

Como VoIP (Skype, WhatsApp), P2P (BitTorrent) e gaming multiplayer funcionam apesar do NAT? Resposta: NAT Traversal — técnicas que permitem estabelecer conexões diretas ou diretas através do NAT.

Técnica 1: Port Forwarding (Manual)

O administrador configura manualmente o roteador para encaminhar uma porta pública para um IP/porta interno:

ConfiguraçãoResultado
Forward 200.1.50.1:8080 → 192.168.1.50:8080Acesso HTTP interno via IP público : porta
Forward 200.1.50.1:3306 → 192.168.1.60:3306Acesso MySQL interno via IP público
Forward 200.1.50.1:22 → 192.168.1.100:22Acesso SSH interno via IP público

Desvantagem: Manual, impraticável para aplicações dinâmicas que não conhecem sua porta antecipadamente.

Técnica 2: UPnP (Universal Plug and Play)

Aplicações podem programaticamente solicitar ao roteador para abrir portas dinâmicas. Exemplo: BitTorrent pede ao roteador "abra-me a porta 6881 e mapeie 200.1.50.1:6881 → 192.168.1.100:6881".

Vantagem: Automático, nenhuma configuração manual. Desvantagem: Requer UPnP habilitado (nem todos os routers possuem); pouco seguro — qualquer aplicação pode abrir portas.

Técnica 3: STUN (Simple Traversal of UDP over NAT)

Um protocolo cliente-servidor que ajuda um host atrás de NAT a descobrir seu IP público e porta mapeada:

  1. Cliente interno (192.168.1.100:5000) envia pacote UDP a servidor STUN público
  2. Servidor responde: "Seu IP público é 200.1.50.1 e sua porta é 40000"
  3. Cliente agora conhece seu endereço público e pode compartilhá-lo com pares
  4. Pares podem tentar se conectar a 200.1.50.1:40000 (se router permite)

Usado em: VoIP (SIP), WebRTC, gaming.

Técnica 4: TURN (Traversal Using Relays around NAT)

Quando NAT é simétrico ou muito restritivo, conexão direta é impossível. Solução: relay — servidor intermediário:

  1. Host A (atrás NAT) conecta a servidor TURN
  2. Host B (atrás NAT) conecta a servidor TURN
  3. Servidor TURN retransmite pacotes entre A e B
  4. Comunicação ocorre via relay, não diretamente

Desvantagem: Relay requer banda larga e custa dinheiro (operadores cobram); introduz latência extra.

Usado em: WebRTC (backup quando STUN falha), conferências de vídeo.

Técnica 5: Hole Punching

Se ambos os hosts conhecem mutuamente seus endereços públicos (via STUN), podem tentar criar um "buraco" no NAT enviando pacotes um ao outro simultane. Se bem-sucedido, NAT permite comunicação direta P2P.

Sucesso depende de: tipo de NAT (funciona em Full Cone / Restricted Cone, falha em Symmetric).

TécnicaRequisitosSucessoCustoUso Típico
Port ForwardingAcesso manual ao roteador100% (se configurado)Nenhum (manual)Servidores internos permanentes
UPnPRoteador com UPnP, aplicação suporta90% (falha se NAT muito restritivo)Nenhum (automático)BitTorrent, streaming
STUNServidor STUN público~70% (falha em Symmetric NAT)Servidores públicos gratuitosVoIP, WebRTC inicial
TURNServidor TURN com banda (pago)100% (sempre funciona)Operador cobra por bandaBackup WebRTC, conferências críticas
Hole PunchingSTUN + ambos hosts suportam~60% (NAT-tipo dependente)Nenhum (se sucesso)P2P descentralizado

IPv6: Solução Permanente

Enquanto NAT é uma solução "conserta-pneu" (temporary fix), a solução permanente é a migração para IPv6 — lançado em 1995 (RFC 1883, atualizado em RFC 2460) mas ainda em adoção gradual 30 anos depois.

Motivação: Por que IPv6?

Problema IPv4Solução IPv6
32 bits = 4,3 bilhões de endereços (insuficiente)128 bits = 340 undecilhões de endereços (2^128) — 5 × 10^28 por pessoa
NAT necessário; quebra P2P e aplicaçõesEspaço suficiente; cada dispositivo tem IP único e público
Cabeçalho complexo (opções variáveis, checksum a cada salto)Cabeçalho simplificado (40 bytes fixos), sem checksum
Fragmentação em roteadores intermediáriosApenas no host origem (PMTUD — Path MTU Discovery)
Sem suporte nativo a mobilidade ou QoSSuporte integrado (Flow Label, Next Header para extensões)

Estrutura do Datagrama IPv6

CampoTamanhoDescriçãoDiferença do IPv4
Version4 bitsVersão IP — sempre 6 para IPv6Igual (4 bits)
Traffic Class (TC)8 bitsQoS e prioridade (equivalente a ToS)Renomeado; mais simples
Flow Label20 bitsMarca fluxos relacionados para aplicar mesmo tratamentoNovo no IPv6 — não existe em IPv4
Payload Length16 bitsTamanho dos dados (cabeçalho fixo em 40 bytes)Simplificado (sem contar cabeçalho)
Next Header8 bitsIdentifica protocolo de camada superior (TCP, UDP, etc.) ou cabeçalho extensãoGeneralizado de IPv4 'Protocol'
Hop Limit8 bitsEquivalente a TTL — decrementa a cada roteadorRenomeado (mesmo comportamento)
Source Address128 bitsIP do remetente4x maior que IPv4
Destination Address128 bitsIP do destino4x maior que IPv4

Nenhum campo de checksum: roteadores não recalculam checksum a cada salto — responsabilidade de camadas inferiores (Ethernet) e superiores (TCP, UDP).

Endereços IPv6

Um endereço IPv6 é uma sequência de 8 grupos de 16 bits em notação hexadecimal:

NotaçãoExemploSignificado
Full (Hexadecimal)2001:0db8:0000:0000:0000:0000:0000:00018 grupos, separados por :, cada grupo = 16 bits
Compressed (Zeros omitidos)2001:db8::1Zeros consecutivos → :: (apenas uma vez)
Localhost (Loopback)::1Equivalente a 127.0.0.1 em IPv4
Any/Unspecified::Equivalente a 0.0.0.0 em IPv4 — nenhum endereço específico

Escopo de Endereços IPv6

TipoIntervaloEscopoExemplo
Link-Local (fe80::/10)fe80:0000:0000:0000:xxxx:xxxx:xxxx:xxxxApenas rede local — não roteávelfe80::1 (roteador padrão)
Unicast Global (2000::/3)2001:db8::/32 e outrosInternet pública — roteável globalmente2001:4860:4860::8888 (Google DNS)
Multicast (ff00::/8)ff00:xxxx:xxxx:....Um para muitos — replicaçãoff02::1 (todos na rede local)
Anycast (2100::/3 + específicos)Mesmo endereço em múltiplos roteadoresUm para o mais próximoServidores de raiz DNS

SLAAC (Stateless Address Auto-Configuration)

Um host IPv6 não precisa de DHCP — usa SLAAC para se auto-configurar:

  1. Link-Local gerado: Host cria seu próprio IPv6 fe80::XXXX:XXXX:XXXX:XXXX (derivado de MAC) sem contato com servidor
  2. Solicita prefixo: Host envia multicast "há roteadores?" (ICMPv6 Router Solicitation)
  3. Roteador responde: Roteador envia prefixo (ex: 2001:db8::/64) via Router Advertisement (RA)
  4. Host constrói endereço global: Host concatena prefixo + interface ID (derivado de MAC)

Resultado: Host tem endereço global único sem DHCP, sem configuração manual.

Se server DHCP é desejado (mais controle, DNS automático), DHCPv6 fornece essas informações adicionais.

Visualizacao Interativa: SLAAC em 4 etapas

Veja o host criar link-local, solicitar prefixo e montar o endereco global sem DHCP.

Tabela Comparativa: IPv4 vs IPv6

AspectoIPv4IPv6
Tamanho de Endereço32 bits128 bits
Endereços Totais~4,3 bilhões~3,4 × 10^38 (340 undecilhões)
Espaço por Pessoa (8B população)~0,5 endereços~4,2 × 10^28 endereços
NAT Necessário?Sim (escassez)Não (abundância)
CabeçalhoVariável (20-60 bytes)Fixo (40 bytes)
FragmentaçãoRoteadores + hostApenas host
Descoberta de RoteadorManual/DHCPAutomático (RA)
Auto-configuraçãoDHCP obrigatórioSLAAC (sem servidor)
Endereços de Loopback127.0.0.1::1
BroadcastEndereço de broadcast diretoMulticast apenas (ff00::/8)
Adoção (2024)~60% do tráfego da Internet~40% do tráfego (crescendo lentamente)

Transição IPv4 → IPv6

O desafio: bilhões de dispositivos IPv4-apenas ainda existem. Migração forçada é impossível. Soluções práticas permitem coexistência:

Estratégia 1: Dual-Stack

Um host rodando ambos IPv4 e IPv6 simultaneamente:

ProtocoloEndereçoPreferência
IPv4192.168.1.100Fallback se IPv6 falhar
IPv62001:db8::100Preferência se disponível

Processo: Aplicação tenta IPv6; se falha (no route, no server support), volta a IPv4. Transição suave — servidores modernos suportam ambos.

Adoção: Padrão de fato em ISPs e data centers modernos.

Visualizacao Interativa: Dual-Stack com fallback

Compare cenarios IPv6-only, IPv4-only e dual-stack, com tentativa inicial em IPv6 e fallback em IPv4 quando necessario.

Estratégia 2: Tunelamento

Encapsular IPv6 dentro de IPv4 para cruzar redes IPv4-puras:

Exemplo - 6to4:

IPv6 packet (2001:0db8:c0a8:0001:...)

Encapsulado dentro de IPv4 (origem: 192.168.0.1 → destino: 192.168.0.2)

Roteador tunelador extrai IPv6 e roteia para rede IPv6

Variantes: 6to4, Teredo (traversal UDP), 6rd (ISP-specific), ISATAP (host-to-host).

Desvantagens: Encapsulamento adiciona overhead; latência pequena mas mensurável.

Estratégia 3: Tradução NAT64

Permitir hosts IPv6-puros se comunicarem com servidores IPv4-puros via tradução automática de endereços/protocolos:

DireçãoOrigemDestino
IPv6 → IPv42001:db8::1192.0.2.1 (traduzido como IPv4-mapeado)
IPv4 → IPv6192.0.2.1 (via prefixo NAT64)2001:db8::1

Usado por: Apple, Google, Facebook para tornar IPv6-puros habilitados em data centers legados com backends IPv4.

Status Atual (2024)

MétricaValorTendência
% Tráfego Internet IPv6~40%↑ Crescendo (~1% ao ano)
% Usuários com IPv6 disponível~70% (desenvolvidos); ~20% (em desenvolvimento)↑ Lentamente
ISPs com suporte IPv6~80% (USA), ~50% (mundial)
Servidores/CDNs com IPv6Google, Facebook, Cloudflare, Netflix: 100%; outros: 50-90%
Dispositivos IoT IPv6-readySmartphones novos, smart TVs: sim; IoT embarcado: raro↑ Com novos padrões

A migração é lenta mas inevitável — IPv4-puro eventualmente desaparecerá em data centers, mas bilhões de dispositivos legados tocar NAT indefinidamente.

Resumo Conceitual

ConceitoDefiniçãoContexto
NATTecnologia que permite múltiplos hosts privados compartilharem um IP público através de reescrita de endereçosSolução de curto prazo para esgotamento IPv4
Tabela NATMapeamento dinâmico de (IP privado:porta) ↔ (IP público:porta)Mantida no roteador; permite reverter respostas
NAT TraversalTécnicas (STUN, TURN, hole punching) para estabelecer conexões apesar de NATNecessária para P2P, VoIP, gaming multiplayer
IPv6Nova versão do protocolo IP com 128 bits — elimina escassez de endereçosSolução permanente; adoção lenta mas crescente
SLAACAuto-configuração sem servidor — hosts geram IPs IPv6 com prefixo de roteadorSimplifica implantação IPv6 vs DHCP IPv4
Dual-StackHost rodando IPv4 e IPv6 simultaneamentePadrão de transição atual
TunelamentoEncapsular IPv6 em IPv4 para cruzar redes IPv4-purasTécnica de transição (6to4, Teredo, 6rd)

Conclusão

Neste capítulo final do módulo de Camada de Rede, entendemos:

  1. NAT estende IPv4 permitindo múltiplos hosts privados em um IP público — solução prática mas que viola princípios end-to-end
  2. Controvérsias do NAT incluem P2P quebrado, perda de transparência e sobrecarga de roteadores
  3. NAT Traversal (STUN, TURN, hole punching) permite aplicações funcionarem apesar do NAT
  4. IPv6 resolve permanentemente a escassez com 128 bits e espaço ilimitado
  5. SLAAC simplifica auto-configuração — nenhum DHCP necessário
  6. Transição via Dual-Stack, Tunelamento e NAT64 permite coexistência gradual

Com essa compreensão, completamos a jornada através da Camada de Rede: endereçamento (IPv4, CIDR, IPv6), roteamento (LPM), comutação (fabrics de roteadores), enfileiramento (buffering e escalonamento), DHCP (alocação de hosts) e agora NAT + IPv6 (escalabilidade global da Internet).

A Internet é uma obra de engenharia viva — NAT não é solução ideal, IPv6 é melhor, mas migrar bilhões de dispositivos leva décadas. Essa tensão entre o ideal e o praticável permeia toda a infraestrutura da Internet moderna.