quarta-feira, 17 de fevereiro de 2010

Como funciona o NAT (tradução de endereços de rede)

Como funciona o NAT (tradução de endereços de rede)
por Jeff Tyson - traduzido por HowStuffWorks Brasil

Introdução

Se você está lendo este artigo,  provavelmente está conectado à internet. A chance é grande de você estar usando Tradução de Endereços de Rede (NAT, do inglês Network Address Translation) neste exato momento.

A Internet cresceu mais do que qualquer pessoa poderia imaginar. Embora o tamanho exato não seja conhecido, a estimativa é que haja 100 milhões de computadores hospedeiros e mais de 350 milhões de usuários ativos na Internet. Isto é mais do que toda a população dos Estados Unidos. De fato, a taxa de crescimento é tal que o tamanho da Internet tem dobrado a cada ano

Mas o que o tamanho da Internet tem a ver com o NAT? Tudo! Para um computador se comunicar com outros computadores e servidores web na internet, ele deve ter um endereço IP. O endereço IP (IP vem do inglês - Internet Protocol, ou protocolo de internet) é um número exclusivo de 32 bits, que identifica a localização do seu computador em uma rede. Basicamente, funciona como o nome da sua rua - e é um jeito de saber exatamente onde você está e levar informações até você.

Quando o endereçamento IP surgiu, todos pensavam que havia endereços suficientes para cobrir qualquer demanda. Teoricamente, poderiam existir 4.294.967.296 endereços exclusivos (232). O número real de endereços disponíveis é menor (algo entre 3,2 e 3,3 bilhões) por causa da forma como os endereços são separados em categorias, e porque alguns endereços são separados para multicast, testes ou outros fins específicos.

Com a explosão da internet e o aumento do número de redes domésticas e corporativas, o número de endereços IP disponíveis passou a não ser suficiente. A solução óbvia é redesenhar o formato do endereço para permitir que mais endereços sejam criados. Isto já está em desenvolvimento (é chamado IPv6), mas vai levar muitos anos para ser implementado porque requer a modificação de toda a infra-estrutura da internet.


O roteador NAT traduz o tráfego que entra e sai da rede local

É aí que entra o NAT (RFC 1631 - em inglês). O NAT permite que um único dispositivo, como um roteador, funcione como um agente entre a Internet (ou "rede pública") e uma rede local (ou "privativa"). Significa que apenas um endereço IP exclusivo é necessário para representar um grupo inteiro de computadores.

Mas a falta de endereços IP é apenas um dos motivos para usar o NAT. Neste artigo você aprenderá mais sobre como o NAT pode ajudar você. Mas antes vamos dar uma olhada mais de perto no NAT e ver exatamente o que ele pode fazer...

O que o NAT faz?

O NAT é como uma recepcionista de um grande escritório. Digamos que você tenha instruído a recepcionista para não passar nenhuma ligação para você a menos que você peça. Durante o dia, você liga para um cliente e deixa uma mensagem pedindo que ele retorne sua ligação. Você avisa a recepcionista que está esperando este cliente ligar e que esta ligação ela pode transferir.

O cliente liga para o número principal do seu escritório, que é o único que ele tem. Quando o cliente fala para a recepcionista que quer falar com você, a recepcionista procura em uma lista o seu nome com o seu ramal. A recepcionista sabe que você está esperando esta ligação e, portanto, transfere a ligação para o seu ramal.

Desenvolvido pela Cisco, o NAT é usado por um dispositivo (firewall, roteador ou computador) que fica entre uma rede interna e o resto do mundo. O NAT tem muitos formatos e pode trabalhar de várias formas:

  • NAT estático - mapeamento de um endereço IP privativo (da rede interna) para um endereço IP válido (público) em uma base um-para-um. É útil principalmente quando um dispositivo precisa estar acessível de fora da rede.


No NAT estático, o computador com o endereço IP 192.168.32.10 sempre será traduzido para 213.18.123.110

  • NAT dinâmico - mapeia um endereço IP privativo para um endereço IP público dentro de um grupo de endereços IP públicos.


No NAT dinâmico, o computador com endereço IP 192.168.32.10 será traduzido para o primeiro endereço disponível na faixa de 213.18.123.100 até 213.18.123.150

  • Overloading (sobrecarga) - um tipo de NAT dinâmico que mapeia múltiplos endereços IP privativos para um único endereço IP público, usando portas diferentes. Também é conhecido como PAT (tradução de endereço de porta, do inglês Port Address Translation), NAT de endereço único, ou NAT multiplexado por portas.


No overloading, cada computador na rede interna é traduzido para o mesmo endereço IP (213.18.123.100), mas com uma porta diferente

  • Overlapping (sobreposição) - quando os endereços IP usados na sua rede interna são endereços IP usados em outra rede, o roteador deve manter uma tabela destes endereços para que consiga interceptá-los e trocá-los por endereços IP públicos únicos. Vale salientar que o roteador NAT deve traduzir os endereços "privativos" para endereços públicos, assim como traduzir os endereços "públicos" para endereços que sejam únicos dentro da rede. Isto pode ser feito através do NAT estático ou usando DNS com NAT dinâmico.


A faixa de IPs privativos (237.16.32.xx) é a mesma cadastrada em outra rede. Portanto, o roteador traduz os endereços para evitar conflitos com outra rede. Também vai traduzir os endereços IP públicos globais de volta para endereços IP locais quando informações forem enviadas para a rede interna.

A rede interna é geralmente uma LAN (do inglês Local Área Network, ou rede local), também chamada destub domain (ou domínio stub). Um domínio stub é uma LAN que usa endereços IP internamente. A maior parte do tráfego de rede neste tipo de domínio é local, e portanto não sai da rede interna. O stub domain pode ter endereços IP privativos e públicos. É claro que qualquer computador que esteja usando um endereço IP privativo precisará do NAT para se comunicar com o resto do mundo.

O NAT pode ser configurado de várias maneiras. No exemplo abaixo, o roteador NAT está configurado para traduzir endereços IP privativos, da rede interna, para endereços IP públicos. Isto acontece sempre que um dispositivo interno com um endereço privativo precisa se comunicar com a rede pública (externa).

  • Um provedor de internet (ISP) designa uma faixa de endereços IP para a sua empresa. Este bloco contém endereços IP públicos e exclusivos, e são chamados de endereços "globais internos". Endereços IP privativos são divididos em dois grupos. Um deles é um grupo pequeno (endereços "locais externos") que vão ser usados pelos roteadores NAT. O outro, um grupo bem maior, conhecido por endereços "locais interno", será usado na rede interna. Os endereços locais externos local são usados para traduzir os endereços IP exclusivos, conhecidos como endereços "globais externos", de dispositivos na rede pública.


Endereços IP têm diferentes designações, dependendo do local onde estão ( rede privativa ou  rede pública - internet) e se o tráfego for de entrada ou de saída

  • A maioria dos computadores da rede interna comunica-se usando os endereços "locais internos".
  • Alguns computadores da rede interna comunicam-se muito fora da rede. Estes computadores têm endereços "globais internos", o que significa que não precisam de tradução.
  • Quando um computador na rede interna com um endereço "locais internas" quer se comunicar fora da rede, o pacote vai para um dos roteadores NAT.
  • O roteador NAT confere a tabela de roteamento para ver se há uma entrada para o endereço de destino. Se houver, o roteador NAT traduz o pacote e cria uma entrada para ele na tabela de tradução de endereços. Se o endereço de destino não estiver na tabela de roteamento, o pacote é descartado.
  • Usando um endereço "global interno", o roteador envia o pacote para o seu destino.
  • Um computador na rede pública envia um pacote para a rede privativa. O endereço de origem no pacote é um endereço "global externo", enquanto que o endereço de destino é um endereço "global interno".
  • O roteador NAT examina a tabela de tradução de endereços e determina que o endereço de destino esteja ali, mapeado a um computador na rede interna.
  • O roteador NAT traduz o endereço "global interna" do pacote para um endereço "local interno", e o envia para o computador de destino.

O overloading utiliza uma característica da pilha do protocolo TCP/IP, chamada multiplexação, que permite que um computador mantenha várias conexões simultâneas com um computador (ou computadores) remoto, usando portas TCP ou UDP diferentes. O pacote IP tem um cabeçalho que contém as seguintes informações:

  • endereço de origem - o endereço IP do computador de origem, como por exemplo 201.3.83.132
  • porta de origem - o número da porta TCP ou UDP designada pelo computador de origem para o pacote, como porta 1080
  • endereço de destino - o endereço IP do computador que vai receber o pacote, como 145.51.18.223
  • porta de destino - o número da porta TCP ou UDP que o computador de origem pede para o computador de destino abrir, como porta 3021

Os endereços especificam as duas máquinas em cada ponta, enquanto os números de porta garantem que a conexão entre os dois computadores possua um identificador único. A combinação destes quatro números define uma conexão TCP/IP única. Cada número de porta usa 16 bits, o que significa que existem 65.536 (216) valores possíveis. Na verdade, como cada fabricante mapeia as portas de um jeito diferente, existem cerca de 4 mil portas disponíveis.

NAT dinâmico e overloading

O NAT dinâmico funciona assim:
  • uma rede interna foi configurada com endereços IP que não foram especificamente alocados para aquela empresa, pela IANA (Internet Assigned Numbers Authority - em inglês), a autoridade mundial que distribui endereços IP. Estes endereços devem ser considerados não roteáveis, já que não são únicos;

  • a empresa configura um roteador compatível com o NAT. O roteador tem uma faixa de endereços IP exclusivos fornecidos à empresa pela IANA;

  • um computador da rede interna tenta se conectar a um computador da rede externa, como, por exemplo, um servidor de Internet;

  • o roteador recebe o pacote do computador da rede interna;

  • o roteador salva o endereço IP não roteável do computador em uma tabela de tradução de endereços. O roteador substitui o endereço IP não roteável do computador de origem pelo primeiro endereço IP disponível na faixa de endereços IP exclusivos. A tabela de tradução agora tem um mapeamento do endereço IP não roteável do computador, correspondente a um dos endereços IP exclusivos;

  • quando um pacote volta do computador de destino, o roteador confere o endereço de destino no pacote. Ele então busca na tabela de tradução de endereços o computador da rede interna ao qual o pacote pertence. Ele muda o endereço de destino para um dos endereços salvos na tabela de tradução e envia o pacote para aquele computador. Se ele não encontrar um correspondente na tabela, descartará o pacote;

  • o computador recebe o pacote do roteador. O processo se repete enquanto o computador estiver se comunicando com o sistema externo;

O overloading funciona assim:

  • uma rede interna foi configurada com endereços IP não roteáveis que não foram especificamente alocados à empresa pela IANA;

  • a empresa configura um roteador compatível com o NAT. O roteador tem um endereço IP exclusivo fornecido à empresa pela IANA;

  • um computador da rede interna tenta se conectar a um computador da rede externa, como, por exemplo, um servidor de internet;

  • o roteador recebe o pacote do computador da rede interna;

  • o roteador salva o endereço IP não roteável e o número da porta do computador em uma tabela de tradução de endereços. O roteador substitui o endereço IP não roteável do computador de origem pelo endereço IP do roteador. O roteador substitui a porta de origem do computador que enviou o pacote pelo número da porta que o roteador salvou na tabela de tradução de endereços junto com outras informações de endereço do computador de origem. A tabela de tradução agora tem um mapeamento do endereço IP não roteável e da porta do computador, junto com o endereço IP do roteador;

  • quando um pacote volta do computador de destino, o roteador confere a porta. Ele então busca na tabela de tradução de endereços o computador da rede interna ao qual o pacote pertence. Ele muda o endereço e a porta de destino para um dos endereços salvos na tabela de tradução e envia o pacote para aquele computador;

  • o computador recebe o pacote do roteador. O processo se repete enquanto o computador estiver se comunicando com o sistema externo;

  • como o roteador NAT agora tem o endereço e a porta de origem do computador salvos na tabela de tradução de endereços, ele vai continuar usando o mesmo número de porta enquanto durar a conexão. Um relógio é zerado cada vez que o roteador acessar uma entrada da tabela. Se a entrada não for acessada novamente antes de o tempo expirar, ela é removida da tabela.

Veja nesta tabela como os computadores em uma rede interna seriam vistos por uma rede externa.

Computador
de origem
Endereço IP
do computador
de origem
Porta
do computador
de origem
Endereço IP
do roteador NAT
Número da porta
designado para
o roteador NAT
A
192.168.32.10
400
215.37.32.203
1
B
192.168.32.13
50
215.37.32.203
2
C
192.168.32.15
3750
215.37.32.203
3
D
192.168.32.18
206
215.37.32.203
4

Como você pode ver, o roteador NAT armazena o endereço IP e número de porta de cada computador na tabela de tradução de endereço. Ele então substitui o endereço IP pelo seu próprio endereço IP público e o número da porta correspondente ao local, na tabela, da entrada para o computador de origem do pacote. Portanto, qualquer rede externa vê o endereço IP do roteador NAT e o número de porta designado pelo roteador como informações do computador de origem em cada pacote.

Você pode ter ainda alguns computadores na rede interna que usam endereços IP dedicados. Você também pode criar uma lista de acesso de endereços IP que dizem ao roteador quais computadores na rede precisam do NAT. Todos os outros endereços vão passar sem tradução.

O número de traduções simultâneas que o roteador suporta é determinado principalmente pela quantidade de memória DRAM (Dynamic Random Access Memory, ou memória de acesso randômico dinâmico) que ele tem. Mas como uma entrada na tabela de tradução de endereços tem cerca de 160 bytes apenas, um roteador com 4MB de DRAM teoricamente poderia processar 26.214 traduções simultâneas, o que é suficiente para a maioria das aplicações.

A IANA separou faixas de endereços IP não roteáveis para uso em redes internas. Estes endereços são considerados privativos (para mais informações, confira RFC 1918: Alocação de endereços para redes internas - inglês). Nenhuma empresa ou agência pode reclamar a posse de endereços privativos ou usá-los em computadores públicos. Os roteadores descartam (ao invés de encaminharem) endereços privativos. Isto significa que um pacote de um computador com endereço privativo poderia chegar ao computador de destino, mas a resposta seria descartada pelo primeiro roteador ao qual o pacote chegasse.

Há uma faixa para cada uma das três classes de endereços IP usados para redes:

  • Faixa 1: classe A - 10.0.0.0 até 10.255.255.255
  • Faixa 2: classe B - 172.16.0.0 até 172.31.255.255
  • Faixa 3: classe C - 192.168.0.0 até 192.168.255.255
Apesar de cada faixa estar em uma classe diferente, você não precisa usar uma faixa específica para a sua rede interna. Porém, é recomendável usar, porque reduz bastante a chance de conflito de endereços IP.

Segurança e administração

Implementar o NAT dinâmico automaticamente cria um firewall entre a rede interna e as redes externas, ou entre a sua rede interna e a Internet. O NAT só permite conexões que têm origem na rede interna. Ou seja, um computador de uma rede externa não pode se conectar ao seu computador a não ser que o seu tenha iniciado o contato. Você pode navegar na Internet e se conectar a um site, e até mesmo fazer o download de um arquivo; mas alguém de fora não consegue pegar seu endereço IP e usá-lo para se conectar a uma porta no seu computador.

Em casos específicos, o NAT Estático, também chamado de mapeamento de entrada, permite que dispositivos externos iniciem conexões a computadores da rede interna. Por exemplo, se você quisesse ir de um endereço "global interna" para um endereço "local interna" específico, atribuído ao seu servidor web, o NAT estático habilitaria esta conexão.


O NAT estático (mapeamento de entrada) permite que um computador na rede interna mantenha um endereço específico quando se comunicar com dispositivos fora da rede

Alguns roteadores NAT fornecem filtragem extensiva e registro de tráfego. A filtragem permite que sua empresa controle os sites que os funcionários podem visitar na Internet, evitando que eles acessem material indevido. Você pode usar o registro de tráfego para criar um arquivo de registro de quais sites são visitados e gerar vários relatórios a partir dele.

O NAT às vezes é confundido com servidores proxy, mas há diferenças entre eles. O NAT é invisível para os computadores de origem e de destino. Nenhum dos dois percebe que está lidando com um terceiro dispositivo. Mas o servidor proxy não é transparente. O computador de origem sabe que está fazendo um pedido para o servidor proxy e deve ser configurado para fazê-lo. O computador de destino pensa que o servidor proxy é o computador de origem, e conversa com ele diretamente. Além disso, os servidores proxy geralmente trabalham na camada 4 (transporte) do Modelo de Referência OSI (em inglês) ou acima dela, enquanto o NAT é um protocolo de camada 3 (rede). Trabalhar na camada mais alta faz os servidores proxy serem mais lentos do que dispositivos NAT, na maioria dos casos.


O NAT opera na camada de rede (camada 3) do Modelo de Referência OSI - esta é a camada na qual os roteadores trabalham

Um benefício real do NAT fica claro na administração de rede. Por exemplo, você pode mudar seu servidor web ou servidor FTP para outro computador, sem precisar se preocupar com links quebrados. Basta mudar o mapeamento de entrada no roteador para o novo computador. Você também pode fazer mudanças na sua rede interna com maior facilidade, pois o único endereço IP externo pertence ao roteador ou vem de um conjunto de endereços globais.

NAT e DHCP (dynamic host configuration protocol, ou protocolo de configuração de host dinâmico) andam juntos. Você pode escolher uma faixa de endereços IP privativos para sua rede interna e deixar o servidor DHCP distribuí-los conforme necessário. Também facilita bastante na hora de aumentar a rede, conforme suas necessidades. Você não precisa pedir mais endereços IP para a IANA. Ao invés disso, você pode aumentar a faixa de endereços IP disponíveis configurados no DHCP e imediatamente abrir espaço para mais computadores na sua rede.

Multi-homing

Como as empresas usam cada vez mais a Internet, possuir múltiplos pontos de conexão está rapidamente se tornando parte integrante de estratégias de rede. Múltiplas conexões, conhecidas como multi-homing, reduzem a chance de acontecer uma parada catastrófica se uma das conexões falhar.

Além de manter uma conexão confiável, o multi-homing permite que a empresa equilibre a carga, diminuindo o número de computadores que acessam a Internet por qualquer uma das conexões. Distribuir a carga em conexões múltiplas otimiza o desempenho e diminui bastante os tempos de espera.

As redes multi-homing geralmente são conectadas a vários provedores de Internet diferentes. Cada provedor designa um endereço IP (ou uma faixa de endereços IP) para a empresa. Os roteadores usam oBGP (Border Gateway Protocol), que é parte da suíte do protocolo TCP/IP, para rotear entre as redes usando protocolos diferentes. Em uma rede multi-homing, o roteador utiliza o IBGP (Internal Border Gateway Protocol) na rede interna e o EBGP (External Border Gateway Protocol) para se comunicar com outros roteadores.

O multi-homing faz toda a diferença se uma das conexões a um provedor cair. Assim que o roteador conectado a este provedor identifica que a conexão caiu, ele transfere todos os dados para um dos outros roteadores.

O NAT pode ser usado para facilitar o roteamento expansível para multi-homing, de múltiplos provedores. Para maiores informações sobre multi-homing, visite Cisco: Habilitando o Multihoming Corporativo (em inglês).

0 comentários :

Enviar um comentário