Cisco: NAT

Neste post vou demonstrar o funcionamento do NAT (Network address translation) em dispositivos Cisco.

Iremos explorar três formas distintas de realizar o NAT:

  • NAT Static
  • NAT Dynamic
  • PAT (Port Address Translation)

Antes de demonstrar a configuração de cada um, iremos abordar a forma que os dispositivos Cisco tratam o NAT.

A figura abaixo ilustra o conceito de Inside / Outside

cisco_nat01

  • Inside Local: refere-se ao endereço atribuído a um host
  • Inside Global: refere-se ao endereço público que representa os hosts da rede Inside Local
  • Outside Local: refere-se ao endereço público roteado na rede interna
  • Ourside Global: refere-se ao endereço público na Internet

NAT static

Este tipo de NAT é utilizado no mapeamento de um para um, permitindo por exemplo que um acesso através da Internet por um endereçamento publico chegue a um host de sua rede privada.

Os exemplos demonstrados a seguir serão realizados no GNS3.

Topologia utilizada para demonstrar as configurações:

cisco_nat02

Router

enable
configure terminal
!
hostname Router
!
interface f0/0
ip address 200.200.200.10 255.255.255.252
description WAN
no shut
exit
!
interface f0/1
ip address 192.168.1.1 255.255.255.0
description LAN
no shut
exit
!
end
wr

Host

ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
route add default gw 192.168.1.1

cisco_nat03

Após garantir a conectividade entre os dispositivos, iremos configurar o NAT nas interfaces.

Router

interface f0/0
ip nat outside
exit
!
interface f0/1
ip nat inside
exit
!
ip nat inside source static 192.168.1.10 200.200.200.10

Agora iremos a partir do host iremos gerar pacote icmp para um endereço externo.

cisco_nat04

Vamos dar uma olhada na tabela de NAT do roteador.

show ip nat translations

cisco_nat05

Reparem que o endereço do host 192.168.1.10 foi nateado para o 200.200.200.10.

Notem que na configuração do NAT nas interfaces do Router foi necessário mencionar seu sentido inside ou outside.

Porém através do uso NAT Virtual Interface (NVI), não se faz necessário mais necessário mencionar nas interfaces ou na declaração do nat estatístico o sentido insite/outside.

Para isso aplicaremos os comandos abaixo:

interface f0/0
no ip nat outside
ip nat enable
exit
!
interface f0/1
no ip nat inside
ip nat enable
exit
!
no ip nat inside source static 192.168.1.10 200.200.200.10
ip nat source static 192.168.1.10 200.200.200.10
!

Iremos novamente através do host gerar mais trafego icmp.

cisco_nat06

Agora iremos verificar no Router o comportamento deste trafego.

debug ip nat detailed

cisco_nat07

NAT dynamic

Este tipo de NAT é utilizado no mapeamento de alguns endereços a um pool de endereços, desta forma por exemplo seria possível fazer com que a saída de alguns hosts do escritório para a Internet fosse através de um pool de endereços externos, não apenas um único endereço.

Topologia utilizada para demonstrar as configurações:

cisco_nat08

Router

enable
configure terminal
!
hostname Router
!
interface f0/0
ip address 200.200.200.9 255.255.255.248
description WAN
no shut
exit
!
interface f0/1
ip address 192.168.1.1 255.255.255.0
description LAN
no shut
exit
!
end
wr

Host

ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
route add default gw 192.168.1.1

cisco_nat03

Após garantir a conectividade entre os dispositivos, iremos prosseguir com as configurações de NAT.

access-list 1 permit 192.168.1.0 0.0.0.255 ! rede LAN
!
ip nat pool external_pool 200.200.200.10 200.200.200.13 netmask 255.255.255.248
!
interface f0/0
ip nat outside
exit
!
interface f0/1
ip nat inside
exit
!
ip nat inside source list 1 pool external_pool

Reparem que o NAT está atrelado a uma lista de acesso e a um pool de endereços.

Para testarmos nossa configuração, iremos a partir de dois hosts gerar pacotes icmp para um endereço externo e visualizar a tabela de NAT do Router.

show ip nat translations

cisco_nat09

Reparem que para cada endereço privado foi feito um NAT com os endereços do pool.

PAT (Port Address Translation)

Este tipo de NAT é utilizado no mapeamento  de muitos para um, sendo conhecido também por NAT overload (sobrecarga), pois normalmente se utiliza este método quando um ambiente possui poucos endereçamento públicos e se faz necessário os hosts privados terem comunicação com o meio externo.

Topologia utilizada para demonstrar as configurações:

cisco_nat10

Router

enable
configure terminal
!
hostname Router
!
interface f0/0
ip address 200.200.200.9 255.255.255.248
description WAN
no shut
exit
!
interface f0/1
ip address 192.168.1.1 255.255.255.0
description LAN01
no shut
exit
!
interface f1/0
ip address 10.0.0.1 255.255.255.0
description LAN02
no shut
exit
!
end
wr

Host LAN01

ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
route add default gw 192.168.1.1

cisco_nat03

Host LAN02

ifconfig eth0 10.0.0.10 netmask 255.255.255.0 up
route add default gw 10.0.0.1

cisco_nat11

Após garantir a conectividade entre os dispositivos, iremos prosseguir com as configurações de NAT.

Router

access-list 1 permit 192.168.1.0 0.0.0.255
access-list 2 permit 10.0.0.0 0.0.0.255
!
interface f0/0
ip nat outside
exit
!
interface f0/1
ip nat inside
exit
!
interface f1/0
ip nat inside
exit
!
ip nat pool external_LAN01 200.200.200.10 200.200.200.11 netmask 255.255.255.248
ip nat pool external_LAN02 200.200.200.12 200.200.200.13 netmask 255.255.255.248
!
ip nat inside source list 1 pool external_LAN01 overload
ip nat inside source list 2 pool external_LAN02 overload

Desta forma cada rede terá um pool de endereços externos, onde todos os hosts /24 poderão se comunicar com o meio externo.

Para testarmos nossa configuração, iremos a partir dos hosts de cada rede gerar pacotes icmp para um endereço externo e visualizar a tabela de NAT do Router.

cisco_nat12

Reparem que para cada endereço privado foi feito um NAT com os endereços do pool.

E assim finalizamos mais um post.

Tags: