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
- Oublier une des deux interfaces dans inside/outside : la traduction ne se déclenche jamais.
- ACL wildcard inversée :
0.0.0.255est un wildcard, pas un masque ; écrire le masque d'un /24 désactive le match. overloadabsent du pool dynamique : le pool s'épuise au bout de N sessions simultanées, sans message d'erreur côté client.- 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.