You are on page 1of 41

NAT Network Address Translation

O que o NAT
Tcnica que altera, em trnsito os endereos do cabealho dos datagramas IP
De forma a que a origem sob o ponto de vista do destinatrio no seja a real De forma a que o destino final seja uma mquina com endereo diferente do originalmente indicado pelo remetente

Viola uma regra fundamental assumida na criao do TCP/IP da criar complicaes!

07-04-2011

ISEL/DEETC/SRT

Termos usados
NATBox Router com funcionalidades de NAT Inbound Sentido do trfego da Internet para rede atrs da NATBox Outbound Sentido do trfego da rede atrs da NATBox para a Internet Endereo pr-NAT Endereo antes de sofrer a converso imposta pelo processo de NAT Endereo ps-NAT Endereo resultante da aplicao do processo de NAT

07-04-2011

ISEL/DEETC/SRT

Porqu NAT
Motivao principal Escassez de endereos devido ao desperdcio de endereos na atribuio clssica por classes a cada entidade e do consumo desproporcional praticado por muitas entidades
A limitao de os ISPs fornecerem aos clientes residenciais apenas um endereo IP por ligao e os clientes terem hoje em dia muitos equipamentos com necessidade de conectividade
Mltiplos PCs/MACs, PDAs, Playstations, MediaCenters, telefones IP, etc

07-04-2011

ISEL/DEETC/SRT

Outras aplicaes de NAT


Na distribuio de servio por diversas mquinas, em processos de balanceamento de carga (SLB)
Escalabilidade e disponibilidade

Na compatibilizao de redes que necessitem de se juntar apesar de terem planos de endereamento sobrepostos
Double NAT

Permitir o acesso pblico a servios disponibilizados por mquinas com endereamento privado
Mapeamentos estticos de NAT

07-04-2011

ISEL/DEETC/SRT

Variantes de NAT IP esttico


Esttico ao nvel do IP
Estticamente definido um mapeamento entre o endereo IP original (origem ou destino) e o final
Quando o trfego atravessa a NATbox num sentido, o endereo original substitudo pelo final, no sentido contrrio realizada a substituio inversa

07-04-2011

ISEL/DEETC/SRT

Variantes de NAT TCP/UDP esttico


Esttico ao nvel da camada de transporte
Estaticamente definido um mapeamento entre o par formado pelo endereo IP original e porto original e o IP/porto final (ps NAT)
Quando o trfego atravessa a NATBox num sentido, se o protocolo nvel 4, o endereo IP e porto destino so os do mapeamento definido, o endereo e porto destino so substitudos pelos indicados no mapeamento. No sentido contrrio realizada a substituio inversa, aplicada agora ao endereo origem

07-04-2011

ISEL/DEETC/SRT

Variantes de NAT IP dinmico


Dinmico ao nvel do IP
Processo idntico ao da vertente esttica, com a diferena de o endereo psNAT no estar previamente definido, indo sendo dinamicamente alocado a partir de um bloco (pool) de endereos

07-04-2011

ISEL/DEETC/SRT

Variantes de NAT TCP/UDP dinmico


Dinmico ao nvel da camada de transporte
Processo idntico ao da vertente esttica, com o endereo ps- NAT a ser ou no alocado a partir de um bloco, podendo agora o porto no condicionado pelo mapeamento ser tambm potencialmente alterado para um valor diferente do original (o sistema escolhe)

07-04-2011

ISEL/DEETC/SRT

Necessidade de manter contexto


Dependente da variante de NAT usada e da implementao particular de NAT, diferentes nveis de contexto so necessrios para fazer a associao do trfego de retorno ao original
Variantes estticas, dispensam a manuteno de contexto

07-04-2011

ISEL/DEETC/SRT

10

Um s endereo representando muitos, como?


A vertente mais comum de NAT usada na partilha de um nico endereo IP exterior por mltiplas mquinas, cada uma com o seu endereo individual interno
A informao necessria para realizar o mapeamento do trfego de volta (inbound) mantida no porto origem ps-NAT que se tem de manter nico
192.0.0.1
192.0.0.1:80->193.137.221.128:1024 192.0.0.1:80->193.137.221.128:5001

193.0.0.1

193.0.0.1:80->193.137.221.128:1025

IP Ext: 193.137.221.128

NAT Box

IP Int: 192.168.0.254/24

192.168.0.1
192.168.0.1:1024->192.0.0.1:80

192.168.0.2
192.168.0.2:1024->192.0.0.1:80

192.168.0.3
192.168.0.2:1025->193.0.0.1:80

NAT Translations Proto InsideIP:Port -> OutsideIP:Port => LocalPubIP:Port -> OutsideIP:Port Expires TCP 192.168.0.1:1024->192.0.0.1:80 => 193.137.221.128:1024->192.0.0.1:80 00:01:10 TCP 192.168.0.2:1024->192.0.0.1:80 => 193.137.221.128:5001->192.0.0.1:80 00:01:20 TCP 192.168.0.3:1025->193.0.0.1:80 => 193.137.221.128:1025->193.0.0.1:80 00:01:25

07-04-2011

ISEL/DEETC/SRT

11

Porqu usar endereos privados atrs de NAT?


Se se usar uns quaisquer, pode acontecer ter-se necessidade de comunicar com a rede que os usa legalmente e no se consegue, porque todas as mquinas da nossa rede assumem que conseguem falar directamente com as mquinas da sua rede. Usar os blocos de endereos Private Networks (RFC1918) para enderear as redes internas
10.0.0.0/8 1 Classe A 172.16.0.0/12 16 Classes B 192.168.0.0/16 256 Classes C

07-04-2011

ISEL/DEETC/SRT

12

O custo da transparncia do NAT


Recalculo de checksums Alterao de campos dos cabealhos Ajuste das mensagens de erro ICMP Manuteno de tabelas de mapeamento estticas e dinmicas

07-04-2011

ISEL/DEETC/SRT

13

Implementao de NAT
Campos dos cabealhos a alterar
Time To Live e Checksum J anteriormente eram ajustados como parte do processo de encaminhamento Endereos Origem e/ou Destino Segundo a aplicao de NAT pretendida Portos Origem e/ou Destino Dependendo da aplicao pretendida e da prpria gesto do sistema
Manter quando possvel, alterar para outro dentro da mesma gama quando necessrio (gamas no NAT Cisco IOS: 0-511, 512-1023 e 1024-65535)

Checksum TCP/UDP Sempre necessrio devido dependncia deste dos endereos origem/destino provocada pelo uso de pseudoheaders no clculo

07-04-2011

ISEL/DEETC/SRT

14

Pseudoheaders TCP/UDP
Source Address (from IP Header) Destination Address (from IP Header) Reserved 0 Protocol (from IP TCP Segment Length (computed) or UDP Length (from IP Header) Header) 8 16 24 TCP/UDP Pseudoheader

O recalculo do checksum realizado sobre o cabealho TCP/UDP, o pseudoheader respectivo e sobre os dados transportados
Impensvel para volumes de trfego elevados pela computao necessria e atraso provocado
07-04-2011 ISEL/DEETC/SRT 15

Transparncia das mensagens de erro ICMP


As mensagens de erro ICMP (unrechables, TTL expired, etc.) so recebidas pela NATBox dirigidas ao endereo ps-NAT e contendo a amostra do cabealho IP + 8 Bytes do datagrama IP que a provocou
H que fazer a associao desta tabela de mapeamento NAT para saber para que endereo destino h-de ser alterada
Usando os endereos da amostra do cabealho original e os portos TCP/UDP ou algo que fornea contexto do protocolo em questo (ex. ICMP identifier/seq.number), contidos nos 8 bytes adicionais

H que alterar a amostra da mensagem de erro, incluindo endereos, portos e checksums para que se mantenha a total transparncia

07-04-2011

ISEL/DEETC/SRT

16

Impacto do NAT no funcionamento das aplicaes


Aplicaes que envolvem mltiplas ligaes com parmetros negociados no prprio protocolo no so suportadas sobre NAT directamente
As aplicaes enviam os parmetros sob o seu ponto de vista
FTP No comando PORT indica ao servidor externo o seu IP pr-NAT com o qual ele no tem conectividade

Comunicaes entre clientes que partilham, a algum nvel dentro do domnio privado da rede, um equipamento realizando NAT
Algumas aplicaes resolvem o problema usando um servio de relay exterior para resolverem o problema Com srios problemas de escalabilidade (ex. MSN Messenger)

O funcionamento em vlvula do NAT impossibilita em muitos casos as comunicaes entre clientes atrs de NAT
X e Y podem fazer ligaes para fora das suas redes (distintas), mas no se conseguem ligar entre si
07-04-2011 ISEL/DEETC/SRT 17

Solues para os problemas levantados pelo NAT


Duas tcnicas seguidas para se atingir a total transparncia das aplicaes numa das situaes anteriores
A NAT Box intercepta e manipula o protocolo em questo durante o processo de NAT (tipicamente designado de fixup ou mangling)
No universal, s funciona para os protocolos que a NAT Box saiba manipular Implica mais processamento, envolvendo em alguns casos a gesto adicional dos nmeros de sequncia TCP por o processo envolver o encurtar/alongar de segmentos Interpretando o protocolo, so automaticamente inseridas as entradas na tabela de mapeamento NAT para se aceitarem as novas ligaes negociadas

As aplicaes usam tcnicas/protocolos adicionais para se aperceberem da existncia de NAT pelo meio, da forma como este est a ser realizado, de como as suas ligaes so vistas do exterior e manipula na origem os parmetros
No resolve o problema da abertura dos mapeamentos NAT para as ligaes adicionais Mapeamento para aceitar ligaes inbound conseguido custa de datagramas sem contedo (keepalives) enviados de dentro (comum para UDP/VoIP)
07-04-2011 ISEL/DEETC/SRT 18

STUN Simple Transversal of UDP over NAT


Protocolo usado para identificar a existncia de NAT e o modo de funcionamento deste no percurso entre a mquina onde executado o teste e determinado servidor STUN Definido no RFC3489 Protocolo muito usado como auxiliar do VoIP/SIP
Para experincias usar o WinSTUN

07-04-2011

ISEL/DEETC/SRT

19

Classificao de tipos de NAT para UDP (STUN)


Dependendo de que parmetros so usados na NATBox para criar o contexto das ligaes, validar e associar o trfego inbound ao outbound, este ter algumas diferenas de comportamento com significado, especialmente na recepo de pacotes do exterior
Identificador completo
origin session, origin side, target session, target side

origin session parmetros do lado em que a ligao foi iniciada


source IP, source port, dest IP, dest port

target session parmetros vistos na interface de sada (ps-NAT)


source IP, source port, dest IP, dest port

Terminologia comum
Symmetric, Port Restricted Cone, Address Restricted Cone, Full Cone

07-04-2011

ISEL/DEETC/SRT

20

Tipos de NAT para UDP - Full Cone NAT


Todos os pedidos do mesmo endereo e porto internos so mapeados no mesmo endereo e porto externos. Uma mquina externa pode enviar pacotes para uma interna, enviando-os para o endereo e porto externos mapeados.

07-04-2011

ISEL/DEETC/SRT

21

Tipos de NAT para UDP - Address Restricted Cone NAT


Todos os pedidos do mesmo endereo e porto internos so mapeados no mesmo endereo e porto externos. Ao contrrio do Full Cone NAT, uma mquina externa s pode enviar pacotes at uma interna se foi anteriormente o destino de pacotes enviados esta.

07-04-2011

ISEL/DEETC/SRT

22

Tipos de NAT para UDP - Port Restricted Cone NAT


Parecido ao Address Restricted Cone NAT, mas a restrio inclui agora tambm o porto. Uma mquina externa s pode enviar pacotes at uma interna se foi anteriormente o destino dum pacote enviado por esta com o porto origem usado agora como destino.

07-04-2011

ISEL/DEETC/SRT

23

Tipos de NAT para UDP - Symmetric NAT


Pedidos do mesmo endereo e porto internos para determinado destino so mapeados num nico IP e porto externos. Se a mesma mquina interna enviar um pacote com o mesmo endereo e porto para um destino diferente usado um novo (diferente) mapeamento. S as mquinas exteriores que recebem pacotes das internas conseguem enviar pacotes de volta mquina interna

07-04-2011

ISEL/DEETC/SRT

24

Hairpin
definida como uma sesso de NAT com necessidades de Hairpin toda aquela que envolve dois equipamentos que partilham a algum nvel um equipamento realizando NAT
Se no for suportada esta tcnica, no possvel a comunicao directa entre equipamentos nesta situao A NAT Box tem de identificar a situao e realizar virtualmente o duplo processo NAT envolvido, como se se tratasse de dois equipamentos isolados realizando NAT Situao comum quando so encadeados mltiplos equipamentos realizando NAT dentro do domnio privado da rede e se recorre a servidores externos para rendez-vous (ex: Messengers, P2P, STUN/VoIP)

07-04-2011

ISEL/DEETC/SRT

25

Algoritmo STUN

07-04-2011

ISEL/DEETC/SRT

26

Relao entre protocolos comuns e NAT


Telnet SSH HTTP SMTP POP DNS SNMP FTP MSN Messenger VoIP/SIP IPSEC eDonkey2000 BitTorrent

07-04-2011

ISEL/DEETC/SRT

27

NAT vs Telnet, SSH, HTTP, SMTP ou POP


Todos estes protocolos so baseados em transporte TCP sendo suportados por uma nica ligao originada do cliente para o servidor No tm qualquer problema no funcionamento sobre NAT

07-04-2011

ISEL/DEETC/SRT

28

NAT vs DNS
Sem problemas de maior Tende a criar muitas entradas de contexto
Ajustar expirao para tempos razoveis (5s a 10s ?)

Em ambientes com servidores acessveis atravs de IPs internos e externos, via mapeamento estticos
Necessrio o uso de split views ou de modulo helper que ajuste os endereos dados aos clientes exterior
Quando perguntam ao DNS por XPTO.DOMINIO.PT (tipo A), os clientes internos obtm o IP interno, os externos obtm o Ps-NAT seja a diferena feita pelo servidor DNS ou por alterao do contedo das mensagens DNS na NATBox

07-04-2011

ISEL/DEETC/SRT

29

NAT vs SNMP
O SNMP funciona tipicamente sobre UDP com sequncias de pedidos/respostas Pormenores a ter em conta para a coexistncia com NAT
No existindo ligao (UDP) o contexto do pacote enviado mantido durante determinado tempo na tabela de NAT at expirar
Ajustar para um valor consistente com os tempos espectveis entre pedidos e respostas e pedidos seguintes para evitar rejeies indesejadas de respostas e o enchimento da tabela de mapeamento

Para aceitar TRAPs (alarmes assncronos do agente) h que criar um mapeamento esttico aceitando o trfego de volta para o gestor, sendo assim, na maioria dos casos incompatvel esta componente com o uso de mltiplos gestores Como os pedidos chegaro aos agentes com o endereo origem ps-NAT, estes tero de ter includo este endereo na lista de gestores autorizados, com o aspecto negativo adicional de esta permisso ser partilhada com todas as mquinas que reutilizem o endereo ps-NAT
07-04-2011 ISEL/DEETC/SRT 30

NAT vs FTP
FTP modo Activo s suportado com o uso de um mdulo especializado (fixup) na NATBox para alterar o endereo e porto enviados no comando PORT, abrindo em simultneo o canal/mapeamento para a ligao de dados iniciada pelo servidor FTP modo Passivo mais fcil de suportar, no necessita de fixup na NATBox porque ambas as ligaes (controlo e dados) so iniciadas pelo cliente
Se o fixup for dispensado, para funcionar tem de se aceitar ligaes outbound de e para qualquer porto TCP acima de 1024 (inclusive) o que pode implicar abrir acesso a muitas outras aplicaes indesejadas Complica-se quando o servidor que est atrs de NAT
07-04-2011 ISEL/DEETC/SRT 31

FTP modo Activo


USER anonymous 331 Guest login ok, send your e-mail address as password. PASS NcFTP@ 230 Logged in anonymously. PORT 192,168,1,2,7,138 <= Ou o NAT sabe ajustar esta // mensagem e abrir o canal de volta ou no h ligao // O cliente pretende que o servidor se ligue ao seu porto // 1930 (7*256+138), e endereo 192.168.1.2 200 PORT command successful. LIST 150 Opening ASCII mode data connection for /bin/ls. // O servidor j fez a ligao 226 Listing completed. QUIT 221 Goodbye.

07-04-2011

ISEL/DEETC/SRT

32

FTP modo Passivo


USER anonymous 331 Guest login ok, send your e-mail address as password. PASS NcFTP@ 230 Logged in anonymously. PASV // O cliente diz que quer usar modo passivo e pergunta // para onde deve ligar 227 Entering Passive Mode (192,0,1,4,204,173) // O servidor envia os dados. // Se o servidor est atrs de NAT tambm so vlidos! LIST 150 Data connection accepted from 192.0.1.4:52397 // O cliente j se ligou ao endereo e porto (52397) // indicados pelo servidor 226 Listing completed. QUIT 221 Goodbye.

07-04-2011

ISEL/DEETC/SRT

33

NAT vs MSN Messenger


Para a vertente Chat no costumam existir problemas, o cliente inicia uma nica ligao para um dos servidores centrais do sistema Usa um protocolo semelhante a STUN (acessvel em Tools->Options>Connection) para perceber que restries tem cada utilizador (NAT e/ou firewalls) O Chat utiliza sempre o servidor como relay Para a transferncia de ficheiros e sesses multimdia usa comunicaes directas entre clientes, se no possvel usa o servidor como relay
Utilizadores na mesma rede atrs de NAT nem sempre transferem entre si os ficheiros usando o percurso mais eficiente!

07-04-2011

ISEL/DEETC/SRT

34

NAT vs VoIP/SIP (Session Initiation Protocol)


Por motivos de escalabilidade e qualidade do servio o VoIP/SIP foi desenhado com uma estrutura peer-to-peer
A sinalizao agregada em softswitchs Os fluxos multimdia podem ser agregados em relays/transcoders designados de mediaproxys ou serem directos entre clientes

O facto do protocolo correr na maioria dos casos sobre UDP facilita o atravessamento de NAT Para coexistncia pacifica os clientes usam STUN para detectar se tm e que forma tm de NAT entre eles e o servidor de referncia
07-04-2011 ISEL/DEETC/SRT 35

NAT vs VoIP/SIP (Session Initiation Protocol)


Os clientes usam no corpo das mensagens de sinalizao (SIP) os parmetros ps-NAT para serem contactveis do exterior Aps registo dos clientes (terminal VoIP), estes e o softswitch enviam periodicamente mensagens de keepalive para criar e manter os mapeamentos nas NATBox Dado o nmero de factores envolvidos no processo, ocorrem frequentemente incompatibilidades que so na maioria dos casos solucionveis com o ajuste de parmetros possvel a coexistncia com todas as formas de NAT identificadas pelo STUN excepto Symmetric NAT devido disperso de endereos e portos realizada por esta tcnica Para que seja possvel o fluxo directo do trfego multimdia entre terminais atrs de uma NATBox comum normalmente necessrio o suporte de hairipin na NATBox
07-04-2011 ISEL/DEETC/SRT 36

NAT vs IPsec
Pouco compatveis devido a dependncias diversas
As NATBox no conseguem actualizar os checksums do UDP/TCP
Esto cifrados dentro do envelope ESP (modo transporte)

No se conseguem multiplexar fluxos de dados IPsec, no existem cabealhos visveis


SPI e o endereo destino no servem pois o contexto simplex (so usados diferentes SPI em cada um dos sentidos). SPI no pode ser alterado em caso de coliso de valores pois est protegido pelo HMAC cauda do pacote

O porto de IKE (500) usado por algumas implementaes no pode ser alterado
Algumas implementaes descartam estas mensagens se o porto origem no for o standard

Os mapeamentos de NAT do IKE/UDP expiram


As mensagens de IKE no so frequentes e aps o mapeamento expirar deixa-se de se conseguir receber mensagens

As mensagens IKE contm endereos internamente


Ao sofrer NAT o endereo do cabealho IP fica inconsistente com o do corpo da mensagem sendo rejeitada e abortada a negociao

07-04-2011

ISEL/DEETC/SRT

37

NAT vs IPsec
Recentemente definido um modo (NAT-T)
Transporta o ESP sobre UDP Flexibiliza regras (ex. portos vlidos) Cabealho IKE modificado para evitar incompatibilidade O protocolo inclui a deteco de NAT no percurso para coexistncia Menos eficiente j que o overhead cresce substancialmente O modo tunnel foi adaptado para ser possvel a multiplexagem de diversas ligaes sobre NAT

07-04-2011

ISEL/DEETC/SRT

38

NAT vs eDonkey2000
Liga-se a um servidor de rendez-vous por TCP ou UDP Por questes de fairness, o sistema limita em muito as funcionalidades disponibilizadas a clientes aos quais no consegue ligar de volta (para o porto indicado pelo cliente) - (LowID!)
Tenta promover a simetria produtor/consumidor em cada utilizador para evitar o desequilbrio que limita a escalabilidade do protocolo Necessrio fixup na NATBox (no h presso dos grandes compradores de equipamentos para que seja suportado!) para abertura automtica do porto para recepo das ligaes dos outros clientes

Usar mapeamento esttico de portos para encaminhar os pedidos para a mquina interna
Para suporte de mltiplos clientes internos h que usar um porto diferente de entrada para cada com os respectivos mapeamentos estticos de NAT
07-04-2011 ISEL/DEETC/SRT 39

NAT vs BitTorrent
Idntico ao anterior com a diferena de se complicar o mapeamento de portos pois utiliza uma gama deles (default 6881-6889) por aplicao/mquina.

Ilustrao das ligaes TCP possveis quando existe NAT (caixa azul) do lado dos clientes. As ligaes a vermelho no conseguem estabelecer-se, as a verde conseguem
Situaes sem e com mapeamento esttico de portos no sentido inbound
07-04-2011 ISEL/DEETC/SRT 40

Referncias
Operating Principles and General Behavioral Requirements for Network Address Translators (BEH-GEN)
B. Ford - M.I.T., P. Srisuresh - Caymas Systems, S. Sivakumar - Cisco Systems - May 2005

Cisco - NAT Frequently Asked Questions, Document ID: 26704 NAT Classification Test Results
C. Jennings - Cisco Systems - July 16, 2005

RFC2428 - FTP Extensions for IPv6 and NATs


M. Allman - NASA Lewis/Sterling Software, S. Ostermann - Ohio University, C. Metz - The Inner Net, September 1998

http://www.faqs.org/rfcs/rfc1631.html http://www.faqs.org/rfcs/rfc2663.html http://www.ietf.org/rfc/rfc2993.txt http://www.networksorcery.com/enp/rfc/rfc3489.txt http://www.networksorcery.com/enp/protocol/stun.htm http://www.cisco.com/warp/public/556/5.html http://www.cisco.com/en/US/tech/tk648/tk361/tk438/tsd_technology_support_sub-protocol_home.html http://en.wikipedia.org/wiki/Network_address_translation http://en.wikipedia.org/wiki/STUN http://tools.ietf.org/html/rfc3489 http://slacksite.com/other/ftp.html http://www.ncftp.com/ncftpd/doc/misc/ftp_and_firewalls.html http://www.microsoft.com/technet/community/columns/cableguy/cg0802.mspx http://www.kazaa.com/us/help/glossary/p2p.htm http://userpages.umbc.edu/~hamilton/btclientconfig.html http://www.voip-info.org/wiki/view/NAT+and+VOIP http://www.voip-info.org/wiki-Asterisk+SIP+NAT+solutions http://www.snom.com/whitepapers/FAQ-03-10-20-cs.pdf

07-04-2011

ISEL/DEETC/SRT

41