NAT et PAT

Comment des milliers de machines privées partagent une poignée d'adresses publiques — et pourquoi ça devait arriver.

📌

Résumé flash

La NAT traduit une adresse IPv4 privée en adresse publique, sur le routeur de frontière. Trois formes : statique (1 pour 1, fixe), dynamique (plusieurs pour plusieurs, via un pool) et PAT (plusieurs pour une seule, en distinguant par les ports). La PAT est de très loin la plus utilisée — c'est ce que fait votre box.

🔑 #NAT #PAT #overload #RFC1918 #inside-local #inside-global #pool #ACL #ip-nat-inside #ip-nat-outside #translations

01Pourquoi la NAT existe

Il existe deux catégories d'adresses IPv4, et comprendre la différence explique tout le chapitre.

TypePlages (RFC 1918)UtilisationRoutable sur Internet
Privées 10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Réseaux internes — maison, entreprise Non
Publiques Tout le reste, attribué par les RIR Connexions Internet Oui

La NAT (Network Address Translation) est un processus visant à traduire une adresse réseau IPv4. Son objectif principal : la conservation des adresses IPv4 publiques. Elle se configure au niveau du routeur de frontière, celui qui sépare le réseau interne d'Internet.

🌍 Le saviez-vous ?

Il n'existe qu'environ 4,3 milliards d'adresses IPv4 — 232. Dès les années 1990, il est devenu évident qu'elles allaient manquer. La NAT est une solution temporaire, mais toujours massivement utilisée, qui permet à des millions de machines de partager quelques adresses publiques.

La solution définitive est IPv6, avec ses 3,4 × 1038 adresses. « Temporaire » dure depuis trente ans.

💡 Analogie

Un immeuble de bureaux a une seule adresse postale. À l'intérieur, chaque service porte un numéro connu du seul standard. Le courrier sortant part avec l'adresse de l'immeuble ; le courrier entrant est redistribué par le standard, qui tient un registre de qui attend quoi.

La NAT est ce standard : elle tient une table de traduction et se souvient de qui a envoyé quoi, pour savoir à qui remettre la réponse.

02Le vocabulaire

La NAT emploie quatre termes précis. Ce tableau est à mémoriser : il tombe systématiquement, et c'est lui qui permet de lire la table de traduction.

TermeCe que c'estExemple
Inside Local Adresse privée de l'hôte interne, vue depuis le réseau interne 192.168.1.20
Inside Global Adresse publique qui représente l'hôte interne vu depuis Internet 209.165.200.225
Outside Local Adresse de l'hôte externe, vue depuis le réseau interne. Souvent identique à l'Outside Global 192.31.7.1
Outside Global Adresse réelle de l'hôte externe sur Internet 192.31.7.1
🧰 Le moyen mnémotechnique
Inside = mon réseau · Outside = Internet
Local = adresse privée · Global = adresse publique

Il suffit de croiser les deux axes. Et retenez l'essentiel : la NAT traduit principalement Inside Local → Inside Global.

RÉSEAU INTERNE — « inside » INTERNET — « outside » PC 192.168.1.20 Inside Local ROUTEURNAT 209.165.200.225 Inside Global SRV 192.31.7.1 Outside Local = Global La NAT traduit Inside Local → Inside Global au passage du routeur.
Quatre noms, deux axes : de quel côté je regarde, et quelle nature d'adresse.

03Les trois types

TypeRapportPrincipeUsage
NAT statique1 pour 1 Une adresse privée ↔ une adresse publique fixe. Mappage permanent, configuré manuellement Un serveur interne accessible depuis Internet
NAT dynamiquePlusieurs pour plusieurs Les adresses privées sont traduites vers un pool d'adresses publiques. Premier arrivé, premier servi On dispose de quelques adresses publiques pour plus de postes
PAT
(surcharge)
Plusieurs pour 1 Plusieurs adresses privées partagent une seule adresse publique, différenciées par le port TCP/UDP La forme la plus utilisée aujourd'hui

04NAT statique

Elle crée une correspondance permanente et fixe entre une adresse privée et une adresse publique. Configurée manuellement, elle ne change jamais.

Cas d'usage typique : un serveur web interne qui doit être accessible depuis Internet à une adresse publique constante.

Cisco IOS — R2
! ─── Étape 1 : le mappage statique  privée → publique ───
R2(config)# ip nat inside source static 192.168.10.254 209.165.201.5

! ─── Étape 2 : déclarer les interfaces ───
R2(config)# interface serial 0/1/0
R2(config-if)# ip nat inside                ← côté RÉSEAU INTERNE
R2(config-if)# exit
R2(config)# interface serial 0/1/1
R2(config-if)# ip nat outside               ← côté INTERNET
R2(config-if)# end
vérification
R2# show ip nat translations

Pro  Inside global      Inside local      Outside local   Outside global
---  209.165.201.5      192.168.10.254    ---             ---
Total number of translations: 1
🧰 Conseil d'expert

En NAT statique, l'entrée dans la table est toujours présente, même quand personne ne communique. C'est la différence essentielle avec la NAT dynamique, où les entrées n'apparaissent que pendant une session active.

Voir une table vide sur une NAT dynamique n'est donc pas un symptôme de panne — c'est normal si personne ne navigue.

⚠️ Oublier ip nat inside ou ip nat outside

Le mappage peut être parfait : sans la déclaration des interfaces, la NAT ne s'applique jamais. Le routeur ne sait pas dans quel sens traduire.

Et l'inversion des deux est tout aussi fatale : inside va sur l'interface tournée vers le réseau local, outside sur celle tournée vers Internet. C'est l'erreur la plus fréquente du chapitre, et elle ne produit aucun message — seulement une table de traduction désespérément vide.

05NAT dynamique

Elle attribue automatiquement une adresse publique disponible, prise dans un pool, à chaque machine interne qui veut accéder à Internet. Le routeur gère lui-même les correspondances, selon le principe du premier arrivé, premier servi : si toutes les adresses du pool sont utilisées, la machine suivante doit attendre qu'une se libère.

🧰 Qu'est-ce qu'un « pool » ?

Une plage d'adresses publiques disponibles. Si votre fournisseur d'accès vous attribue 209.165.200.226 à 209.165.200.240, vous créez un pool avec ces 15 adresses. Chaque machine interne en emprunte une pour sortir, et la libère quand elle a fini.

Les cinq étapes

Cisco IOS — R2
! ─── 1. Définir le pool d'adresses publiques ───
R2(config)# ip nat pool NAT-POOL1 209.165.200.226 209.165.200.240 netmask 255.255.255.224

! ─── 2. Une ACL pour désigner les hôtes internes à traduire ───
R2(config)# access-list 1 permit 192.168.0.0 0.0.255.255

! ─── 3. Lier l'ACL au pool ───
R2(config)# ip nat inside source list 1 pool NAT-POOL1

! ─── 4 et 5. Déclarer les interfaces ───
R2(config)# interface serial 0/1/0
R2(config-if)# ip nat inside
R2(config-if)# exit
R2(config)# interface serial 0/1/1
R2(config-if)# ip nat outside
R2(config-if)# end
⚠️ Le nom du pool est sensible à la casse

Si vous créez NAT-POOL1 et écrivez nat-pool1 dans la commande ip nat inside source list, la correspondance échoue et la NAT ne fonctionne pas. IOS accepte la commande sans broncher : il croit que vous référencez un autre pool, qui n'existe pas.

🌍 Le masque générique de l'ACL

access-list 1 permit 192.168.0.0 0.0.255.255 — ce n'est pas un masque de sous-réseau, c'est un masque générique (wildcard), et il fonctionne à l'envers :

  • 0 = ce bit doit correspondre exactement ;
  • 1 = ce bit est indifférent.

0.0.255.255 signifie donc « les deux premiers octets doivent valoir 192.168, les deux derniers n'importe quoi ». C'est le complément du masque 255.255.0.0 — on l'obtient en soustrayant chaque octet à 255.

Gérer et vérifier

Cisco IOS
R2# show ip nat translations            ← les traductions actives
R2# show ip nat translations verbose    ← avec date et durée
R2# show ip nat statistics              ← compteurs, dont les « Hits »
R2# clear ip nat translation *          ← effacer les entrées DYNAMIQUES (pas les statiques)
R2# clear ip nat statistics             ← remettre les compteurs à zéro
🧰 La méthode de test propre
  1. clear ip nat statistics — repartir de zéro ;
  2. faire passer du trafic depuis un poste interne ;
  3. show ip nat statistics — les Hits comptent les paquets traduits avec succès.

Si les Hits augmentent, la NAT fonctionne. S'ils restent à zéro alors que le trafic passe, c'est que le trafic ne traverse pas les interfaces déclarées, ou que l'ACL ne le sélectionne pas.

⚠️ L'expiration des entrées dynamiques

Par défaut, une entrée NAT dynamique expire au bout de 24 heures sans activité. Pour modifier ce délai : ip nat translation timeout <secondes>. Pour effacer avant expiration : clear ip nat translation *.

En TP, si une adresse du pool semble « bloquée », c'est souvent une entrée résiduelle d'un test précédent : un clear règle le problème.

06PAT — la surcharge

La PAT (Port Address Translation), aussi appelée surcharge NAT ou NAT overload, est la forme la plus utilisée aujourd'hui. Elle permet à des milliers de machines internes de partager une seule adresse IP publique.

Elle ajoute un niveau de différenciation : en plus des adresses IP, elle utilise les numéros de port TCP/UDP pour distinguer les sessions de chaque machine.

A B C 192.168.1.10:1444 192.168.1.11:1444 192.168.1.12:1520 ROUTEURPAT 209.165.200.225:1444 209.165.200.225:1445 209.165.200.225:1520 une SEULE adresse publique A et B utilisaient le même port 1444 : la PAT incrémente le second en 1445.
Le port devient le numéro d'appartement : c'est lui qui identifie la session.
💡 Analogie

Un immeuble a une seule adresse — l'adresse IP publique. Mais chaque appartement a un numéro — le port. Le facteur sait à qui remettre le courrier grâce au numéro d'appartement.

La PAT fait exactement cela : une seule adresse publique, mais des milliers de ports pour identifier chaque connexion.

Quand deux machines utilisent le même port source — 1444 par exemple — la PAT incrémente celui de la seconde en 1445, afin de maintenir une entrée unique dans sa table.

Cisco IOS — PAT avec l'adresse de l'interface
! ACL pour désigner les hôtes internes à traduire
R2(config)# access-list 1 permit 192.168.0.0 0.0.255.255

! Lier l'ACL à l'interface externe avec le mot-clé « overload » = PAT
R2(config)# ip nat inside source list 1 interface serial 0/1/0 overload

! Interfaces
R2(config)# interface serial 0/1/0
R2(config-if)# ip nat outside
R2(config-if)# exit
R2(config)# interface fastethernet 0/0
R2(config-if)# ip nat inside
Cisco IOS — PAT avec un pool
R2(config)# ip nat pool PAT-POOL 209.165.200.226 209.165.200.226 netmask 255.255.255.224
R2(config)# ip nat inside source list 1 pool PAT-POOL overload
!                                                     └── le mot-clé qui change tout
⚠️ overload — un mot, deux comportements

La commande ip nat inside source list 1 pool P et ip nat inside source list 1 pool P overload sont presque identiques à l'écrit, mais radicalement différentes :

  • Sans overload — NAT dynamique. Une adresse publique par machine. Le pool épuisé, plus personne ne sort.
  • Avec overload — PAT. Toutes les machines partagent les adresses, distinguées par les ports. Le pool ne s'épuise pratiquement jamais.

C'est le mot-clé à ne pas oublier — et la question la plus fréquente sur ce chapitre.

🌍 Combien de machines derrière une seule adresse ?

Les ports source vont de 1024 à 65535, soit environ 64 000 sessions simultanées par adresse publique. Comme un poste ouvre en moyenne quelques dizaines de connexions, une seule adresse publique suffit largement à un réseau de plusieurs centaines de machines.

C'est ce qui explique que la pénurie d'IPv4, annoncée pour les années 2000, ne se soit jamais traduite par une panne visible pour l'utilisateur.

07Avantages et inconvénients

AvantagesInconvénients
  • Elle conserve le schéma d'adressage officiellement inscrit
  • Elle augmente la souplesse des connexions au réseau public
  • Elle assure la cohérence des schémas d'adressage du réseau interne
  • Elle garantit la sécurité du réseau
  • Dégradation des performances
  • Dégradation de la fonctionnalité de bout en bout
  • Perte de la traçabilité IP de bout en bout
  • Tunneling plus complexe
  • Perturbations éventuelles de l'établissement des connexions TCP
🧰 Comprendre les deux inconvénients les moins évidents

« Fonctionnalité de bout en bout » — le principe fondateur d'Internet veut que deux machines puissent se joindre directement. Avec la NAT, une machine interne n'est pas joignable de l'extérieur : c'est gênant pour la visioconférence, les jeux en ligne, le pair-à-pair. D'où les mécanismes de contournement, comme la redirection de ports.

« Perte de la traçabilité IP » — vu d'Internet, toutes les machines du réseau ont la même adresse. En cas d'incident de sécurité, impossible de désigner la machine responsable sans consulter les journaux de la NAT. C'est un vrai problème d'imputabilité, notamment sur le plan légal.

⚠️ « Elle garantit la sécurité » — à nuancer

Le cours l'affirme, et c'est vrai partiellement : les machines internes ne sont pas directement joignables depuis Internet, ce qui bloque les analyses de ports et les attaques directes.

Mais la NAT n'est pas un pare-feu. Elle ne filtre rien, n'inspecte rien, ne bloque aucun contenu malveillant. Un poste interne qui télécharge un logiciel malveillant n'est pas protégé — la NAT laissera passer sans broncher toute la communication qu'il initiera ensuite.

Si la question tombe : « la NAT apporte une sécurité par obscurité, elle ne remplace pas un pare-feu ».

08Vérifier et dépanner

CommandeCe qu'elle montre
show ip nat translationsLa table de traduction active — la commande de référence
show ip nat translations verboseAvec date de création et durée de vie
show ip nat statisticsNombre de traductions, Hits, Misses, interfaces déclarées
show running-config | include natToutes les lignes de configuration NAT d'un coup
clear ip nat translation *Efface les entrées dynamiques
debug ip natChaque traduction en direct — puis undebug all

Lire une table de traduction

Cisco IOS
R2# show ip nat translations

Pro   Inside global          Inside local        Outside local     Outside global
tcp   209.165.200.225:1444   192.168.1.10:1444   192.31.7.1:80     192.31.7.1:80
tcp   209.165.200.225:1445   192.168.1.11:1444   192.31.7.1:80     192.31.7.1:80
      └── l'adresse publique  └── le vrai poste   └── le serveur distant
          + le port attribué      + son port
                                                  ↑ ports IDENTIQUES ici :
                                                    la PAT n'a traduit que le côté interne
SymptômeCause probableVérification
La table de traduction est vide ip nat inside ou ip nat outside manquant, ou inversés show ip nat statistics → les interfaces déclarées
Les Hits restent à zéro L'ACL ne sélectionne pas le trafic, ou le trafic ne traverse pas les bonnes interfaces show access-lists → les compteurs de correspondance
Certains postes sortent, d'autres non Pool épuisé en NAT dynamique — il manque overload show ip nat statistics → adresses allouées / disponibles
Le nom du pool n'est pas reconnu Casse différente entre création et référence show running-config | include nat pool
Une adresse reste bloquée Entrée dynamique résiduelle — expire au bout de 24 h clear ip nat translation *
❓ Auto-évaluation

Une entreprise dispose de 3 adresses publiques et de 80 postes. Le technicien a configuré une NAT dynamique avec un pool de ces 3 adresses. Les trois premiers utilisateurs sortent sur Internet, les 77 autres non. Que s'est-il passé, et comment corriger ?

Ce qui s'est passé : la NAT dynamique attribue une adresse publique par machine, selon le principe du premier arrivé, premier servi. Avec 3 adresses, seuls 3 postes peuvent sortir simultanément. Les autres attendent qu'une adresse se libère — c'est-à-dire jusqu'à 24 heures, durée d'expiration par défaut.

La correction : ajouter le mot-clé overload, pour passer en PAT.

Cisco IOS
R2(config)# no ip nat inside source list 1 pool NAT-POOL1
R2(config)# ip nat inside source list 1 pool NAT-POOL1 overload
R2# clear ip nat translation *            ← purger les entrées bloquées

Les 80 postes partagent alors les 3 adresses, distingués par leurs ports. En pratique, une seule aurait suffi : environ 64 000 sessions simultanées par adresse.

Le diagnostic qui mène là : show ip nat statistics affiche « allocated 3, misses N » — trois adresses allouées et un compteur de misses qui grimpe. Un miss signifie « j'aurais dû traduire, je n'ai pas pu ».

⚡ Le récap en 2 minutes

  • Privé (RFC 1918) : 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 — non routables sur Internet.
  • Inside / Outside = de quel côté. Local / Global = privée ou publique. La NAT traduit Inside Local → Inside Global.
  • Statique 1↔1 fixe · dynamique pool, premier arrivé · PAT plusieurs→1 par les ports.
  • Toujours ip nat inside côté LAN et ip nat outside côté Internet — sans quoi rien ne se traduit.
  • Le nom du pool est sensible à la casse.
  • overload transforme une NAT dynamique en PAT. C'est le mot-clé.
  • Statique = entrée toujours présente ; dynamique = seulement pendant une session.
  • La NAT n'est pas un pare-feu. Elle masque, elle ne filtre pas.

Sources exploitées

  • 5-cours_NAT.pdf — le professeur
  • 5-cours_DHCP_nat-pat.pdf
  • 5-1-TP-Config Dynamic and Static NAT.pdf
  • 5-2-packet-tracer — configure PAT
  • 5-3-Packet Tracer — Verifying and Troubleshooting NAT Configurations