Infra - Redes

Tutorial de TCP/IP – Parte 20 – NAT – Network Address Translation

Nesta 20ª parte será a vez de falar um pouco mais sobre o serviço (ou protocolo como preferem alguns) NAT – Network Address Transaltion. Você entenderá o que é o NAT e qual a sua função na conexão de uma rede com a Internet.

por Júlio Cesar Fabris Battisti



Introdução:

Prezados leitores, esta é a vigésima e última parte, desta primeira etapa dos tutoriais de TCP/IP. As partes de 01 a 20, constituem o módulo que eu classifiquei como Introdução ao TCP/IP. O objetivo deste módulo foi apresentar o TCP/IP, mostrar como é o funcionamento dos serviços básicos, tais como endereçamente IP e Roteamento e fazer uma apresentação dos serviços relacionados ao TCP/IP, tais como DNS, DHCP, WINS, RRAS, IPSec, Certificados Digitais, ICS, compartilhamento da conexão Internet e NAT (assunto desta parte, ou seja Parte 20 do tutorial). Serão disponibilizados mais 20 tutoriais de TCP/IP (de 21 a 40), nas quais falarei mais sobre os aspectos do protocolo em si, tais como a estrutura em camadas do TCP/IP e um maior detalhamento sobre cada um dos protocolos que formam o TCP/IP: TCP, IP, UDP, ARP, ICMP e por aí vai.

Esta é a vigésima parte do Tutorial de TCP/IP. Na Parte 1 tratei dos aspectos básicos do protocolo TCP/IP. Na Parte 2 falei sobre cálculos binários, um importante tópico para entender sobre redes, máscara de sub-rede e roteamento. Na Parte 3 falei sobre Classes de endereços, na Parte 4 fiz uma introdução ao roteamento e na Parte 5 apresentei mais alguns exemplos/análises de como funciona o roteamento e na Parte 6 falei sobre a Tabela de Roteamento. Na Parte 7 tratei sobre a divisão de uma rede em sub-redes, conceito conhecido como subnetting. Na Parte 8 fiz uma apresentação de um dos serviços mais utilizados pelo TCP/IP, que é o Domain Name System: DNS. O DNS é o serviço de resolução de nomes usado em todas as redes TCP/IP, inclusive pela Internet que, sem dúvidas, é a maior rede TCP/IP existente. Na Parte 9 fiz uma introdução ao serviço Dynamic Host Configuration Protocol - DHCP. Na Parte 10 fiz uma introdução ao serviço Windows Internet Name Services - WINS. Na Parte 11 falei sobre os protocolos TCP, UDP e sobre portas de comunicação. Parte 12, mostrei como são efetuadas as configurações de portas em diversos aplicativos que você utiliza e os comandos do Windows 2000/XP/2003 utilizados para exibir informações sobre portas de comunicação. Na Parte 13 falei sobre a instalação e a configuração do protocolo TCP/IP. Na Parte 14 fiz uma introdução sobre o protocolo de roteamento dinâmico RIP e na Parte 15 foi a vez de fazer a introdução a um outro protocolo de roteamento dinâmico, o OSPF. Na Parte 16 você aprendeu sobre um recurso bem útil do Windows 2000: O compartilhamento da conexão Internet, oficialmente conhecida como ICS - Internet Conection Sharing. Este recurso é útil quando você tem uma pequena rede, não mais do que cinco máquinas, conectadas em rede, todas com o protocolo TCP/IP instalado e uma das máquinas tem conexão com a Internet. Você pode habilitar o ICS no computador que tem a conexão com a Internet. Na Parte 17, você aprendeu a utilizar o IFC - Internet Firewall Connection (Firewall de Conexão com a Internet). O IFC faz parte do Windows XP e do Windows Server 2003, não estando disponível no Windows 2000. O IFC tem como objetivo proteger o acesso do usuário contra "ataques" e "perigos" vindos da Internet. Na Parte 18 fiz uma apresentação sobre o protocolo IPSec. O IPSec faz parte do Windows 2000, Windows XP e Windows Server 2003. O IPSec pode ser utilizado para criar um canal de comunicação seguro, onde todos os dados que são trocados entre os computaodres habilitados ao IPSec, são criptografados. Na Parte 19, fiz uma apresentação sobre o conceito de PKI - Public Key Infrastructure e Certificados Digitais. O Windows 2000 Server e também o Windows Server 2003 disponibilizam serviços para a emissão, gerenciamento e revogação de Certificados Digitais. Falei sobre o papel dos Certificados Digitais em relação à segurança das informações.

Nesta vigésima parte será a vez de falar um pouco mais sobre o serviço (ou protocolo como preferem alguns) NAT - Network Address Transaltion. Você entenderá o que é o NAT e qual a sua função na conexão de uma rede com a Internet.

Nota: Para aprender a instalar, configurar e a administrar os serviçoes relacionados ao TCP/IP, no Windows 2000 Server, tais como o DNS, DHCP, WINS, RRAS, Ipsec, NAT e assim por diante, o livro de minha autoria: Manual de Estudos Para o Exame 70-216, 712 páginas.
T= Network Address Translation. (NAT)

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 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ção 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, senã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:

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 enviada a referida resposta, 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).

Agora que você já sabe o princípio básico do funcionamento do NAT, vamos entender quais os componentes deste serviço no Windows 2000 Server e no Windows Server 2003.

Os componentes do NAT

O serviço NAT é composto, basicamente, pelos seguintes elementos:

  • Componente de tradução de endereços: O NAT faz parte do servidor RRAS. Ou seja, para que você possa utilizar o servidor NAT, para fornecer conexão à Internet para a rede da sua empresa, você deve ter um servidor com o RRAS instalado e habilitado (veja o Capítulo 6 do livro Manual de Estudos Para o Exame 70-216, para detalhes sobre a habilitação do RRAS). O servidor onde está o RRAS deve ser o servidor conectado à Internet. O componente de tradução de endereços faz parte da funcionalidade do NAT e será habilitado, assim que o NAT for configurado no RRAS.

  • Componente de endereçamento: Este componente atua como um servidor DHCP simplificado, o qual é utilizado para concessão de endereços IP para os computadores da rede interna. Além do endereço IP, o servidor DHCP simplificado é capaz de configurar os clientes com informações tais como a máscara de sub-rede, o número IP do gateway padrão (default gateway) e o número IP do servidor DNS. Os clientes da rede interna devem ser configurados como clientes DHCP, ou seja, nas propriedades do TCP/IP, você deve habilitar a opção para que o cliente obtenha um endereço IP automaticamente. Computadores executando o Windows Server 2003 (qualquer edição), Windows XP, Windows 2000, Windows NT, Windows Me, Windows 98 ou Windows 95, são automaticamente configurados como clientes DHCP. Caso um destes clientes tenha sido configurado para usar um IP fixo, deverá ser reconfigurado para cliente DHCP, para que ele possa utilizar o NAT.

  • Componente de resolução de nomes: O computador no qual o NAT é habilitado, também desempenha o papel de um servidor DNS, o qual é utilizado pelos computadores da rede interna. Quando uma consulta para resolução de nomes é enviada por um cliente interno, para o computador com o NAT habilitado, o computador com o NAT repassa esta consulta para um servidor DNS da Internet (normalmente o servidor DNS do provedor de Internet) e retorna a resposta obtida para o cliente. Esta funcionalidade é idêntica ao papel de DNS Proxy, fornecida pelo ICS, conforme descrito anteriormente.

Importante: Como o NAT inclui as funcionalidades de endereçamento e resolução de nomes, você terá as seguintes limitações para o uso de outros serviços, no mesmo servidor onde o NAT foi habilitado:

  • Você não poderá executar o servidor DHCP ou o DHCP Relay Agent no servidor NAT.
  • Você não poderá executar o servidor DNS no servidor NAT.
Um pouco de planejamento antes de habilitar o NAT

Antes de habilitar o NAT no servidor RRAS, para fornecer conexão à Internet para os demais computadores da rede, existem alguns fatores que você deve levar em consideração. Neste item descrevo as considerações que devem ser feitas, antes da habilitação do NAT. Estes fatos ajudam a evitar futuros problemas e necessidade de reconfigurações no NAT.

1. Utilize endereços privados para os computadores da rede interna.

Esta é a primeira e óbvia recomendação. Para o esquema de endereçamento da rede interna, você deve utilizar uma faixa de endereços, dentro de uma das faixas de endereços privados: 10.0.0.0/255.0.0.0, 172.16.0.0/255.240.0.0 ou 192.168.0.0/255.255.0.0. Você pode utilizar diferentes máscaras de sub-rede, de acordo com as necessidades da sua rede. Por exemplo, se você tiver uma rede com 100 máquinas, pode utilizar um esquema de endereçamento: 10.10.10.0/255.255.255.0, o qual disponibiliza até 254 endereços. Por padrão, o NAT utiliza o esquema de endereçamento 192.168.0.0/255.255.255.0. Porém é possível alterar este esquema de endereçamento, nas configurações do NAT. Lembre-se que, uma vez habilitado o NAT, este passa a atuar como um servidor DHCP para a rede interna, fornecendo as configurações do TCP/IP para os clientes da rede interna. Com isso, nas configurações do NAT (para todos os detalhes sobre as configurações do NAT, consulte o Capítulo 7 do livro Manual de Estudos Para o Exame 70-216), você define o escopo de endereços que será fornecido para os clientes da rede.

Nota: Você também poderia configurar a sua rede interna com uma faixa de endereços IP válidos, porém não alocados diretamente para a sua empresa. Ou seja, você estaria utilizando na rede interna, um esquema de endereçamento que foi reservado para uso de outra empresa. Esta não é uma configuração recomendada e é conhecida como: "illegal or overlapping IP addressing". O resultado prático é que, mesmo assim, você conseguirá usar o NAT para acessar a Internet, porém não conseguirá acessar os recursos da rede para o qual o esquema de endereçamento foi oficialmente alocado. Por exemplo, se você resolveu usar o esquema de endereçamento 1.0.0.0/255.0.0.0, sem se preocupar em saber para quem esta faixa de endereços foi reservado. Mesmo assim você conseguirá acessar a Internet usando o NAT, você apenas não conseguirá acessar os recursos e servidores da empresa que usa, oficialmente, o esquema de endereçamento 1.0.0.0/255.0.0.0, que você resolveu utilizar para a rede interna da sua empresa.

Ao configurar o NAT, o administrador poderá excluir faixas de endereços que não devem ser fornecidas para os clientes. Por exemplo, se você tiver alguns equipamentos da rede interna (impressoras, hubs, switchs, etc) que devam ter um número IP fixo, você pode excluir uma faixa de endereços IP no servidor NAT e utilizar estes endereços para configurar os equipamentos que, por algum motivo, precisam de um IP fixo.

2. Usar um ou mais endereços IP públicos.

Se você estiver utilizando um único endereço IP, fornecido pelo provedor de Internet, não serão necessárias configurações adicionais no NAT. Porém se você obtém dois ou mais endereços IP públicos, você terá que configurar a interface externa do NAT (interface ligada a Internet), com a faixa de endereços públicos, fornecidos pelo provedor de Internet. A faixa é informada no formato padrão: Número IP/Máscara de sub-rede. Pode existir situações em que nem todos os números fornecidos pelo provedor possam ser informados usando esta representação. Nestas situações pode acontecer de você não poder utilizar todos os endereços disponibilizados pelo provedor de Internet, a não ser que você utilize a representação por faixas, conforme descrito mais adiante.

Se o número de endereços fornecido for uma potência de 2 (2, 4, 8, 16, 32, 64 e assim por diante), é mais provável que você consiga representar a faixa de endereços no formato Número IP/Máscara de sub-rede. Por exemplo, se você recebeu quatro endereços IP públicos: 206.73.118.212, 206.73.118.213, 206.73.118.214 e 206.73.118.215. Esta faixa pode ser representada da seguinte maneira: 206.73.118.212/255.255.255.252.

Nota: Para maiores detalhes sobre a representação de faixas de endereços IP e máscaras de sub-rede, consulte as seguintes partes deste tutorial: Parte 1, Parte 2, Parte 3 e Parte 4.

Caso não seja possível fazer a representação no formato Número IP/Máscara de sub-rede, você pode informar os endereços públicos como uma série de faixas de endereços, conforme exemplo a seguir:

» 206.73.118.213 -> 206.73.118.218
» 206.73.118.222 -> 206.73.118.240

3. Permitir conexões da Internet para a rede interna da empresa

O funcionamento normal do NAT, permite que sejam feitas conexões da rede privada para recursos na Internet. Por exemplo, um cliente da rede acessando um servidor de ftp na Internet. Neste caso, o cliente executando um programa cliente de ftp, faz a conexão com um servidor ftp da Internet. Quando os pacotes de resposta chegam no NAT, eles podem ser repassados ao cliente, pois representam a resposta a uma conexão iniciada internamente e não uma tentativa de acesso vinda da Internet.

Você pode querer fornecer acesso a um servidor da rede interna, para usuários da Internet. Por exemplo, você pode configurar um servidor da rede interna com o IIS e instalar neste servidor o site da empresa. Em seguida você terá que configurar o NAT, para que os usuários da Internet possam acessar este servidor da rede interna. Observe que nesta situação, chegarão pacotes da Internet, os quais não representarão respostas a requisições dos clientes da rede interna, mas sim requisições de acesso dos usuários da Internet, a um servidor da rede interna. Por padrão este tráfego será bloqueado no NAT. Porém o administrador pode configurar o NAT para aceitar requisições vindas de clientes da Internet, para um servidor da rede interna. Para fazer estas configurações você deve seguir os seguintes passos:

Para permitir que usuários da Internet, acessem recursos na sua rede interna, siga os passos indicados a seguir:

  • O servidor da rede interna, que deverá ser acessado através da Internet, deve ser configurado com um número IP fixo (número que faça parte da faixa de endereços fornecidos pelo NAT, para uso da rede interna) e com o número IP do default gateway e do servidor DNS (o número IP da interface interna do computador com o NAT habilitado).

  • Excluir o endereço IP utilizado pelo servidor da rede Interna (servidor que estará acessível para clientes da Internet) da faixa de endereços fornecidos pelo NAT, para que este endereço não seja alocado dinamicamente para um outro computador da rede, o que iria gerar um conflito de endereços IP na rede interna.

  • Configurar uma porta especial no NAT. Uma porta especial é um mapeamento estático de um endereço público e um número de porta, para um endereço privado e um número de porta. Esta porta especial faz o mapeamento das conexões chegadas da internet para um endereço específico da rede interna. Com o uso de portas especiais, por exemplo, você pode criar um servidor HTTP ou FTP na rede interna e torná-lo acessível a partir da Internet.

Nota: Para aprender os passos práticos para a criação de portas especiais no NAT, consulte o Capítulo 7 do livro: Manual de Estudos Para o Exame 70-216.

4. Configurando aplicações e serviços.

Algumas aplicações podem exigir configurações especiais no NAT, normalmente com a habilitação de determinadas portas. Por exemplo, vamos supor que você está usando o NAT para conectar 10 computadores de uma loja de jogos, com a Internet. Pode ser necessária a habilitação das portas utilizadas por determinados jogos, para que estes possam ser executados através do NAT. Se estas configurações não forem feitas, o NAT irá bloquear pacotes que utilizem estas portas e os respectivos jogos não poderão ser acessados.

5. Conexões VPN iniciadas a partir da rede interna.

No Windows 2000 Server não é possível criar conexões VPN L2TP/IPSec, a partir de uma rede que utilize o NAT. Esta limitação foi superada no Windows Server 2003.

Muito bem, de teoria sobre NAT é isso.

Conclusão

Nesta parte do tutorial fiz uma breve apresentação sobre o serviço de tradução de endereços - NAT - Network Address Translation. Esta foi a vigésima e última parte, desta primeira etapa dos tutoriais de TCP/IP. As partes de 01 a 20, constituem o módulo que eu classifiquei como Introdução ao TCP/IP. O objetivo deste módulo foi apresentar o TCP/IP, mostrar como é o funcionamento dos serviços básicos, tais como endereçamente IP e Roteamento e fazer uma apresentação dos serviços relacionados ao TCP/IP, tais como DNS, DHCP, WINS, RRAS, IPSec, Certificados Digitais, ICS, compartilhamento da conexão Internet e NAT (assunto desta parte, ou seja Parte 20 do tutorial). No decorrer de 2004 serão disponibilizados mais 20 tutoriais de TCP/IP (de 21 a 40), nas quais falarei mais sobre os aspéctos do protocolo em si, tais como a estrutura em camadas do TCP/IP e detalhes um maior detalhamento sobre cada um dos protocolos que formam o TCP/IP: TCP, IP, UDP, ARP, ICMP e por aí vai.

Júlio Cesar Fabris Battisti

Júlio Cesar Fabris Battisti