Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

03 - NAT (Conexão Privado-Público)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione 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:

  1. Interceptação: o pacote chega ao roteador NAT (gateway). O NAT detecta que o IP de origem está no range privado.
  2. 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
  3. 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
  4. 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.

  1. 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).
  2. 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 porta 50000 está associada à sessão do computador interno 192.168.1.10.
  3. 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
  4. 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 50000 e o Celular envia usando a porta 50100, 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/24 para 10.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.