03 - NAT (Conexão Privado-Público)
video: https://youtu.be/... no frontmatter da nota.NAT (Network Address Translation) — Conexão Privado-Público
O NAT (Network Address Translation) no contexto de uma conexão privado-público é o mecanismo que permite que dispositivos utilizando IPs Privados (RFC 1918) se comuniquem com a Internet Pública (IPs únicos e roteáveis). Padronizado pela RFC 3022 (Traditional NAT, janeiro de 2001), o NAT atua como intermediário inteligente localizado na borda da rede — geralmente no roteador Wi-Fi doméstico ou no roteador de borda da empresa.
O NAT resolve a incompatibilidade fundamental entre endereços internos não roteáveis e endereços externos roteáveis, realizando a tradução dinâmica dos endereços IP (e portas) nos pacotes que entram e saem da rede local.
1. Terminologia Oficial (RFC 2663 e 3022)
A terminologia NAT clássica define quatro categorias de endereços:
| Sigla | Nome | Significado |
|---|---|---|
| IL | Inside Local | Endereço privado do host interno (ex: 192.168.1.10) |
| IG | Inside Global | Endereço público do roteador NAT, visto da internet (ex: 200.150.100.50) |
| OL | Outside Local | Endereço do host externo, como visto da rede interna (tipicamente = OG) |
| OG | Outside Global | Endereço público real do host externo (ex: 142.250.74.46) |
Em traduções simples (sem sobreposição de faixas privadas), OL = OG. A distinção só importa em NAT duplo ou em VPNs com endereçamento sobreposto.
2. O Problema: O Buraco Negro dos IPs Privados
Uma rede privada (ex: uma casa) opera com IPs privados como 192.168.1.x. Se um dispositivo nessa rede tentar enviar um pacote para um site na internet (ex: IP Público 142.250.74.46), o pacote terá:
- IP Origem:
192.168.1.10(Privado). - IP Destino:
142.250.74.46(Público).
Quando esse pacote chegar a um roteador na internet, ele verá o endereço de origem 192.168.1.10. Como esse endereço não é globalmente único (pode existir em milhões de casas), o roteador da internet não sabe para onde devolver a resposta, e o pacote é descartado. O dispositivo interno está, para todos os efeitos, isolado do mundo.
3. Processo de Saída (Private → Public)
Quando o dispositivo interno (Inside Local) inicia uma conexão com o mundo externo:
- Interceptação: o pacote chega ao roteador NAT (gateway). O NAT detecta que o IP de origem está no range privado.
- Tradução de Endereço (Sobrescrita de Origem): o NAT modifica o cabeçalho IP do pacote, substituindo o IP Privado de origem pelo seu próprio IP Público (Inside Global).
- De:Origem: 192.168.1.10 → Destino: 142.250.74.46
- Para:Origem: 200.150.100.50 → Destino: 142.250.74.46 - Registro na Tabela NAT: o NAT cria uma entrada temporária na sua Tabela de Tradução (NAT Table) gravando a correspondência:
- Tradução:192.168.1.10:50000 → 200.150.100.50:50000 - Encaminhamento: o pacote modificado é enviado para a internet. Para o servidor web externo, a requisição parece vir de um único dispositivo (o roteador), não do computador interno.
4. Processo de Retorno (Public → Private)
A resposta do servidor externo voltará para o IP Público do roteador. O NAT precisa saber para quem entregar esse dado internamente.
- Recebimento: o roteador NAT recebe o pacote de resposta do servidor externo.
- Origem:142.250.74.46
- Destino:200.150.100.50:50000(IP Público do roteador). - Consulta à Tabela: o NAT verifica o campo de Porta de Destino do pacote TCP/UDP.
- Como conexões diferentes usam portas diferentes, o NAT sabe que a porta50000está associada à sessão do computador interno192.168.1.10. - Tradução de Endereço (Restauração de Destino): o NAT modifica o cabeçalho IP novamente, dessa vez mudando o Destino:
- De:Origem: 142.250.74.46 → Destino: 200.150.100.50:50000
- Para:Origem: 142.250.74.46 → Destino: 192.168.1.10:50000 - Entrega: o pacote é entregue na rede local. O dispositivo interno recebe os dados como se a internet soubesse onde ele está.
5. A Tabela NAT (Sessões e Timeouts)
A tabela NAT mantém cada sessão ativa por um período limitado, definido pelo tipo de protocolo:
| Protocolo | Timeout típico | Observação |
|---|---|---|
| TCP estabelecida | 24 horas (Cisco default: 86400s) | Renovada a cada pacote |
| TCP transicional (SYN_SENT) | 60 segundos | Após SYN sem SYN-ACK |
| UDP | 30 a 300 segundos | Cisco default: 300s |
| ICMP | 60 segundos | Após primeira resposta |
| DNS | 5 a 60 segundos | Consultas são curtas |
Quando o timeout expira, a entrada é removida e a porta pode ser reusada para outra sessão. Administradores podem ajustar:
! Cisco IOS
ip nat translation timeout 3600
ip nat translation tcp-timeout 86400
ip nat translation udp-timeout 300
ip nat translation dns-timeout 60
6. PAT (Port Address Translation) — Sobrecarga de Portas
Como a maioria das redes domésticas tem um único IP público (fornecido pelo provedor) mas múltiplos dispositivos (celular, TV, laptop, tablet), o NAT simples (1-para-1) não seria suficiente.
A solução usada na conexão privado-público é o NAPT (Network Address Port Translation) ou PAT (Port Address Translation), também chamado de NAT Overload.
Funcionamento do PAT
- Identificação pela Porta: o NAT não apenas troca o IP, mas também pode trocar a porta de origem (
Source Port) do pacote. - Diferenciação: se o Laptop envia um pacote usando a porta
50000e o Celular envia usando a porta50100, o NAT cria duas entradas distintas na tabela, ambas apontando para o mesmo IP público, mas com portas diferentes. - Multiplexação: o servidor externo responde para o IP Público e a Porta (ex:
200.150.100.50:50000). O NAT olha para a porta, verifica sua tabela e sabe que aquele tráfego deve ir para o Laptop. - Escalabilidade: todos os hosts internos aparecem externamente como
200.150.100.50, em portas distintas — permitindo milhares de sessões simultâneas com um único IP público.
7. Exemplo de Captura de Pacotes
Antes do NAT (na interface interna)
12:01:23.456789 IP 192.168.1.10.50000 > 142.250.74.46.443: Flags [S], seq 123456
12:01:23.512345 IP 142.250.74.46.443 > 192.168.1.10.50000: Flags [S.], seq 789, ack 123457
Depois do NAT (na interface externa)
12:01:23.456800 IP 200.150.100.50.50000 > 142.250.74.46.443: Flags [S], seq 123456
12:01:23.512400 IP 142.250.74.46.443 > 200.150.100.50.50000: Flags [S.], seq 789, ack 123457
Note que o IP de origem foi substituído em ambos os sentidos; a porta 50000 foi preservada (PAT nem sempre muda a porta — só quando há conflito).
8. Tipos de NAT
| Tipo | Tradução | Uso típico |
|---|---|---|
| Static NAT | 1 IP privado ↔ 1 IP público fixo | Expor servidor interno (port forward) |
| Dynamic NAT | Pool de IPs públicos compartilhado | Empresas com pool limitado |
| PAT (Overload) | Múltiplos privados em 1 público (porta) | Residencial, pequenas empresas |
| NAT-PT (RFC 2766) | IPv4 ↔ IPv6 | Obsoleto, substituído por NAT64 |
| CGN (Carrier-Grade) | NAT em larga escala do provedor | Operadoras sem pool IPv4 |
| Twice NAT | Traduz origem E destino | VPNs com redes sobrepostas |
9. Benefícios da Conexão via NAT
- Conservação de Endereços Públicos: permite que milhares de dispositivos compartilhem um único endereço IP oficial. Mecanismo que manteve o IPv4 viável por décadas após o esgotamento.
- Segurança Natural (Firewall de Borda): como os dispositivos privados estão "escondidos" atrás do NAT, não há rota direta da internet para iniciar conexões neles. Funciona como firewall preventivo contra ataques diretos, salvo port forward explícito.
- Facilidade de Admin: mudar o IP de todos os dispositivos internos (ex:
192.168.1.0/24para10.0.0.0/24) não exige avisar o provedor. O mundo externo continua vendo apenas o IP Público do roteador. - Independência de ISP: trocar de provedor (com mudança de IP público) não afeta o endereçamento interno.
10. O Modelo Fim-a-Fim Quebrado
A conexão privado-público via NAT altera o modelo original da internet (Fim-a-Fim, definido por Saltzer, Reed e Clark em 1984), onde cada dispositivo teria um endereço próprio globalmente roteável.
- Masqueramento: o IP verdadeiro do dispositivo interno é "mascarado" pelo IP do roteador. O servidor web externo não sabe quem você é, apenas sabe qual é a "porta de entrada" da sua casa.
- Implicações para serviços: isso dificulta a criação de servidores dentro de redes privadas (ex: hospedar um site no seu PC), pois o IP público muda a cada reconexão ou é compartilhado. Para o consumo da internet (navegação, downloads), o NAT é transparente e eficaz.
11. Problemas para P2P, VoIP e Gaming
| Aplicação | Problema com NAT |
|---|---|
| P2P (BitTorrent, eMule) | Peer remoto não consegue iniciar conexão direta para host atrás de NAT |
| VoIP (SIP/RTP) | SIP embute IP no payload — NAT não traduz payload L7, quebrando sinalização |
| Gaming (host multiplayer) | Consoles não recebem conexões entrantes — matchmaking P2P falha |
| FTP active mode | Servidor inicia conexão de dados de volta ao cliente — NAT bloqueia |
| IPsec | ESP não tem portas — PAT não consegue diferenciar múltiplos túneis |
Soluções para NAT Traversal
- UPnP IGD: o host pede ao NAT para abrir porta automaticamente (comum em consoles).
- STUN (RFC 5389): host descobre seu IP/porta pública vistos externamente.
- TURN (RFC 5766): relay intermediário para quando STUN não basta (caro).
- ICE (RFC 8445): framework que combina STUN+TURN para WebRTC.
- ALG (Application Layer Gateway): módulo no roteador que inspeciona SIP/FTP e reescreve IPs no payload.
12. Configuração Prática
Cisco IOS — PAT (Overload) para rede interna
interface GigabitEthernet0/0
ip address 192.168.1.1 255.255.255.0
ip nat inside
!
interface GigabitEthernet0/1
ip address dhcp
ip nat outside
!
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat inside source list 1 interface GigabitEthernet0/1 overload
!
! Port forward para servidor web interno
ip nat inside source static tcp 192.168.1.100 80 interface GigabitEthernet0/1 80
Linux — iptables/nftables
# Habilitar IP forwarding
sysctl -w net.ipv4.ip_forward=1
# PAT (masquerade) na interface externa eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Port forward: 80 externo -> 192.168.1.100:80 interno
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \
-j DNAT --to-destination 192.168.1.100:80
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT
Inspeção da Tabela NAT
! Cisco IOS
show ip nat translations
show ip nat statistics
# Linux
conntrack -L # lista sessões ativas
conntrack -L -s 192.168.1.10
13. Conclusão
O NAT (especialmente em sua forma PAT) é o mecanismo que permitiu à internet IPv4 sobreviver por décadas após o esgotamento do espaço de endereçamento. Ao traduzir endereços privados em um endereço público compartilhado (com diferenciação por porta), o NAT economiza endereços públicos, fornece segurança de borda natural e simplifica a administração de redes internas. No entanto, o NAT quebra o modelo fim-a-fim, dificulta aplicações P2P/VoIP/gaming e exige técnicas de traversal (STUN/TURN/ICE) e ALGs. A solução definitiva é o IPv6, que elimina a necessidade de NAT ao oferecer $3{,}4 \times 10^{38}$ endereços globais — mas enquanto a transição não se completa, o NAT segue como peça central de praticamente toda rede residencial e corporativa do mundo.