Aller au contenu principal

NAT et PAT: pools, overload et vérification

CCNA — IP Services

NAT et PAT: pools, overload et vérification

Définition

NAT (Network Address Translation) réécrit les adresses IP des paquets qui traversent un routeur, typiquement entre un réseau privé (RFC 1918) et Internet. PAT (Port Address Translation, ou NAT overload) va plus loin : des centaines d'hôtes partagent une seule adresse publique, la distinction se faisant par les ports TCP/UDP source.

Contexte

Topic 4.1 du blueprint 200-301 : configurer et vérifier inside source NAT avec des adresses statiques et des pools. L'examen distingue trois formes - statique (1:1), dynamique (pool), overload (PAT) - et attend la lecture de show ip nat translations avec les termes inside local, inside global, outside local, outside global.

Détails techniques

Le vocabulaire Cisco

Terme Définition Exemple
Inside local Adresse privée réelle de l'hôte interne 192.168.10.50
Inside global Adresse publique visible depuis Internet 203.0.113.2, port 1024
Outside local Adresse du serveur externe vue de l'intérieur (souvent = outside global) 198.51.100.5
Outside global Adresse réelle du serveur externe 198.51.100.5

La traduction se déclenche quand un paquet sort de l'interface marked ip nat inside vers une ip nat outside. Une entrée de translation a un timer : elle meurt si le trafic s'arrête (24 h par défaut en TCP sortant, raccourcissable).

Les trois configurations

Statique 1:1 (un serveur interne accessible depuis l'extérieur) :

R1(config)# ip nat inside source static 192.168.10.50 203.0.113.50
R1(config)# interface GigabitEthernet0/0
R1(config-if)# ip nat inside
R1(config-if)# exit
R1(config)# interface GigabitEthernet0/1
R1(config-if)# ip nat outside

Dynamique depuis un pool (hôtes internes sortants, adresses publiques rares) :

R1(config)# ip nat pool PUBLIC 203.0.113.10 203.0.113.20 netmask 255.255.255.0
R1(config)# access-list 1 permit 192.168.10.0 0.0.0.255
R1(config)# ip nat inside source list 1 pool PUBLIC

Overload / PAT (le cas de 99 % des réseaux) :

R1(config)# access-list 1 permit 192.168.10.0 0.0.0.255
R1(config)# ip nat inside source list 1 interface GigabitEthernet0/1 overload

Le mot-clé overload active l'usage des ports : chaque flux interne obtient un port source éphémère sur l'adresse publique de l'interface. interface GigabitEthernet0/1 plutôt qu'un pool : on s'adapte si l'ISP change l'adresse (DHCP, PPPoE).

La table de translation

R1# show ip nat translations
Pro  Inside global      Inside local       Outside local      Outside global
tcp  203.0.113.2:1024   192.168.10.50:22   198.51.100.5:443   198.51.100.5:443
udp  203.0.113.2:1031   192.168.10.71:53   8.8.8.8:53         8.8.8.8:53

Quatre lignes utiles : show ip nat statistics (hits, misses, pool épuisé), clear ip nat translation * (vide la table, attention en production), debug ip nat sur un routeur lab (bruyant), et l'ACL qui pilote le match du trafic à traduire : sans ACL correcte, pas de NAT, point.

Limites et trous classiques

  • PAT offre ~65 535 ports par adresse et par protocole ; un site de 3 000 postes sur une seule IP publique tient, mais les applications à longues sessions (VPN IPsec, BGP) peuvent bouffer les ports disponibles.
  • NAT casse les protocoles qui embarquent leur adresse dans la charge (FTP actif, SIP, H.323) : d'où le ip nat inside source static ... ou les inspecteurs CBAC/ZBFW qui réécrivent aussi la payload.
  • NAT statique rend un serveur interne atteignable : il ne le sécurise pas, il faut une ACL ou un firewall derrière.
  • NAT n'est pas une fonction de sécurité : c'est un contournement de pénurie d'adresses, la RFC 1918 + NAT ont repoussé l'épuisement IPv4, pas les IPv6 publics.

Exemple concret

Une PME a 120 postes derrière un routeur, une IP publique fixe 198.51.100.10 (hors interface WAN). Configuration PAT sur l'interface :

R2(config)# access-list 10 permit 10.20.0.0 0.0.255.255
R2(config)# ip nat inside source list 10 interface GigabitEthernet0/0 overload

Un poste 10.20.5.77 ouvre trois sessions HTTPS : la table montre trois lignes avec ports éphémères différents (par ex. 10241, 10242, 10247) tous traduits depuis la même IP. Le site web interne en 10.20.0.5:443 est publié par une entrée statique séparée ip nat inside source static tcp 10.20.0.5 443 198.51.100.10 8443 : le test curl https://198.51.100.10:8443 depuis un téléphone en 4G répond bien, preuve que le statique fonctionne. Six mois plus tard, un nouvel ISP livre une IP dynamiquement par PPPoE : le interface GigabitEthernet0/0 overload n'a rien à changer, la ligne statique de publication en revanche casse (l'IP globale a bougé) : d'où le recours à un DNS dynamique côté admin.

Pièges fréquents

  1. Oublier une des deux interfaces dans inside/outside : la traduction ne se déclenche jamais.
  2. ACL wildcard inversée : 0.0.0.255 est un wildcard, pas un masque ; écrire le masque d'un /24 désactive le match.
  3. overload absent du pool dynamique : le pool s'épuise au bout de N sessions simultanées, sans message d'erreur côté client.
  4. Tester NAT depuis le routeur lui-même : un ping source de l'interface inside ne traverse pas la même logique qu'un paquet forwarding.