Há alguns anos, com o esgotamento dos endereços IPv4 cada vez mais próximo, foi necessário encontrar uma alternativa para diminuir a velocidade de alocação de endereços IPv4 e aproveitar ainda melhor aqueles que já haviam sido alocados para os provedores de serviço (RFC-1631). Uma dessas alternativas foi a utilização de muitos endereços privados (conforme definido no RFC-1918) que posteriormente deveriam ser traduzidos para um (ou mais) endereço público para assim haver conectividade entre endereços públicos da Internet e endereços privados. Essa estratégia ficou conhecida como NAT (Network Address Translation).
A Cisco, por sua vez, possui uma terminologia e uma maneira particular de implementar os três principais tipos de NAT (estático, dinâmico e tradução de portas), no entanto, existem algumas informações importantes sobre roteamento e NAT Virtual Interfaces que devem ser entendidas também, e é isso que vamos tratar neste post. Para começar, é necessário entender a terminologia local e global, assim como inside e outside.
- Inside local address: é o endereço atribuído a interface de rede de uma estação, por exemplo (escopo local).
- Inside global address: é o endereço público que representa um ou mais endereços inside local (escopo global ou a Internet).
- Outside local address: é a forma como um endereço IP público é visto na rede interna. Geralmente este endereço é roteado somente pelos roteadores internos (não é roteado na Internet e, portanto, possui um escopo local).
- Outside global address: é um endereço público da Internet (é roteado na Internet).
Essas definições serão importantes para escolher quais interfaces serão classificadas como inside e outside e como serão construídas as regras de tradução.
Seguindo o exemplo da figura abaixo, um host com endereço IP 192.168.0.1 (inside local) envia um pacote para o endereço 72.72.72.1 (DA - outside local e outside global). Ao passar (da interface INSIDE para OUTSIDE) por um roteador com NAT habilitado poderá ter traduzido o endereço de origem (SA) de 192.168.0.1 (inside local) para 200.200.200.1 (inside global). Esta tradução permite que o host 192.168.0.1 estabeleça uma comunicação com o host 72.72.72.1. O pacote com a resposta do host 72.72.72.1 terá como endereço de destino 200.200.200.1 (inside global) e novamente ao passar pelo roteador com NAT habilitado será traduzido - agora o endereço de destino - de 200.200.200.1 para 192.168.0.1 (inside local), fazendo com que os pacotes cheguem até o seu destino correto. Exemplo:
Com isso, podemos ver como fica a configuração para um ambiente com NAT estático como é exemplificado na figura acima.
ip nat inside source static 192.168.0.1 200.200.200.1A utilização de "inside source" ou "outside source" na regra de tradução (NAT) altera a forma como é traduzido o endereço dos pacotes de acordo com o sentido do tráfego:
! interface INSIDE
interface fast0/0
ip nat inside
! interface OUTSIDE
interface serial0/0
ip nat outside
- ip nat inside source
- Traduz o endereço de ORIGEM dos pacotes que trafegam da interface inside para outside.
- Traduz o endereço de DESTINO dos pacotes que trafegam da interface outside para inside.
- Traduz o endereço de ORIGEM dos pacotes que trafegam da interface outside para intside.
- Traduz o endereço de DESTINO dos pacotes que trafegam da interface inside para outside.
Ainda temos dois tipos de NAT que não serão discutidos aqui, tal como o NAT dinâmico e a tradução de porta (também conhecido como PAT, ou Port Address Translation). Estes outros tipos de NAT seguem o padrão apresentado acima.Router#show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 200.200.200.1 192.168.0.1 --- ---
Vamos analisar uma outra questão importante quando estamos trabalhando com NAT...
NAT Virtual Interface
Um dos problemas que podemos enfrentar quando habilitamos NAT utilizando interfaces INSIDE e OUTSIDE é a necessidade de inserir rotas para os endereços traduzidos. Isso acontece pois a ordem de tradução e roteamento ocorre em momentos diferentes durante o processamento de um pacote dependendo do sentido do tráfego. No sentido inside-to-outside a tradução é feita DEPOIS da decisão de roteamento. No sentido contrário (outside-to-inside) a tradução acontece primeiro. A ordem completa pode ser encontrada aqui.
A partir da versão 12.3T a Cisco introduziu o conceito de NAT Virtual Interface (NVI)*. Dessa forma, a tradução dos endereços ocorre de forma simétrica e não é necessário inserir rotas para os endereços traduzidos. Quando uma interface está habilitada para fazer NAT utilizando NVI, o pacote que adentrar esta interface será roteado para a interface NVI (onde ocorre a tradução) e depois roteado mais uma vez utilizando a tabela de roteamento. A configuração utilizando NVI para o exemplo que citamos acima é a seguinte:
ip nat source static 192.168.0.1 200.200.200.1Veja que dessa forma não é necessário declarar nenhuma interface como inside ou outside, ou mesmo declarar o sentido de tradução no comando de NAT estático. Esta nova funcionalidade resolve também o problema de tradução para endereços roteados para uma mesma interface de entrada (já que pode existir casos em que um pacote pode entrar por uma interface outside e nunca alcançar a interface inside correspondente, conforme descrito neste artigo).
interface fast0/0
ip nat enable
interface serial0/0
ip nat enable
Para encerrar este post, gostaria de reforçar que até aqui não foi apresentado nenhum mecanismo ou forma de segurança relacionada com a utilização (ou a não utilização) de NAT, apesar de, no passado, muitos profissionais acreditarem que a simples utilização de tradução de endereços poderia aumentar a segurança de um ambiente...
Veja também:
- Cisco NAT: Global and local definition.
- Cisco Configuring Network Address Translation: Getting Started.
- The Inside and Outside of NAT (Internetwork Expert’s CCIE Blog).
- Cisco NAT: Order of Operation.
- CiscoIOS 12.3T: NAT Virtual Interface.
(*) A interface NVI0 que está presente nos roteadores que possuem NAT habilitado (a partir da versão 12.3T) é a NAT Virtual Interface:
Router# show interfaces
(...)
NVI0 is up, line protocol is up
Hardware is NVI
Interface is unnumbered. Using address of NVI0 (0.0.0.0)
(...)
10 comentários:
Muito boa a matéria!
Ótimo para quem está estudando para o ccna!
falows!
Otimooo Material Gustavoo..
Vai ajudar todos que estao ao Rumo do sonhado CCNA..
Peço gentilmente que voce com o seu conhecimento, deveria postar algumas de suas informaçoes, experiencias e novidades no blog ccna do Marco Filippetti.
www.ccna.com.br
Abraços cara
Parabens
Fernando Bernardi
I ae cara, vc tem alguma info sobre DNAT em roteadores Cisco?
abs!
http://rodrigocarran.wordpress.com/2009/05/09/entendendo-nat-em-roteadores-cisco/
by rodrigo carran?
Pois é, né? Sem nenhuma referência... Muito triste. Mas, como diz o ditado: "Quem pode mais, chora menos!" :-).
Ah! Aproveite para conferir como o Rodrigo Carran fez o blog dele:
http://rodrigocarran.wordpress.com/2009/05/04/teclas-de-atalho-para-windows/
Hilário!
:-D
Sou recém CCNA e procurei alguns artigos que falasse de NAT. Realmente esse foi um dos melhores!!
Abraços!!
Pell
Sou recém CCNA e procurei alguns artigos que falasse de NAT. Realmente esse foi um dos melhores!!
Abraços!!
Pell
Gustavo, esse Rodrigo Carran é um grande ******...esse cara copia textos de vários blogs, e coloca como se fosse dele. O pior é que ele tem a cara de pau de editar os textos e imagens, tirando qualquer referência aos sites originais...
http://rodrigocarran.wordpress.com/
posso usar 2 tipos de nat em um mesmo router cisco?
ip nat pool ISP-INTERNET 189.232.45.9 189.232.45.9 netmask 255.255.255.248
ip nat inside source list 2 pool ISP-INTERNET overload
!
access-list 2 permit 10.1.0.0 0.0.0.31
!
ip nat inside source static 10.1.0.0 189.232.45.9
Postar um comentário