NAT (Network Address Translation) IV

Na 3ª parte deste artigo vimos o processo de encaminhamento e recepção de pacotes numa rede habilitada com NAT. Uma tecnica como NAT suporta sobrecarga de endereços onde um unico endereço inside global suporta todo o processo NAT. Na realidade esta é a tecnica mais utilizada na prática já que os endereços publicos sao caros e definir uma pool de endereços publicos numa pequena ou média organização sairia dispendioso.

Como isto funciona? Repare na figura abaixo:

É definido um unico endereço inside global. Quando o host 10.1.1.2 deseja enviar um pacote para o endereço outside global 192.168.0.1 o roteador consulta a sua tabela NAT e realiza a tradução. Como apenas existe um endereço inside global o roteador retira o endereço inside local 10.1.1.2 do cabeçalho e adiciona ao cabeçalho o endereço de origem inside global 172.16.0.1. Mas antes a tabela NAT é adicionada uma tradução como listada acima: Para diferenciar os endereços dos hosts inside local 10.1.1.2 e 10.1.1.3 com um unico endereço inside global 172.16.0.1 sao atribuidas portas.

No caso dos endereços inside local o numero de portas começa a partir de 1024.

Como se pode observar na tabela acima o endereço inside local 10.1.1.2:1723 é associado ao endereço inside global 172.16.0.1:1723.

Conforme ia dizendo assim que o cabeçalho é encaminhado ao destino 192.168.0.1:23 nenhuma informação a respeito do endereço inside local existe no cabeçalho ip. Quando o endereço inside global 192.168.0.1:23 (o destino) responde ao host 10.1.1.2 como o roteador consegue associar o pacote recebido do destino com o host 10.1.1.2 já que a informação sobre o host 10.1.1.2 foi removida do cabeçalho e este cabeçalho apenas possui informação sobre o endereço inside global 172.16.0.1 (endereço de origem)?

Simples! Quando o pacote chega a interface serial do roteador o mesmo consulta a sua tabela NAT e  associa o endereço inside global 172.16.0.1:1723 ao endereço inside local 10.1.1.2:1723 encaminhado o pacote ao seu destino.

Anúncios

NAT (Network Address Translation) III

Na segunda parte desta artigo falamos sobre os elementos da rede NAT identificados como Inside. Repare na figura abaixo:

Imaginemos que o dispositivo Inside Local com endereço 10.2.2.8 quer enviar um pacote ao servidor 199.19.9.10. O pacote quando chega ao roteador RT001, este verifica na sua tabela NAT se existe uma tradução estatica ja configurada, do tipo:

Inside Local Address Inside Global Address
10.2.2.8 200.230.207.2

Se existe então o roteador RT001 remove do cabeçalho o endereço IP Inside Local 10.2.2.8 de origem e adiciona o endereço IP Inside Global 200.230.207.2 e encaminha o pacote ao destino Outside Global 199.19.9.10.

Se nao existe uma tradução estatica, então o roteador RT001 trata de adicionar uma entrada a tabela NAT (como a de cima) e de seguida encaminha o pacote ao destino Outside Global 199.19.9.10.

Quando o host 199.19.9.10 desejar enviar um pacote ao host Inside Local 10.2.2.8, ele utiliza o endereço Inside Global 200.230.207.2 e daí o pacote chega ao roteador RT001. O roteador RT001 consulta a sua tabela NAT para verificar se existe uma entrada que relaciona o endereço Inside Global 200.230.207.2 ao endereço Inside Local 10.2.2.8. Se existe uma entrada que verifique a condição o pacote é encaminhado ao endereço Inside Local 10.2.2.8.

NAT (Network Address Translation) II

Na primeira parte foi dada uma introduçao ao NAT e aos seus tipos. A Cisco define os dispositivos dentro duma rede NAT como pertencentes a Inside (dentro) ou Outside (fora). Como o processo NAT consiste em traduzir endereços isto significa que os endereços privados serão traduzidos em endereço(s) publicos antes de sairem da rede interna, porque como dissemos endereços privados nao podem ser roteados, então sao necessarios endereços publicos e o NAT encarrega de criar tabelas de tradução tal que um pacote com endereço de origem pertencente a rede local seja roteavel por um endereço publico.

Mas, vamos por parte. Os elementos da rede pertencentes a Inside sao divididos em Inside Local e Inside Global.

Inside Local – Todo dispositivo na rede local sujeito a tradução e que possua um endereço privado.
Inside Global – Endereço publico que fará a tradução dos pacotes vindos de endereços privados.

Os elementos da rede pertencentes a Outside sao divididos em Outside Local e Outside Global.

Outside Local – Todo dispositivo local pertencente a Outside.
Outside Global – Endereço publico de Outside que faz a tradução de pacotes vindos de endereços privados de Outside.

Pela figura:

No diagrama acima a zona Inside Local é composta pelos endereços privados por detras do Router (192.168.100.100 e 192.168.100.1).

A zona Inside Global é composta pelo endereço publico da interface S0 (no link ponto a ponto) que é 200.200.200.1.

No proximo artigo daremos continuação abordando os endereços Outside.

NAT (Network Address Translation) I

Com o objectivo de se poupar espaço de endereçamento para se diminuir o rápido esgotamento de endereços publicos inumeras tecnicas foram criadas e uma delas é a tradução de endereços de rede. O seu funciomanento aproveita-se do facto de estarem definidos um 3 conjuntos de endereços de classe A, B e C considerados privados, e sao privados por nao serem roteaveis na Internet.

Deste modo é possivel atribuir a redes locais tal conjunto de endereços descartanto assim o uso de endereços atribuidos por entidades como AfriNIC ou IANA.

Por outro lado, também urge salientar a sua grande utilidade em questões de segurança. Se estes endereços nao sao roteaveis na Internet quer dizer então que nao podem ser atacados a partir da Internet e neste caso por exemplo, pela logica, Worms nao atingem hosts endereços privados. Bom isso é um assunto em discussão.

A Cisco (sim, NAT também o possuem servidores Windows e *.Nix) implementa NAT no Cisco IOS, e por isso definiu os seguintes tipos de NAT:

Nat Estatico – Aqui um pacote vindo de um endereço local é traduzido para um endereço publico ou global que seja valido, claro, roteavel na Internet.

Nat Dinamico – Aqui um pacote vindo de um ou varios endereços locais é traduzido para uma pool (conjunto) de endereços globais e roteaveis.

Overload (PAT) – Aqui um pacote vindo de um ou varios endereços locais é traduzido para um unico endereço global. Este tipo de NAT é também conhecido como Port Address Translation, visto que o endereço global ou roteavel usa um conjunto de canais ou portas para encaminhar os pacotes locais para a Internet.

No proximo artigo veremos como se definem os dispositivos NAT na rede.

O processo NAT

Como o nome mesmo diz, trata-se duma tradução de endereços de rede. Acontece que com a exaustão dos endereços de rede tornou-se necessario encontrar-se formas de permitir a redução do uso de endereços publicos e o NAT juntamente com o uso de endereços privados foi uma das soluções que hoje sao amplamente usadas.

Definiu-se um conjunto de endereços IP que seriam conhecidos como privados e cujos pacotes apenas poderão ser usados numa rede local. Estes pacotes nunca poderão ser roteados para fora ou seja para a Internet.

As seguintes faixas de endereços privados sao conhecidas e usadas

10.0.0.0 até 10.255.255.255

172.16.1.0 até 172.16.31.255

192.168.1.0 até 192.168.255.255

Qualquer uma das faixas acima poderá ser usada para endereçar e criar subredes dentro da sua rede local. Pois bem, então é aí que entra o NAT, porque se estes pacotes sao encaminhados para fora da rede, não serão reconhecidos e como nao sao conhecidos precisam de ser ‘trocados’ por um endereço que seja reconhecido na Internet.

Mas existem ainda algumas coisas a serem identificadas e nomeadas dentro dum processo NAT. Atentemos a figura abaixo:

Concentremo-nos apenas nas redes 10.1.1.0/24 e 10.1.2.0/24

Inside Local IP Address – Endereço da Interface Ethernet do Host 1 (No caso acima a e0 que tem o endereço 10.1.1.2).

Outside Global IP Address – Endereço da Interface Ethernet do Host x (que nao aparece na figura) outra rede ou seja do outro extremo (10.1.2.2)

Inside Global IP Address – Embora nao visto acima, é este endereço que assume os endereços a serem traduzidos. Geralmente sao endereços atribuidos as interfaces de redes ponto a ponto.  Geralmente uma conexão ponto a ponto é vista como se estivesse ligada apenas entre 2 pontos remotos por uma antena e nao sendo tao verdade assim, para não fugir ao assunto dizer apenas que estes 2 pontos extremos para se comunicarem necessitam de ser endereços da mesma rede. Logo se um destes endereços participa do processo NAT e recebe um pacote da sua rede interna ele pode encaminha-lo ao outro extremo que está imaginemos em Cacuaco pois se encontra na mesma rede e vice-versa.

Vamos a um exemplo.

Imagine que você pertença ao provedor EMPRESAx. Assim que se conecta a rede interna do provedor entrega um endereço privado de classe C digamos 192.168.2.57. Vc ainda nao tem acesso a Internet razão pela qual apenas consegue chegar ao gateway da mesma (no Windows tente com um ipconfig e depois um ping) mas não consegue pingar para fora ou seja a Internet.
Então o processo NAT dinamico (já falo disso) é activado e o seu pacote de ping ao chegar a interface de saída do roteador para sair a Internet sofre uma alteração do seu endereço que passa agora a ser um endereço global, já definido pela empresa numa Pool de endereços globais ou por sobrecarga de endereço.
E assim acontece com todo e qualquer pacote que necessite de ir a Internet buscar ou enviar dados. Muito bem, mas já que o endereço foi trocado como o pacote sabe aonde voltar? A pergunta é boa e a resposta é simples e bem conhecida.

Durante o processo NAT em que o  Inside Local IP Address é trocado pelo  Outside Global IP Address, existe uma tabela conhecida como tabela NAT que se encarrega de armazenar tanto o Inside Local IP Address como o Outside Local IP Address para que quando o pacote de volta a rede do provedor receba o pedido o cabeçalho IP seja novamente trocado e o campo de endereço receba novamente o Inside Local IP Address e assim possa ser encaminhado ao respectivo dispositivo (computador, etc).

Tipos de NAT

Nat Estatico – É o NAT mais conhecido. A tradução é realizada endereço por endereço. Nao é aconselhavel para uma rede que possua varios dispositivos.

Nat Dinamico – O mais fiavel. É estabelecido por meio de uma Pool de endereços Globais que estão prontos para serem roteaveis pela Internet.

Pool de endereços – Na realidade quando o processo NAT é realizado de forma dinamica existe uma faixa de endereços publicos devidamente reconhecidos e roteaveis pela Internet que podem ser usados por qualquer dispositivo interno a empresa para tranportar dados. Cabe ao dispositivo (servidor, router) que realiza o processo NAT decidir qual usar. Por exemplo a faixa que vai de 196.3.4.1/24 a 196.3.4.10/24, qualquer um destes endereços da faixa ou pool pode ser usado para endereçar um dispositivo que precisa ir a Internet.

PAT (Port Address Translation) – Tradução de endereços por porta. Neste tipo de tradução um unico endereço Global pode ser usado para muitas maquinas já que a cada endereço Local que recebe o mesmo Global diferencia-se pelo numero da porta. Por exemplo a rede abaixo (Imagem ZDNet):

Este é o exemplo tipico de rede que muitas empresas adotam. Para uma rede domestica elimine o roteador e fique apenas com o MODEM. Note que existem 3 computadores com os endereços de classe C .1, .2 e .3 (abreviando) mas note que o roteador realiza um processo de NAT/PAT trocando os cabeçalhos de cada um dos pacotes enviandos por estes computadores a Internet por um endereço global 213.31.218.101 com a diferença que cada um deles tem uma porta diferente, ou seja  sequencialmente 213.31.218.101:5001, 213.31.218.101:5002 e 213.31.218.101:5003 e assim sucessivamente até alcançar todas as portas válidas( 0 até 2^16), pulando automaticamente ao proximo endereço da Pool (se disponivel) para começar a alocar mais endereços dando deste jeito uma melhor e mais apurada forma de endereçar clientes da rede interna poupando endereços publicos.