NAT

De MediaWiki do Campus São José
Revisão de 22h28min de 27 de novembro de 2016 por Douglas.as1997 (discussão | contribs)
Ir para navegação Ir para pesquisar

Introdução

Com o surgimento das redes privadas com internet compartilhada, surgiu o problema de como os computadores pertencentes a esta rede privada poderiam receber as respostas aos seus pedidos

feitos para fora da rede.

Por se tratar de uma rede privada, os números de IP interno da rede (como 10.0.0.0/8, 172.16.0.0/16 e 192.168.0.0/24) nunca poderiam ser passados para a Internet pois não são roteados nela e o

computador que recebesse um pedido com um desses números não saberia para onde enviar a resposta. Sendo assim, os pedidos teriam de ser gerados com um IP global do router. Mas quando a resposta chegasse ao router, seria preciso saber a qual dos computadores presentes na LAN pertencia aquela resposta.

A solução encontrada foi fazer um mapeamento baseado no IP interno e na porta local do computador. Com esses dois dados o NAT gera um número de 16 bits usando a tabela hash, este número é

então escrito no campo da porta de origem.

O pacote enviado para fora leva o IP global do router e na porta de origem o número gerado pelo NAT. Desta forma o computador que receber o pedido sabe para onde tem de enviar a resposta.

Quando o router recebe a resposta faz a operação inversa, procurando na sua tabela uma entrada que corresponda aos bits do campo da porta. Ao encontrar a entrada, é feito o direcionamento para o computador correto dentro da rede privada.

Esta foi uma medida de reação face à previsão da exaustão do espaço de endereçamento IP, e rapidamente adaptada para redes privadas também por questões econômicas (no início da Internet os

endereços IP alugavam-se, quer individualmente quer por classes/grupos).

PAT

NAT, PAT (NAT Overload) e Proxy são as formas de traduzir IPs privados (não roteáveis) em IPs válidos. Nesta página daremos foco total a NAT e PAT.
O NAT (Network Adress Translation) é definido na RFC 1918 e foi criado com a finalidade de economizar endereços IPv4 válidos, mas também é usado como método de segurança em alguns

casos. O conceito principal é bastante simples, porém a aplicação da funcionalidade em cenários diversos gera derivações com nomes diferentes, chamados “tipos de NAT”.

Na imagem abaixo é possível observar o funcionamento do NAT em uma rede SOHO.

NAT Imagem 1 Redes.png


O NAT caracteriza-se por fazer a tradução do IP privado para IP válido quando a rede possui apenas um dispositivo (PC, smartphone, etc), praticamente como se aquele dispositivo tivesse um IP

válido configurado em sua placa de rede. Hoje em dia, não é comum encontrar redes com o NAT funcionando igual o descrito acima. Em nossas redes domésticas costumamos usar o PAT (Port Adress Translation, também conhecido como NAT Overload), que é muito confundido com o NAT. O PAT nos permite acessar à internet a partir de vários dispositivos simultaneamente. Ele faz isso através do uso de portas TCP e UDP para identificar as conexões, temos um total de 2^16 portas disponíveis (muitas são pré alocadas para serviços de rede, portanto a quantidade 2^16 cairá). Na imagem abaixo é possível observar como PAT funciona em redes como as de nossas casas.

NAT Imagem 2 Redes.png

Tipos de NAT

Há várias maneiras de implementar o endereço de rede e a tradução de portas. Em alguns protocolos de aplicação que usam informações de endereço IP, o aplicativo em execução precisa determinar

o endereço externo do NAT, ou seja, o endereço que seus pares de comunicação detectam e, além disso, muitas vezes precisa examinar e categorizar o tipo de mapeamento em uso.Geralmente isso é feito porque é desejado configurar um caminho de comunicação direta entre dois clientes, os quais estão por trás de NATs separados.

Para isso, foi desenvolvido o protocolo Simple traversal of UDP over NATs (STUN) (RFC 3489, março de 2003). Ele classificou a implementação de NAT como Full Cone NAT, Restricted Cone

NAT, Port-Restricted Cone NAT, Symmetric NAT: e propôs uma metodologia para testar um dispositivo de acordo. Contudo, estes procedimentos foram desde então obsoletos do estado de normas, uma vez que os métodos são inadequados para avaliar corretamente muitos dispositivos. Novos métodos foram padronizados no RFC 5389 (outubro de 2008) e o acrônimo STUN agora representa o novo título da especificação: Session Traversal Utilities for NAT.

Full Cone NAT:

É o único tipo de NAT onde a porta estará permanentemente aberta, e permite conexão de host externo. O “Full cone NAT” mapeia um endereço IP público e uma porta para um IP da LAN,

conhecido como redirecionamento de portas.

Exemplo: Um PC na LAN (IP: 192.168.0.2) tem um serviço rodando na porta 80, é criado uma regra no roteador (IP WAN: 81.45.87.98), onde é direcionado qualquer acesso que venha pela porta

80* externa para o IP 192.168.0.2 com a porta 80 interna. Ou seja, qualquer host que envie dados para 81.45.87.98 pela porta 80, é direcionado para 192.168.0.2 pela porta 80.

  • Os valores de porta (externa e interna) não precisam ser iguais, por exemplo, o serviço pode estar rodando na porta 9090, e no mapeamento ser encaminhado a porta 5000 para 9090. Aparentemente para a Internet pública o serviço está rodando na porta 5000.Uma tentativa de conexão em qualquer outra porta é descartada.

Full Cone NAT 1.png

Restricted Cone NAT:

No Restricted Cone NAT, o cliente interno deve primeiro se conectar com um IP externo antes de passar a receber pacotes do mesmo. O único requisito seria que os pacotes entrem na porta

mapeada na primeira conexão.

Exemplo:Um PC na LAN faz conexão de saída para um site (IP: 56.45.34.78), com IP de origem 192.168.1.2 e porta 56723. Pacotes que chegam do IP 56.45.34.78 com a pora 56723 serão

redirecionados para o IP 192.168.1.2. Se qualquer outro IP tentar utilizar a porta 56723 será bloqueado, da mesma forma se o IP 56.45.34.78 tentar utilizar qualquer outra porta tambem será bloqueada a conexão.

NAT restrito 1.png

Port-Restricted Cone NAT:

O Port-Restricted Cone NAT trabalha da mesma maneira que o Restricted Cone NAT, com a única diferença que também monitora a porta de destino, permitindo a comunicação apenas dela.
Exemplo: Um PC da LAN (IP local de origem: 192.168.1.2) faz conexão a um site (IP: 217.87.69.8) na porta 80 (porta de destino). O NAT, por exemplo, mapeia o IP de origem para o IP da WAN

81.45.87.98 e a porta para 56723. Quando o site enviar pacotes de volta, ele deverá ter seu IP de origem como 217.87.69.8, porta de destino como 56723 (Exatamente como um Restricted Cone NAT) e, além disso, a porta de origem terá que ser a 80. Se qualquer uma destas três informações estiverem incorretas o Port-Restricted Cone NAT desativa a conexão.

Port restrito.png

Symmetric NAT:

O Symmetric NAT aplica restrições exatamente como o Port Restricted Cone NAT, porém manipula a tradução NAT de forma diferente. Todos os tipos de NAT vistos até agora não manipulam o valor

da porta de origem, por exemplo, quando um cliente acessa a internet usando o IP 192.168.0.2 e a porta de origem 56723 o NAT altera o IP de origem para 56.35.67.35 (IP publico), mas mantem a porta 56723. Por sua vez o Symmetric NAT gera novos valores aleatórios para as portas de origem, isso aplica-se a conexões de um mesmo cliente para destinos diferentes.

Exemplo: Um PC na LAN (IP local: 192.168.0.2)faz duas conexões de saida, uma para o IP: 217.87.69.8 e outra para o IP: 56.76.87.78. Até o momento, em todas as conexões NAT, seria alterado

o valor do IP de origem para o IP público, porém iria ser mantido o valor da porta para as duas conexões (Ex: 56723). No Symmetric NAT no entanto o valor da porta de origem é diferente para cada uma das conexões, por exemplo a conexão para 217.87.69.8 recebe a porta 55620 e para 56.76.87.78 recebe a porta 49850.

NAT simetrico.png

O principal problema deste tipo de NAT é que, os equipamentos que rodam serviços na rede (Vídeo-games, Computadores , etc.) em alguns casos, precisam informar seu endereço IP e porta para

que outros equipamentos possam conectar em seu serviço, porém o equipamento em questão não sabe que está sendo utilizado NAT e enviará o IP local (Ex.: 192.168.1.2) e porta (Ex.:54254) , para solucionar este problema de NAT existem vários protocolos distintos, será citado o protocolo STUN, comumente mais utilizado.

STUN (Session Traversal Utilities for NAT):

O dispositivo faz uma conexão com o STUN, e este responde informando-lhe qual IP e porta de origem o dispositivo em questão está utilizando. Agora seu serviço (Rodando no computador,

videogame, etc.) sabe seu IP e porta de origem, para quase todo tipo de NAT está seria solução do problema de NAT, porém, como visto anteriormente, com o Symmetric NAT cada conexão recebe uma porta diferente de origem, ou seja, seu serviço irá anunciar o IP e a porta, porém a conexão será negada, pois a porta anunciada não é a mesma desta nova conexão.

CGNAT (Carrier Grade NAT)

Pejorativamente chamado de “NAT do NAT” e definido na RFC 6264, é uma técnica de tradução de grande porte que vem sendo praticada por algumas operadoras de telecomunicações que não

possuem mais endereços IPv4 disponíveis e, portanto, se encontram em situação crítica. Essa prática consiste em aplicar o NAT na própria rede da operadora, antes mesmo de chegar ao usuário, entregando para seu cliente um endereço privado. Os IPs “válidos” que chegam na interface WAN do cliente possuem o prefixo 100.64.0.0/10, a RFC do CGNAT tornou esse endereço não roteável e de uso exclusivo das operadoras.

A principal desvantagem do uso do CGNAT por parte de uma operadora de internet, além de comprometer a segurança da rede, é a retirada da possibilidade do cliente efetuar um redirecionamento

de portas sozinho. Esta ação passa a ter a necessidade de um trabalho conjunto entre operadora e cliente.

Referencias Bibliográficas