«

»

abr 19 2009

Entendendo NAT (Network Address Translation)

Em meio as questões que recebo de tempos em tempos, e também analizando as perguntas postadas em fóruns técnicos, percebo que o assunto NAT ainda se destaca. Pensei em escrever um post à respeito, mas procurando pela net, me deparei com um tutorial elaborado pelo Julio Batisti e publicado em seu site que considerei fantástico em termos de passar uma boa base sobre o assunto. Como o objetivo não é reinventar a roda, mas tentar sanar a dúvida de alguns leitores, optei por transcrever parte do artigo do Julio.

O artigo não foca em ambientes Cisco, mas ainda assim, é muito didático e desmistifica um pouco alguns conceitos. Espero que gostem e que os ajudem a compreender melhor os conceitos e a tecnologia por trás do NAT.

OBS: Para NAT em ambientes Cisco, leia: http://blog.nexthop.com.br/2008/03/entendendo-nat-em-roteadores-cisco.html

Um abs,

Marco.


Fonte: http://www.juliobattisti.com.br/artigos/windows/tcpip_p20.asp

Entendendo como funciona o NAT

Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços IP v4 na Internet. Conforme descrito na Parte 1, cada computador que acessa a Internet deve ter o protocolo TCP/IP corretamente instalado e configurado. Para isso, cada computador da rede interna, precisaria de um endereço IP válido na Internet. Não haveria endereços IP v4 suficientes. A criação do NAT veio para solucionar esta questão (ou pelo menos fornecer uma alternativa até que o IP v6 esteja em uso na maioria dos sistemas da Internet). Com o uso do NAT, os computadores da rede Interna, utilizam os chamados endereços Privados. Os endereços privados não são válidos na Internet, isto é, pacotes que tenham como origem ou como destino, um endereço na faixa dos endereços privados, não serão encaminhados, serão descartados pelos roteadores. O software dos roteadores está configurado para descartar pacotes com origem ou destino dentro das faixas de endereços IP privados. As faixas de endereços privados são definidas na RFC 1597 e estão indicados a seguir:

  • 10.0.0.0           ->     10.255.255.255
  • 172.16.0.0       ->     172.31.255.255
  • 192.168.0.0     ->     192.168.255.255

Existem algumas questões que devem estar surgindo na cabeça do amigo leitor. Como por exemplo: Qual a vantagem do uso dos endereços privados? O que isso tem a ver com o NAT?  Muito bem, vamos esclarecer estas questões.

Pelo fato de os endereços privados não poderem ser utilizados diretamente na Internet, isso permite que várias empresas utilizem a mesma faixa de endereços privados, como esquema de endereçamento da sua rede interna. Ou seja, qualquer empresa pode utilizar endereços na faixa 10.0.0.0   -> 10.255.255.255 ou na faixa 172.16.0.0 -> 72.31.255.255 ou na faixa 192.168.0.0 -> 192.168.255.255.

“Com o uso do NAT, a empresa fornece acesso à Internet para um grande número de computadores da rede interna, usando um número bem menor de endereços IP, válidos na Internet.”

Por exemplo, uma rede com 100 computadores, usando um esquema de endereçamento 10.10.0.0/255.255.0.0, poderá ter acesso à Internet, usando o NAT, usando um único endereço IP válido: o endereço IP da interface externa do NAT. Observe que com isso temos uma grande economia de endereços IP: No nosso exemplo temos 100 computadores acessando a Internet (configurados com endereços IP privados), os quais utilizam um único endereço IP válido, que é o endereço IP da interface externa do servidor configurado como NAT.

Muito bem, respondi as questões anteriores mas agora devem ter surgido novas questões na cabeça do amigo leitor, como por exemplo:

1.       Se houver mais de um cliente acessando a Internet ao mesmo tempo e o NAT possui apenas um endereço IP válido (ou em outras situações, se houver um número maior de clientes internos acessando a Internet, do que o número de endereços IP disponíveis no NAT. E o número de endereços IP, disponíveis no NAT sempre será menor do que o número de computadores da rede interna, uma vez que um dos principais objetivos do uso do NAT é reduzir a quantidade de números IP válidos), como é possível a comunicação de mais de um cliente, ao mesmo tempo, com a Internet?

2.         Quando a resposta retorna, como o NAT sabe para qual cliente da rede interna ela se destina, se houver mais de um cliente acessando a Internet?

Inicialmente vamos observar que o esquema de endereçamento utilizado pela empresa do nosso exemplo (10.10.0.0/255.255.0.0) está dentro de uma faixa de endereços Privados. Aqui está a principal função do NAT, que é o papel de “traduzir” os endereços privados, os quais não são válidos na Internet, para o endereço válido, da interface pública do servidor com o NAT.

Para entender exatamente o funcionamento do NAT, vamos considerar um exemplo prático. Imagine que você tem cinco computadores na rede, todos usando o NAT. Os computadores estão utilizando os seguintes endereços:

  • 10.10.0.10
  • 10.10.0.11
  • 10.10.0.12
  • 10.10.0.13
  • 10.10.0.14

O computador com o NAT habilitado tem as seguintes configurações:

  • IP da interface interna: 10.10.0.1
  • IP da interface externa: Um ou mais endereços válidos na Internet, obtidos a partir da conexão com o provedor de Internet, mas sempre em número bem menor do que a quantidade de computadores da rede interna.

Quando um cliente acessa a Internet, no pacote de informações enviado por este cliente, está registrado o endereço IP da rede interna, por exemplo: 10.10.0.10. Porém este pacote não pode ser enviado pelo NAT para a Internet, com este endereço IP como endereço de origem, se não no primeiro roteador este pacote será descartado, já que o endereço 10.10.0.10 não é um endereço válido na Internet (pois é um endereço que pertence a uma das faixas de endereços privados, conforme descrito anteriormente). Para que este pacote possa ser enviado para a Internet, o NAT substitui o endereço IP de origem por um dos endereços IP da interface externa do NAT (endereço fornecido pelo provedor de Internet e, portanto, válido na Internet). Este processo que é chamado de tradução de endereços, ou seja, traduzir de um endereço IP interno, não válido na Internet, para um endereço IP externo, válido na Internet. Quando a resposta retorna, o NAT repassa a resposta para o cliente que originou o pedido.

Mas ainda fica a questão de como o NAT sabe para qual cliente interno é a resposta, se os pacotes de dois ou mais clientes podem ter sido traduzidos para o mesmo endereço IP externo. A resposta para estas questão é a mesma. O NAT ao executar a função de tradução de endereços, associa um número de porta, que é único, com cada um dos computadores da rede interna. A tradução de endereços funciona assim:

1.         Quando um cliente interno tenta se comunicar com a Internet, o NAT substitui o endereço interno do cliente como endereço de origem, por um endereço válido na Internet. Mas além do endereço é também associada uma porta de comunicação. Por exemplo, vamos supor que o computador 10.10.0.12 tenta acessar a Internet. O NAT substitui o endereço 10.10.0.12 por um endereço válido na Internet, vou chutar um: 144.72.3.21. Mas além do número IP é também associada uma porta, como por exemplo: 144.72.3.21:6555. O NAT mantém uma tabela interna onde fica registrado que, comunicação através da porta “tal” está relacionada com o cliente “tal”. Por exemplo, a tabela do NAT, em um determinado momento, poderia ter o seguinte conteúdo:

  • 144.72.3.21:6555          10.10.0.10
  • 144.72.3.21:6556          10.10.0.11
  • 144.72.3.21:6557          10.10.0.12
  • 144.72.3.21:6558          10.10.0.13
  • 144.72.3.21:6559          10.10.0.14

Observe que todos os endereços da rede interna são “traduzidos” para o mesmo endereço externo, porém com um número diferente de porta para cada cliente da rede interna.

2.         Quando a resposta retorna, o NAT consulta a sua tabela interna e, pela identificação da porta, ele sabe para qual computador da rede interna deve ser enviado o pacote de informações, uma vez que a porta de identificação está associada com um endereço IP da rede interna. Por exemplo, se chegar um pacote endereçado a 144.72.3.21:6557, ele sabe que este pacote deve ser enviado para o seguinte computador da rede interna: 10.10.0.12, conforme exemplo da tabela anterior. O NAT obtém esta informação a partir da tabela interna, descrita anteriormente.

Com isso, vários computadores da rede interna, podem acessar a Internet, ao mesmo tempo, usando um único endereço IP ou um número de endereços IP bem menor do que o número de computadores da rede interna. A diferenciação é feita através de uma atribuição de porta de comunicação diferente, associada com cada IP da rede interna. Este é o princípio básico do NAT – Network Address Translation (Tradução de Endereços IP).



Comente usando o Facebook!
0
0

11 comentários

Pular para o formulário de comentário

  1. David Alvarenga

    Noo Marco, filé o tutorial do Julio, Muito Obrigado por compartilhar…..

    agora so lembrando” hauhaua seu parmeira nao se deu bem hein hehehe….. Nos pts corridos vc vao bem, mas no mata-a-mata e outra historia”….

    abss

    0

    0
  2. Wederson (CeBoLaRk)

    Saudações,

    Os artigos do Julio Batisti são excelentes também…

    Quanto ao “Parmera”… foi uma pena, seria mais emocionante ganhar do Palmeireas, do que ganhar do Santos, rsrsrs.

    E viva o Corinthians.. kkk

    0

    0
  3. Eron Melo

    Muito bom mesmo… O interessante é ler o mesmo assunto escrito por pessoas diferentes… Sempre é acrescentado algo que não tinha percebido antes…

    Valeu!!!!

    Eron Melo
    Aspirante CCNA

    0

    0
  4. fblessed

    Um artigo que achei bem completo foi no wikipedia.

    http://en.wikipedia.org/wiki/Network_address_translation#Applications_affected_by_NAT

    Pena que está em inglês.Realmente não achei um material em português com essa qualidade, a parte dos tipos de NAT é muito importante. Estava até pensando em traduzi-lo mas sozinho tomaria muito tempo.Alguém se habilita a me ajudar ?

    0

    0
  5. Marcio §åMµ®å¡

    Marco,
    Muito bom o tuto… Já li um material do Julio e realmente é muito bom. Não fugindo do assunto do tópico, mas com o intuito de compartilhar, o Julio Batisti também tem um tuto muito bom sobre TCP/IP. Quem estiver interessado: http://www.juliobattisti.com.br/artigos/windows/tcpip_p1.asp

    Abraço à todos!

    0

    0
  6. alcantara_jp

    O tutorial ficou legal, só acho que faltou duas coisas:
    1 – Descrição dos tipos de NAT existentes. No exemplo, ele trabalhou com o PAT e deixou de explicar os demais.
    2 – Explicação da tradução de endereço devido a duas redes diferentes possuirem o mesmo endereçamento interno.

    Obs.: Não estou desmerecendo o texto, só acho que esses dois pontos poderiam ter sido citados.

    0

    0
  7. Orcs

    O texto é apenas para entender o conceito de NAT, e isso está muito bem explicado. Quanto aos tipos de NAT já um assunto mais aprofundado, na minha opnião o tutorial é sucinto, porem exelente.

    0

    0
  8. Carlos Almeida

    Nessa área de redes, entender o funcionamento do TCP/IP e seus recursos é fundamental. O NAT tem um certa complexidade e precisamos de uma certa atenção quando estudamos sobre isso.

    O tutorial está excelente, bem conceitual!!!!!

    Abraço!

    0

    0
  9. ferrugem

    Imagina: CiscoCertified + JulioBattisti juntos?! 😀

    Bom hein…

    0

    0
  10. LUCAS ROCHA

    AMIGOS DO BLOG CCNA, REPONDA ESSA DUVIDA QUE ESTÁ ME DEIXANDO DOIDO.

    EU POSSO USAR DOIS TIPOS DE NA EM UM ROUTER CISCO???

    ip nat pool ISP-INTERNET 189.232.45.9 189.232.45.9 netmask 255.255.255.248
    ip nat inside source list 2 pool ISP-INTERNET overload
    !
    access-list 2 permit 10.1.0.0 0.0.0.31
    !
    ip nat inside source static 10.1.0.0 189.232.45.9

    AJUDA AI!!!!

    0

    0
  11. zkrloz

    Obrigado. O post foi muito bem explicativo. Agora entendi o conceito bem melhor.

    0

    0

Deixe uma resposta