En Une :

NAT : Network Address Translation en Cisco IOS

Cet article a pour objectif d'expliquer et démontrer l'usage du NAT en Cisco IOS : ACLs, Nat Inside, NAT ouside, NAT overload (PAT) ou encore NAT dynamique, NAT/PAT statique ou transfert de port.

1. Introduction

Le NAT a été proposé en 1994 sous la RFC 1631 comme solution à court terme face au manque d'adresses IP. Son objectif principal était de permettre aux adresses IP d'être partagées par un grand nombre de périphériques réseau. En une vingtaine d'années d'existence, il a donné et donne encore le temps nécessaire pour concevoir le nouveau protocole d'adressage IPv6 et, aujourd'hui, le début de son déploiement.

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 on a une seule ou quelques adresses IP 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 puisqu'il les cache.

4. Limites

  • Le NAT contredit le principe fondamental d'IP d'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.
  • Par ailleurs, son utilisation répandue rend opaque l'étendue réelle de l'Internet. 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 et externe. 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.

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 IP locale interne et une adresse IP 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).

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

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

À 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. Lectures et références

Author image
Francois Goffinet est formateur Cisco Systems depuis 2002. Passionné des technologies des réseaux, de virtualisation et en nuage, Web et de cybersécurité souvent en Open Source ou Unix-Like, devops.