O que é NAT
NAT, Network Address Translation, é uma técnica que permite reescrever os endereços IP de origem de um pacote que passam sobre um router ou firewall de maneira que um computador de uma rede interna tenha acesso a uma rede externa. Essa técnica é normalmente utilizada para liberar acesso a internet às rede privadas.
Em outras palavras, podemos dizer que NAT é um tradutor de endereços de rede que visa minimizar a escassez dos endereços IP. O NAT não é um protocolo nem um padrão, é apenas uma série de tarefas que um roteador (ou equipamento equivalente) deve realizar para converter endereços IPs entre redes distintas.
Um equipamento que tenha o recurso de NAT deve ser capaz de analisar todos os pacotes de dados que passam por ele e trocar os endereços desses pacotes de maneira adequada.
O problema
Os endereços IP são escassos. Um ISP poderia ter um endereço /16 (anteriormente da classe B),fornecendo 65.534 números de hosts. Se ele tiver um número maior do que esse de clientes, haverá um problema. Para os clientes individuais com conexões de discagem, uma forma de contornar o problema é atribuir dinamicamente um endereço IP ao computador quando ele se conectar e efetuar logon, tomando o endereço IP de volta quando a sessão terminar. Desse modo, um único endereço /16 poderá manipular até 65.534 usuários ativos, o que provavelmente deve ser bastante bom para um ISP com várias centenas de milhares de clientes. Quando a sessão for encerrada, o endereço IP será designado novamente para outro usuário.
Referências bibliográficas
1) SOUZA, Balbino Jr.; MAGEDANZ, Karin; BORGES, Nádia. Implementando Network Address Translation (NAT) com
Linux. São Leopoldo, Novembro de 2005.
2) TANENBAUN, Andrew S. Redes de computadores. Quarta edição