Objectifs de certification

CCNA 200-301

  • 4.1 Configurer et vérifier inside source NAT (static et pools)

  • 5.6 Configurer et vérifier les access control lists


Network Address Translation (NAT44)

Dans ce chapitre on parlera du Inside Source NAT44 (Statique, Pool et PAT) et de son implémentation en Cisco IOS.

1. Introduction

Le NAT, pour “Network Address Translation”, Traduction d’Adresses Réseau, a été proposé en 1994 sous le RFC 1631 comme solution à court terme face au manque d’’adresses IPv4. Son objectif principal était de permettre aux adresses IP d’’être partagées par un grand nombre de périphériques réseau. Envisagé comme un palliatif au manque d’adresses IPv4, il montre aujourd’hui ses limites à la croissance de l’Internet. Ce que l’on appelle “IP Masquerading”, pour masquage d’adresses IP est synonyme du NAT dans le jargon. On parlera ici uniquement de l’implétentation du NAT en Cisco IOS.

2. Définition

Le NAT est défini dans le RFC 3022. Le NAT permet d’utiliser des adresses n’ayant pas de signification globale (par exemple des adresses privées définies dans le RFC 1918, non globalement routables) pour les connecter à travers l’Internet en traduisant celles-ci en adresses globales routables. Le NAT permet aussi de fournir une solution de re-numérotation pour les organisations qui changent de fournisseur de service par exemple.

3. Portée

On peut utiliser le NAT dans différents cas :

  • On dispose d’une multitude d’hôtes adressés de manière privée et le routeur externe dispose d’une seule ou de quelques adresses IPv4 globales (publiques). Le NAT est configuré sur un routeur en bordure d’un réseau d’extrémité (un LAN), étant identifié comme étant le côté interne (“inside”), qui connecte un réseau public comme l’Internet, identifié comme étant le côté externe (“outside”). Le NAT traduit les adresses locales internes en une adresse globale unique avant d’envoyer les paquets vers le réseau externe.
  • On doit changer des adresses internes. Au lieu de les changer, on les traduit par du NAT.
  • On veut rendre accessible des hôtes qui sont localement et globalement dans le même adressage, autrement dit on permet une connectivité d’adresses qui se chevauchent (“overlapping”) de part et d’autre du routeur NAT.
  • On peut utiliser également le NAT pour distribuer la charge TCP vers un hôte virtuel qui répond à la place de plusieurs serveurs réels selon un principe de type round-robin.
  • Il contribue à améliorer la sécurité des réseaux internes en les rendant opaques aux autres organisations, mais il n’est jamais une mesure de filtrage de sécurité.

4. Limites

  • Le NAT contredit le principe fondamental d’IP qui demande une communication de bout en bout (les stations d’extrémité établissent et gèrent elles-mêmes leur communication). Le NAT pose donc des problèmes dans l’établissement de communications utilisant certains protocoles de sécurité assurant une authentification et un chiffrement (IPSEC), des applications peer-to-peer (VOIP) et autres tels que FTP.
  • En matière de sécurité, il n’est jamais qu’une option qui ne remplace pas un filtrage IP pertinent (pare-feu, firewall).
  • Par ailleurs, son utilisation répandue rend opaque l’étendue réelle de l’Internet IPv4. Rappelons que ce principe a été mis en place pour répondre de manière temporaire au manque d’adresses IPv4.

5. Terminologie Cisco

On fera la distinction entre interne (“inside”) et externe (“outside”). Les adresses internes sont celles qui sont maîtrisées par l’administrateur du réseau d’extrémité. Les adresses externes sont celles dont on n’a pas la maîtrise et qui font partie d’un réseau public tel que l’Internet.

On fera aussi la distinction entre adresses locales et globales. Les adresses locales sont celles qui ne sont pas nécessairement des adresses légitimes et les adresses globales sont celles qui sont routables, qui ont une signification à portée globale.

Concrètement, on trouvera dans les tables NAT jusqu’à quatre types d’adresses :

  • Inside local address - L’adresse IP assignée à un hôte à l’intérieur d’un réseau d’extrémité. Il s’agit probablement d’une adresse privée, non routable globalement.
  • Inside global address - La ou les adresses IP publiques qui représentent les adresses IP locales internes, les adresses IP routables du routeur NAT.
  • Outside local address - L’adresse IP d’un hôte telle qu’elle apparaît aux hôtes d’un réseau interne. Il ne s’agit pas nécessairement d’une adresse légitime routable.
  • Outside global address - L’adresse IP réelle routable d’un hôte qui se situe à l’extérieur du réseau du routeur NAT.
Inside local address et Inside global address
#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
udp 122.168.122.106:59856 192.168.1.100:59856 194.57.169.1:123 194.57.169.1:123
udp 122.168.122.106:43050 192.168.1.101:43050 195.154.105.147:123 195.154.105.147:123
tcp 122.168.122.106:43516 192.168.1.101:43516 216.58.204.132:443 216.58.204.132:443

Dans cette sortie, la colonne Inside local correspond à l’adresse et au port source original qui est traduit dans une entrée correspondante 122.168.122.106:59856. L’adresse Inside global est l’adresse de traduction que la destination va recevoir. L’adresse de destination n’est traduite dans aucune direction, soit la colonne Outside local et la colonne Outside global sont équivalentes.

6. Traduction d’adresses IP

On trouvera deux grands types de traduction d’adresses internes :

  • Les traductions statiques : une correspondance de type un à un entre une adresse IPv4 locale interne et une adresse IPv4 globale interne. Elles sont utiles lorsqu’un hôte interne doit être accessible de l’extérieur. On peut également établir des correspondances de ports TCP/UDP pour réaliser ce que l’on appelle communément le transfert de ports.

  • Les traductions dynamiques : une correspondance de plusieurs-à-plusieurs entre un ensemble d’adresses IP locales (définies par une ACL) et un groupe d’adresses IP globales (définies par un “pool”, une plage d’adresses).

On trouvera deux variantes aux traductions dynamiques :

  • Overloading : la correspondance de plusieurs adresses IP locales internes (définies par une ACL) et une adresse IP globale interne (définie par le nom d’une interface) ou plusieurs adresses IP globales internes (définies par un “pool”) en utilisant comme critère distinctif du trafic les ports TCP/UDP. Cette solution est aussi appelée PAT (“Port Address Translation”), “single-address NAT” ou encore “port-level multiplexed NAT”.
  • Overlapping : la correspondance entre adresses IP internes qui se chevauchent avec des adresses externes et inversement.

7. Méthodes de configuration de traduction d’adresses IP internes

Au préalable, il est utile d’être informé sur les liste d’accès (ACLs) Cisco IOS.

7.1. Traduction statique

Définition du NAT

(config)#ip nat inside source static <local_inside_ip> <global_inside_ip>

Définition des interfaces Inside/Outside

(config)#interface <type> <number>
(config-if)#ip nat inside
(config)# interface <type> <number>
(config-if)#ip nat outside

7.2. Traduction dynamique simple

Adresses locales soumises au NAT

(config)#access-list <access-list_number> permit <source_ip> <wildcard_mask>

Pool d’adresses globales

(config)#ip nat pool <name> <start_ip> <end_ip>

Definition du NAT

(config)#ip nat inside source list <access-list_number> pool <name>

Définition des interfaces Inside/Outside

(config)#interface <type> <number>
(config-if)#ip nat inside
(config)# interface <type> <number>
(config-if)#ip nat outside

7.3. Traduction dynamique overload (PAT) avec une seule IP globale

Adresses locales soumises au NAT

(config)#access-list <access-list_number> permit <source_ip> <wildcard_mask>

Definition du NAT

(config)#ip nat inside source list <access-list_number> interface <type> <number> overload

Définition des interfaces Inside/Outside

(config)#interface <type> <number>
(config-if)#ip nat inside
(config)# interface <type> <number>
(config-if)#ip nat outside

Diagnostic

#clear ip nat translation *
#show ip nat translations [verbose]
#show ip nat statistics
#debug ip nat

8. Mise en place du Source NAT overload

Mise en place du Source NAT overload

À partir d’une topologie représentative telle que celle-ci, on configure le Source NAT overload (PAT) sur R1 qui connecte l’Internet.

(config)#interface g0/1
(config-if)#ip address dhcp
(config-if)#no shutdown

En premier lieu, la procédure consiste à identifier les paquets dont l’adresse IPv4 source correspond à une adresse 192.168.1 par une ACL. En configuration globale sur R1 :

(config)#access-list 1 permit 192.168.1.0 0.0.0.255

Ensuite, une règle NAT traduira l’adresse IPv4 source correspondant à l’ACL définie précédemment par l’adresse IPv4 de l’interface externe G0/1.

(config)#ip nat inside source list 1 interface g0/1 overload

Enfin, il faut indiquer chaque interface qui choisira le trafic à traduire, ici G0/2, G0/3 et G0/0 (inside) et le côté des destinations qui pourraient être traduites (outside).

(config)#interface g0/0
(config-if)#ip nat inside
(config-if)#interface g0/2
(config-if)#ip nat inside
(config-if)#interface g0/3
(config-if)#ip nat inside
(config-if)#interface g0/1
(config-if)#ip nat outside

9. Diagnostic NAT

On retiendra les commandes suivantes :

  • show running-config | include nat
  • show access-list
  • show ip nat translations
  • show ip nat statistics

9.1. Vérification de la configuration

gateway#show running-config | include nat
 ip nat inside
 ip nat outside
ip nat inside source list lan interface GigabitEthernet0/1 overload
gateway#show access-list lan
Standard IP access list lan
    10 permit 192.168.1.0, wildcard bits 0.0.0.255 (41 matches)

9.2. Vérification des traductions

C’est la commande show ip nat translations qui offre la table de traduction.

gateway#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
udp 192.168.122.106:59856 192.168.1.100:59856 194.57.169.1:123 194.57.169.1:123
udp 192.168.122.106:38009 192.168.1.101:38009 194.57.169.1:123 194.57.169.1:123
udp 192.168.122.106:39792 192.168.1.101:39792 80.74.64.1:123 80.74.64.1:123
udp 192.168.122.106:40591 192.168.1.101:40591 178.33.123.180:123 178.33.123.180:123
udp 192.168.122.106:40824 192.168.1.101:40824 194.57.169.1:123 194.57.169.1:123
udp 192.168.122.106:41218 192.168.1.101:41218 195.154.105.147:123 195.154.105.147:123
udp 192.168.122.106:41499 192.168.1.101:41499 80.74.64.1:123 80.74.64.1:123
udp 192.168.122.106:43050 192.168.1.101:43050 195.154.105.147:123 195.154.105.147:123
tcp 192.168.122.106:43516 192.168.1.101:43516 216.58.204.132:443 216.58.204.132:443
udp 192.168.122.106:44933 192.168.1.101:44933 178.33.123.180:123 178.33.123.180:123
udp 192.168.122.106:46438 192.168.1.101:46438 80.74.64.1:123 80.74.64.1:123
udp 192.168.122.106:49243 192.168.1.101:49243 195.154.105.147:123 195.154.105.147:123
udp 192.168.122.106:51454 192.168.1.101:51454 195.154.105.147:123 195.154.105.147:123
udp 192.168.122.106:52567 192.168.1.101:52567 178.33.123.180:123 178.33.123.180:123


9.3. Statistiques NAT

La commande show ip nat statistics offre les statistiques du service de traduction.

gateway#show ip nat statistics
Total active translations: 41 (0 static, 41 dynamic; 41 extended)
Peak translations: 41, occurred 00:00:35 ago
Outside interfaces:
  GigabitEthernet0/1
Inside interfaces:
  GigabitEthernet0/0
Hits: 80  Misses: 0
CEF Translated packets: 80, CEF Punted packets: 0
Expired translations: 0
Dynamic mappings:
-- Inside Source
[Id: 1] access-list lan interface GigabitEthernet0/1 refcount 41

Total doors: 0
Appl doors: 0
Normal doors: 0
Queued Packets: 0

9.4. Déboggage NAT en Cisco IOS

La commande debug ip nat peut être utilisée simplement ou avec un paramètre spécifique.

gateway#debug ip nat ?
  <1-99>      Access list
  detailed    NAT detailed events
  error       NAT error events
  fragment    NAT fragment events
  generic     NAT generic ALG handler events
  h323        NAT H.323 events
  ipsec       NAT IPSec events
  multipart   NAT Multipart support events
  nvi         NVI events
  piggyback   NAT Piggyback support events
  port        NAT PORT events
  pptp        NAT PPTP events
  redundancy  NAT HA redundancy
  route       NAT Static route events
  sbc         NAT SIP Session Border Controller events
  sip         NAT SIP events
  skinny      NAT skinny events
  tcp-alg     NAT-ALG segmentation using common TCP Proxy
  test        TEST Code event
  vrf         NAT VRF events
  wlan-nat    WLAN NAT events
  <cr>

10. Lectures et références