Wednesday, August 3, 2011

NAT-Network Address Translation

 Hoje vamos falar de mais um assunto muito importante e de enorme aplicação. Para quem está se preparando para o exame, como eu, ou mesmo no seu dia-a-dia, caso você tenha um ambiente como o nosso diagrama. Essa arquitetura é bem fácil de ser encontrada em escritórios, filiais,etc. É uma Rede Stub, ou seja, possui apenas uma saida e depende da configuração de NAT para que seus IPs internos possam conseguir navegar na Internet usando o IP do provedor. Essa é uma das funções do NAT, talvez a mais comun, e essa implantação, chamada Overload é a mais usada.
  A nível de conceito, existe basicamente 4 tipos de NAT:
  • Estático-Static
  • Dinâmico-Dynamic
  • Overload com um IP válido
  • Overload com um range de IPs válidos.
Em nosso LAB, vamos usar Overload,porém em uma combinação dos dois tipos de Overload, ou seja, poderiamos configurar como sendo um IP válido apenas, mas vamos configurar para um range de IPs.

Figura 1
Vamos iniciar configurando nosso router, que se chamará Branch. Ele fará DHCP também, isso é comun em uma rede dessa natureza,onde muita vezes não vale apena ter um firewall ou um servidor DHCP.
Router>
Router>en
Router#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname Branch


Damos um nome ao Router

Branch(config)#
Branch(config)#interface fa 0/0
Branch(config-if)#ip add 192.168.0.1 255.255.255.0
Branch(config-if)#no sh


%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up


Branch(config-if)#ip nat inside
Branch(config-if)#


Subimos a interface LAN já com IP e preparada para o NAT.

Vamos subir um servidor DHCP:

Branch(config)#ip dhcp po
Branch(config)#ip dhcp pool ?
  WORD  Pool name
Branch(config)#ip dhcp pool dhcp-branch
Branch(dhcp-config)#
Branch(dhcp-config)#network 192.168.0.0 255.255.255.0
Branch(dhcp-config)#default-router 192.168.0.1
Branch(dhcp-config)#dns-server 200.220.138.113
Branch(dhcp-config)#




Aqui está, já temos DHCP na rede LAN na faixa de 192.168.0.1 até 192.168.0.254. Também estabelecemos que 192.168.0.1 será nosso Gateway e que o servidor de DNS, forncecido pelo ISP, será o 200.220.138.113

Vamos configurar em seguida o NAT.


Branch#
Branch#
Branch#config t
Enter configuration commands, one per line.  End with CNTL/Z.
Branch(config)#
Branch(config)#
Branch(config)#
Branch(config)#access-list 1 permit 192.168.0.0 0.0.0.255
Branch(config)#ip nat pool pool-branch 200.221.2.45 200.221.2.45 net
Branch(config)#ip nat pool pool-branch 200.221.2.45 200.221.2.45 netmask 255.255.255.252
Branch(config)#ip nat inside source list 1 po
Branch(config)#ip nat inside source list 1 pool pool-branch over
Branch(config)#ip nat inside source list 1 pool pool-branch overload
Branch(config)#




A primeira coisa foi configurar uma ACL simples, como falei quando mostrei como configurar ACL. Depois , definimos um pool de endereços IPs válidos que será usado para navegarmos. Aqui, como tínhamos apenas um IP válido fornecido pelo nosso ISP, colocamos ele como IP inicial e IP final. Caso nosso ISP nos fornecesse mais de um IP, um range, poderiamos por o primeiro e o últimos IP.
Outra forma de configurar com apenas um IP seria assim:

Branch(config)#ip nat inside source list 1 interface serial 0/0 overload

Dessa forma, estaríamos consederando apenas um IP de fato para sair.
Pois bem, nossa redezinha já está quase pronta. vamos ver se navegamos?


Figura 2

Recebemos um erro do web site.
  Como Administrador de redes, é fundamental que você saiba encontrar erros. Errar é humano, mas é preciso ter domínio sobre os equipamentos, é preciso saber falar com eles, isso é ser um Administrador de redes.

Vamos entrar em  nosso router e ver o que ele nos diz :


Branch#debug ip nat
IP NAT debugging is on

Branch#debug ip icmp
ICMP packet debugging is on
Branch#
ICMP: dst (200.220.138.113)  host unreachable sent to 192.168.0.5

ICMP: dst (200.220.138.113)  host unreachable sent to 192.168.0.5

ICMP: dst (200.220.138.113)  host unreachable sent to 192.168.0.5

ICMP: dst (200.220.138.113)  host unreachable sent to 192.168.0.5

ICMP: dst (200.220.138.113)  host unreachable sent to 192.168.0.5



Ativamos debug de NAT e de ICMP. Não houve uso de NAT e o ICMP, Internet Control Message Protocol , nos diz que o IP 200.220.138.113 está inalcançável.


 Claro que está. Nos não tínhamos criado nenhuma saída para o Router.

Vamos fazer então:

Branch(config)#
Branch(config)#ip route 0.0.0.0 0.0.0.0 serial 0/0


 Configuramos uma rota default para a serial 0/0. Isso é mais que suciente e é muito eficaz no nosso caso.


Vamos direto ao router ver o que ele nos diz , agora que ele sabe o que fazer com os pacotes:


Branch(config)#
NAT: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [79]

NAT*: s=200.220.138.113, d=200.221.2.45->192.168.0.5 [13]

NAT*: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [80]

NAT*: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [81]

NAT*: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [82]

NAT*: s=200.220.138.113, d=200.221.2.45->192.168.0.5 [14]

NAT*: s=200.220.138.113, d=200.221.2.45->192.168.0.5 [15]

NAT*: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [83]

NAT*: s=200.220.138.113, d=200.221.2.45->192.168.0.5 [16]

NAT*: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [84]



Pronto!!!!

 Aí está, nosso NAT trabalhando. Nem é preciso mostrar o navegar para saber que a página WEB foi aberta pelo usuário.


NAT: s=192.168.0.5->200.221.2.45, d=200.220.138.113 [79]

NAT*: s=200.220.138.113, d=200.221.2.45->192.168.0.5 [13]



Vejam que interessante. A ída do pacote, saindo do PC 192.168.0.5, passando pela nossa interface serial , chegando ao Web Server e depois retornando para o nosso PC.

No comments:

Post a Comment