1. Por que NAT existe
O NAT nasceu como uma resposta direta ao esgotamento do IPv4—mas isso nunca foi tudo. Ele também virou uma ferramenta de isolamento, pois permite que redes internas usem endereços privados, enquanto um único endereço público faz a ponte com a Internet. Isso dá controle sobre o tráfego de saída, reduz exposição e mantém a topologia interna invisível para o mundo externo. Em ambientes domésticos e corporativos, NAT é o que torna possível que dezenas ou centenas de dispositivos compartilhem o mesmo IP público sem colapsar a estrutura de endereçamento.
2. Tipos de NAT
SNAT (Source NAT) altera o endereço de origem de um pacote. É usado quando sua máquina ou sua rede interna precisa “sair” para outra rede, normalmente a Internet. O roteador substitui o IP privado pelo IP público e registra a tradução para conseguir reverter na volta.
MASQUERADE é um SNAT “dinâmico”, pensado para interfaces com IP variável (como DHCP ou PPPoE). Ele recalcula o IP de saída sempre que necessário, e por isso é a escolha comum em roteadores domésticos ou máquinas com IP público não fixo.
DNAT (Destination NAT) faz o caminho inverso: altera o endereço de destino de um pacote que chega pela interface externa. É a base do port forwarding. Um pacote destinado ao IP público na porta 80, por exemplo, pode ser redirecionado para um servidor interno em outra rede — algo obrigatório em ambientes que usam endereços privados.
3. A tabela de estado (conceito chave)
O NAT só funciona de forma confiável porque o roteador acompanha cada fluxo individualmente. A tradução de endereços não é estática nem contínua — ela é específica a cada conexão.
⬆️ Por isso, sempre que um pacote sai da rede interna em direção à Internet, o roteador:
1) Detecta um novo fluxo.
Identifica 5-tuple: IP_origem, porta_origem, IP_destino, porta_destino, protocolo.
2) Aplica a tradução de saída (normalmente no POSTROUTING).
Ex.: 10.0.1.20:42831 → 200.200.200.10:55000.
3) Registra esse mapeamento na conntrack table.
É isso que será consultado no caminho de volta.
Esse registro é uma entrada com estado próprio, incluindo tempo de expiração, flags de protocolo (SYN/ACK/FIN no TCP, por exemplo), portas traduzidas, e o estado atual do fluxo.
⬇️ No caminho de retorno, o processo é o inverso:
1) O roteador recebe um pacote destinado ao IP público e à porta traduzida.
2) Consulta a tabela e encontra:
200.200.200.10:55000 → 10.0.1.20:42831
3) Restaura os valores originais e entrega o pacote ao host interno certo.
Sem a tabela, esse pacote voltaria “cego”: não há nada no cabeçalho que identifique qual host interno iniciou o fluxo.
A simetria entre como o pacote sai e como volta existe só porque a tabela mantém estado
O NAT depende fundamentalmente do rastreamento de estado (stateful connection tracking). Quando o host envia um pacote para fora da sua rede, o roteador NAT executa a tradução no momento de saída, substituindo o endereço e — se necessário — a porta de origem por um par público. Esse é o instante em que o roteador cria uma entrada na tabela de estado, registrando o mapeamento completo: endereço interno, endereço público usado, destino externo e o protocolo envolvido.
Tráfego de saída:
Tráfego de retorno:
Essa tabela funciona como um mapa de retorno: quando um pacote chega da Internet destinado ao IP público, o roteador consulta o registro correspondente e restaura os valores originais, entregando o tráfego ao host correto dentro da rede interna.
Já a tabela conntrack representa o coração do NAT. Cada linha corresponde a um fluxo ativo, indicando exatamente como o pacote de ida foi traduzido e como o pacote de volta deve ser restaurado. Mesmo com um único host, fica claro o princípio fundamental: o roteador depende dessa tabela para garantir consistência entre ida e retorno, preservando o fluxo TCP/UDP como se a comunicação fosse direta, apesar da tradução intermediária.
4. Configurações no Linux
Abaixo estão exemplos práticos para cada tipo de NAT usando iptables.
Cenário 1 — Saída padrão para a Internet (MASQUERADE):
Rede interna 10.10.0.0/24 sai para a Internet pela interface eth0, com IP dinâmico.
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE
Uso típico em gateways domésticos ou laboratoriais, quando o endereço público pode mudar.
Cenário 2 — Saída com IP público fixo (SNAT):
Servidor de borda tem IP público estático 203.0.113.5, e todos os hosts internos devem sair usando esse endereço.
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j SNAT --to-source 203.0.113.5
Evita o overhead do MASQUERADE e garante consistência para logs e firewalls externos.
Cenário 3 — DNAT simples para um servidor web interno:
Qualquer tráfego que chega ao IP público na porta 80 deve ir para 10.10.0.10:80 na DMZ.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.10.0.10:80
Clássico port forwarding, usado em servidores web expostos.
Cenário 4 — Redirecionar SSH externo para um bastion host
Acesso SSH público na porta 2222 deve ser encaminhado para o host interno 10.10.0.50:22.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2222 -j DNAT --to-destination 10.10.0.50:22
Evita expor diretamente máquinas internas e permite controle mais estrito no firewall.
Cenário 5 — Dois serviços internos compartilhando o mesmo IP público
Chegadas em 80 → servidor A;
Chegadas em 443 → servidor B.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.10.0.10:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 10.10.0.20:443
Mostra como o roteador pode “demultiplexar” serviços distintos por porta.
Cenário 6 — SNAT específico para um host ou serviço interno
Um servidor interno (10.10.0.30) precisa sair para a Internet com um IP secundário público 203.0.113.6, diferente do restante da rede.
iptables -t nat -A POSTROUTING -s 10.10.0.30 -o eth0 -j SNAT --to-source 203.0.113.6
Muito usado quando se quer segmentar logs, reputação de IP ou tráfego de e-mail.
5. Testes
O jeito mais simples é abrir um curl a partir de uma máquina externa e verificar se o tráfego chega corretamente ao host interno.
Se quiser observar o processo mais de perto, tcpdump na interface externa revela a porta traduzida e os fluxos acontecendo em tempo real.
Esse tipo de inspeção ajuda muito a entender se o problema é de NAT ou de firewall.
6. Erros comuns
Duplo NAT sem necessidade:
Duas camadas fazendo SNAT criam fluxos difíceis de rastrear e dificultam depuração.
Errado ❌: roteador da operadora + seu roteador, ambos fazendo NAT.
Correto ✅: apenas o equipamento de borda fazendo NAT; o segundo só roteia.
NAT sem rota de retorno:
A tradução funciona na ida, mas o retorno nunca encontra o caminho certo.
Errado ❌: DNAT para
10.0.0.10, mas o host10.0.0.10envia resposta para outro gateway.
Correto ✅: ajustar a rota padrão do servidor interno para apontar para o roteador que fez o DNAT.
MASQUERADE no lugar errado:
Ele tem que estar apenas na interface que leva ao destino externo.
Errado ❌: aplicar MASQUERADE numa interface interna.
Correto ✅: aplicar na interface de saída (geralmente WAN).
7. Conclusão
O NAT continua sendo uma solução prática para manter redes funcionando em um cenário de endereços escassos e topologias diversas. Ele resolve problemas reais de conectividade, mas exige atenção ao caminho do tráfego, à tabela de estado e ao alinhamento entre NAT, rotas e firewall. Quando tudo conversa bem, ele é quase invisível. Quando algo fica desalinhado, os sintomas aparecem imediatamente — pacotes sem retorno, serviços inacessíveis, fluxos presos. Entender a lógica interna do NAT torna esses problemas muito mais previsíveis e fáceis de resolver.



Top comments (0)