Conceito de NAT detalhadamente

O que é o NAT? Para que o NAT? Este artigo traz alguns conceitos básicos sobre o NAT (Network Address Translation) e mostra como esses conceitos podem ser aplicados em sua empresa.

[ Hits: 135.348 ]

Por: Luis Fernando Targas em 03/07/2003


O que é o NAT?



O NAT não é um protocolo nem um padrão. O NAT é 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 (sigla em inglês: "Network Address Translation" ou Tradução de Endereço de Rede) deve ser capaz de analisar todos os pacotes de dados que passam por ele e trocar os endereços desses pacotes de maneira adequada. Para facilitar o entendimento do NAT vamos ver dois exemplos:

Exemplo 1


Suponha que nós queremos conectar uma rede de três computadores na Internet através de uma única linha telefônica, um modem e apenas uma conta de acesso ao provedor.

Temos então os computadores com endereços IPs de 10.0.0.2 a 10.0.0.4 (note que esses endereços IPs não são válidos na Internet, assim os pacotes de dados enviados por essas máquinas não podem ser roteados na Internet), um roteador com 2 endereços IPs: 10.0.0.1 na rede local e 200.231.107.41 que ele recebeu ao se conectar ao provedor. Repare que o endereço que o roteador recebeu pode mudar a cada conexão.

Vamos agora entender como essa conexão funciona: o roteador deve ter o recurso de NAT. Esses roteadores tem uma porta Ethernet conectada ao hub da rede local e uma porta serial conectada a um modem ou linha ISDN.

Enquanto ninguém esta acessando a Internet a conexão com o provedor não esta ativa e a linha telefônica esta disponível.Quando alguma máquina da rede acessa a Internet ela manda o pacote de dados para o roteador (que é o default gateway da rede),este então envia os comandos de discagem para o modem, que se conecta com o modem do provedor; após a conexão dos modens o roteador passa um nome de usuário e uma senha para o servidor de comunicações do provedor e recebe um endereço IP.

Se os computadores da rede tivessem endereços IPs válidos estaria tudo pronto e o roteador só passaria o pacote de dados para o provedor, porém, como vimos acima,os endereços IPs são escassos e por isso não podemos nos dar ao luxo de utilizarmos endereços IPs válidos na rede local. Assim, o roteador deve, antes de enviar o pacote de dados para o provedor, trocar o endereço de origem do pacote de dados para o endereço que ele recebeu do provedor e só depois jogar o pacote para o provedor; quando o pacote voltar o roteador deve trocar o endereço de destino do pacote novamente para o endereço não válido da máquina na rede local e só depois jogar o pacote para essa máquina.Esse processo de troca de endereços IPs é o chamado NAT.

Porem nem tudo e tão simples assim. Esse processo funcionaria muito bem se apenas um computador acessasse a Internet a cada instante, porém nós queremos que todas as máquinas possam acessar a Internet ao mesmo tempo. Assim é possível que em um determinado instante pacotes de dados de duas máquinas distintas cheguem ao roteador, ele deve então trocar o endereço de origem dos pacotes e enviar para a Internet e, ao receber a resposta, trocar os endereços IP de destino dos pacotes adequadamente para os respectivos computadores.

Para que o roteador possa encaminhar a resposta corretamente a cada um dos computadores de destino o roteador tem que "lembrar" para onde cada máquina enviou os pacotes,de forma que quando os pacotes de resposta chegarem ele possa identifica-los corretamente. Assim, o roteador deve armazenar em sua memória os pacotes que passaram por ele até que as respostas cheguem.

Devido ao fato de que os pacotes de dados só entram se houve um pacote correspondente que saiu a segurança da rede fica muito forte. Um pacote enviado por alguém na Internet tentando invadir a rede irá chegar até o roteador,porém como ele não vai encontrar em sua memória um endereço da rede local para enviar esse pacote o roteador irá simplesmente jogar o pacote fora.

Exemplo 2


No exemplo anterior vimos como ligar a Internet a uma pequena rede utilizando um roteador com NAT, uma linha telefônica, um modem e uma conta de acesso no provedor.Naquele exemplo a rede local acessa a Internet, porem a Internet não consegue acessar nenhum serviços da rede local.

Neste exemplo vamos analisar um outro caso: uma rede que deseja que suas máquinas locais acessem a Internet, porém também que a Internet seja capaz de enxergar um servidor WWW e um servidor de DNS na rede local.

Assim, temos dois computadores na rede local: o 10.0.0.2 e 10.0.0.3, dois servidores: o 10.0.0.4 que é servidor de WWW e o 10.0.0.5 que é servidor de DNS e por último o roteador do exemplo anterior.

Algumas diferenças básicas entre este exemplo e o anterior:
  1. Neste exemplo a Internet deve ser capaz de endereçar o roteador, ou seja, o endereço do lado válido do roteador deve ser fixo. Para que os computadores na Internet acessem essa rede eles devem conhecer o endereço IP dela,e isso fica muito difícil se o endereço muda a cada instante. Isso implica que um acordo deve ser firmado entre o provedor e o administrador da rede de forma que o provedor configure os seus servidores de comunicação para passarem para o roteador dessa rede sempre o mesmo endereço IP.
  2. O roteador deve ser capaz de identificar cada pacote de dados que chega e definir se ele deve ser encaminhado para os servidores ou para os outros computadores da rede (neste último caso, os pacotes seriam respostas às requisições desses computadores).
  3. Para que a Internet enxergue os servidores é necessário que a conexão entre a rede e o provedor esteja estabelecida.Assim, é recomendável neste exemplo 2 que a ligação entre a rede local e o provedor seja feita através de uma linha privativa dedicada.Utilizar uma conexão discada para este caso seria possível, porém nenhuma máquina na Internet conseguirá acessar esta rede quando a roteador não estiver conectado ao provedor.
Para que este exemplo funcione o roteador tem que fazer mais do que NAT, ele deve ser capaz de implementar o conceito de servidor virtual

Vamos relembrar: o roteador com NAT joga os pacotes de dados para a Internet trocando o endereço IP de origem pelo endereço que ele ganhou do provedor e pega as respostas que chegam da Internet e joga de volta para a rede local trocando o endereço de destino (que é o seu endereço válido) pelo endereço apropriado da rede local.

Muito bem, agora vamos pensar no caso de um computador na Internet tentando acessar o servidor de WWW: o computador da Internet manda o pacote de dados para o endereço que o roteador recebeu do provedor (200.231.107.42), esse pacote chega para o roteador e o roteador deve então trocar o endereço IP de destino do pacote para 10.0.0.4 (endereço do servidor WWW da rede local) e pegar o pacote com a resposta gerada pelo servidor e trocar o endereço de destino desse pacote pelo endereço válido e jogar para a Internet. Para isso,o roteador tem que ser informado sobre quais computadores da rede local atendem a quais serviços; esse trabalho é feito pelo administrador da rede local.

Essa capacidade de rotear adequadamente os pacotes de acordo com o serviço é chamada de Servidor Virtual, pois permite que o roteador se comporte,do ponto da vista da Internet, como um servidor;porém o servidor real esta na rede local atrás do roteador. Repare que o recurso de servidor virtual traz uma segurança muito grande para a rede, pois apenas os serviços configurados no roteador são passados para a rede, qualquer tentativa de acessar a rede local ou servidores locais em qualquer outro serviço não irá obter sucesso.

Página anterior     Próxima página

Páginas do artigo
   1. Para que o NAT?
   2. O Provedor e o fornecimento de conexões de redes
   3. A pequena empresa e o compartilhamento de modem/linha/conta
   4. O que é o NAT?
   5. NAT avançado
Outros artigos deste autor

Configurando o SendMail

Utilizando RPM para detecção de intrusos

Como instalar e usar o MS Office 97 no Linux

Criando um firewall simples e compartilhando a conexão usando o IPtables

Leitura recomendada

Aprendendo e utilizando IRC

Dicionário no Firefox

SSH: Autenticando através de chaves

Configurando um servidor de e-mail para pequenas redes

Conectando Ajato com Linux

  
Comentários
[1] Comentário enviado por blackcatdbflush em 05/07/2003 - 20:42h

Artigo legal, mas copiou meu logo do bsd .. homem mau !!

[2] Comentário enviado por gustavo_marcon em 17/02/2004 - 16:39h

Muito bom o Artigo, mas fiquei c/ uma dúvida.
É o seguinte tenho uma conexão adsl c/ ip fixo mas que passa pelo roteador da brasil telecom e esse roteador faz NAT. Acontece que eu queria disponibilizar um servidor DNS e um servidor WEB para a Internet, mas como o roteador não tem em sua memória o registro de saida do roteador ele não deixa entrar nenhum pacote a mais, então os acessos ao meu ip são rejeitados. Como mudar isso? Será que tem como fazer alguma configuração em meu servidor ou teria que ser feito no roteador da Brasil Telecom?

[3] Comentário enviado por lamss em 12/06/2004 - 00:01h

Amigo Gustavo uso o ADSL velox modem speed stream 5200 (firmware atualizado para router), as configurações têm que ser feitas no seu router... pois liberei para internet a porta do ssh para acesso externo internet... deve ser o mesmo procedimento redirecionamento de porta nas configurações do router...
Se ajuda em alguma coisa...
Valeu

[4] Comentário enviado por marcosvalente em 17/06/2004 - 22:00h

Até copiei este artigo, valeu

[5] Comentário enviado por juglenijr em 25/11/2004 - 19:11h

Muito bom esta artigo... nota 10

[6] Comentário enviado por presunto em 24/05/2006 - 19:23h

muito bom artigo, fiz igual nosso amigo ali, copiei pro meu computador.. brigadao

[7] Comentário enviado por daemonio em 27/10/2006 - 13:29h

Gostei, artigo muito bom!

[8] Comentário enviado por thiagovitor3 em 05/03/2007 - 14:00h

olá amigo, adoreii tbm seu artigo, mais gostaria de alguns esclarecimentos se possível, tenho uma 10.10.20.1(onde tem acesso a internet) e uma outra 10.10.21.1(onde ficam as máquinas locais na minha rede), tem como eu apartir da segunda rede acessar os primeira, usando nat?

[9] Comentário enviado por digitelriopreto em 10/04/2007 - 18:21h

Olá...gostei do seu artigo...muito bom!!! Mas eu preciso de um "esclarecimentozinho" a mais. Possuo uma rede com um roteador "Clavister", 5 máquinas e 1 impressora TCP/IP da HP. Esse "Clavister" (roteador com 1 porta WAN e 8 portas LAN) veio da Suécia e é quem recebe o sinal de internet de um modem, DLink 500B, ROTEADO (pq naum tenho permissão de acessar o software do "Clavister", ninguem da Sueçia quis me passar o login e a senha), e distribui o sinal para as demais máquinas. Acontece q essa rede possui domínio na Suécia (todas as máquinas aki fazem login lá) e esse maldito "Clavister" faz sincronizações para manter tudo atualizado ( o q se faz aki, seatualiza lá na Suécia) e o desempenho das máquinas ficam muitíssimo lentas. Eu gostaria de saber se eu colocar um outro roteador entre o modem e o "Clavister", eu vou ter um desempenho melhor das máquinas, e como fazer isso sendo q os dois atribuem IP's p/ as máquinas (DHCP). Como faço pra fazer com q o roteador (não o "Clavister") faça apenas o serviço de conectar o modem e enviar o sinal pra porta WAN do "Clavister" e deixar q ele atribua os IP's (somente o "Clavister" em DHCP)????
Marcelo Milani

[10] Comentário enviado por jairus em 19/08/2007 - 16:07h

Parabens pelo artigo, tirou muitas dúvidas minhas, pela forma que foi explicado o tema "NAT".


Abraços
Jairus

[11] Comentário enviado por yodalmp em 17/09/2007 - 10:07h

ERRADO!

[12] Comentário enviado por yodalmp em 17/09/2007 - 10:07h

ERRADO, nat é um padrão definido pela RFC 1631!

[13] Comentário enviado por juraci.junior em 09/06/2012 - 13:49h

Muito bom o post. me ajudou com umas questões que sempre tive duvidas.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts