NAT

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Traduction d'adresses réseau
Couche OSI 3/4 (Réseau/Transport)
RFC RFC 1631 (concept, 1994) · RFC 3022 (NAT/PAT)
Voir aussi IP · Iptables · Firewalld · SIP

NAT (Network Address Translation) désigne les techniques qui modifient, au passage d'un routeur ou d'un pare-feu, les adresses IP (et éventuellement les ports) contenues dans l'en-tête des paquets. Le NAT a d'abord été conçu pour retarder l'épuisement des adresses IPv4 publiques en permettant à plusieurs machines d'un réseau privé de partager une seule adresse publique pour sortir sur Internet ; il est aujourd'hui aussi largement utilisé comme brique de sécurité de base (les machines internes ne sont pas directement joignables depuis l'extérieur).

Adressage privé (RFC 1918)

Le NAT s'appuie généralement sur les plages d'adresses réservées à un usage privé, non routables sur Internet public :

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

Une machine de ces plages ne peut atteindre Internet qu'après traduction de son adresse source par un équipement NAT en bordure de réseau.

Types de NAT

  • NAT statique (1:1) — une adresse privée est systématiquement traduite vers la même adresse
 publique. Utilisé pour exposer un serveur interne (ex. DMZ) avec une IP publique dédiée.
  • NAT dynamique — un pool d'adresses publiques est attribué à la demande aux machines
 internes, sans mapping fixe préétabli.
  • PAT / NAT overload / masquerade — le cas le plus répandu : toutes les machines internes
 partagent une seule adresse IP publique, distinguées entre elles par le port source
 réécrit à la volée (d'où le nom PAT, Port Address Translation). C'est le mode utilisé par
 la plupart des box/routeurs domestiques et par la directive MASQUERADE d'
 Iptables ou de Firewalld.

Mise en œuvre sous Linux

Sous Linux, le NAT est réalisé au niveau du sous-système netfilter, piloté via Iptables (table nat, chaînes PREROUTING/POSTROUTING) ou via la notion de zones et de masquerade de Firewalld. Exemple minimal de sortie masquerade avec Iptables :

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Limites et effets de bord

Le NAT casse le principe de bout-en-bout (end-to-end) d'Internet : une machine derrière un NAT n'est pas directement joignable depuis l'extérieur sans redirection de port explicite (port forwarding), et l'adresse IP source vue par le destinataire n'est plus celle de l'émetteur réel.

Cette réécriture pose des difficultés particulières aux protocoles qui transportent des adresses IP ou des numéros de port dans leurs données applicatives (et pas seulement dans les en-têtes réseau) :

  • FTP actif — le serveur initie une connexion de données vers un port annoncé par le client
 dans le flux de contrôle ; ce port, s'il n'est pas réécrit par un module NAT applicatif dédié
 (ALG, Application Layer Gateway), ne correspond plus à rien une fois passé le NAT.
  • SIP — la signalisation SIP embarque elle aussi des adresses IP et des ports (pour la
 négociation du flux média RTP) dans le corps de ses messages ; un NAT non conscient de SIP peut
 rendre l'établissement de l'appel ou la remontée du flux audio/vidéo impossible, d'où le recours
 fréquent à des mécanismes complémentaires (STUN, TURN, ALG SIP) pour la téléphonie sur IP en
 environnement NATé.

Voir aussi

  • IP — adressage traduit par le NAT
  • Iptables et Firewalld — outils Linux permettant de configurer du NAT
  • SIP — protocole particulièrement sensible aux effets du NAT