Comprendre le NAT et le PAT, leur rôle dans les réseaux modernes, et les configurer avec iptables et pfSense.
Connaître les bases de l'adressage IP (RFC 1918, masques). Notions sur le routage. Pour la partie pratique, Debian avec deux interfaces réseau ou pfSense.
Le NAT (Network Address Translation) modifie les adresses IP dans les en-têtes des paquets lors de leur transit par un routeur. Il permet aux machines du réseau privé (adresses RFC 1918) d'accéder à Internet via une seule adresse IP publique.
| Type | Direction | Description | Usage |
|---|---|---|---|
| SNAT (Source NAT) | LAN → WAN | Modifie l'IP source — les machines privées sortent avec l'IP publique | Accès Internet depuis le LAN |
| DNAT (Destination NAT) | WAN → LAN | Modifie l'IP destination — redirige le trafic entrant vers une machine interne | Port forwarding, DMZ |
| PAT / Masquerade | LAN → WAN | SNAT dynamique — partage une IP publique entre de nombreux clients via les ports | Box Internet, pfSense |
| NAT 1:1 (Full NAT) | WAN ↔ LAN | Association complète d'une IP publique avec une IP privée | Serveurs en DMZ |
Le PAT est la forme de NAT la plus courante. Il permet à des centaines de machines de partager une seule adresse IP publique en distinguant les connexions grâce aux numéros de port. C'est ce que fait votre box Internet à la maison.
Exemple de table PAT (simplifiée) : IP privée Port src IP publique Port PAT Destination 192.168.1.10 45231 → 203.0.113.1 60001 → 8.8.8.8:53 192.168.1.11 45232 → 203.0.113.1 60002 → 8.8.8.8:53 192.168.1.12 52100 → 203.0.113.1 60003 → 142.250.75.100:443 Le routeur NAT remplace l'IP source privée par l'IP publique + un port unique. Quand la réponse arrive sur le port 60001, il sait la renvoyer à 192.168.1.10:45231.
# Activer temporairement le routage IP sudo sysctl -w net.ipv4.ip_forward=1 # Rendre permanent echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.d/99-nat.conf sudo sysctl -p /etc/sysctl.d/99-nat.conf
# eth0 = interface WAN (Internet), eth1 = interface LAN # Règle MASQUERADE : les machines du LAN sortent avec l'IP de eth0 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Autoriser le trafic LAN → WAN sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT # Autoriser les réponses (connexions établies) sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT # Rendre les règles persistantes sudo apt install iptables-persistent -y sudo netfilter-persistent save
# Rediriger le port 80 entrant (WAN) vers le serveur web interne (192.168.1.10:80) sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \ -j DNAT --to-destination 192.168.1.10:80 # Autoriser ce trafic dans la chaîne FORWARD sudo iptables -A FORWARD -i eth0 -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT # Voir les règles NAT actives sudo iptables -t nat -L -n -v
Firewall > NAT > Outbound Mode par défaut : Automatic Outbound NAT (pfSense crée automatiquement les règles MASQUERADE pour tous les réseaux locaux) Pour personnaliser : passer en mode "Hybrid" ou "Manual" Ajouter une règle : Interface : WAN Source : 192.168.10.0/24 (réseau LAN) Destination : any Translation : Interface address (IP WAN)
Firewall > NAT > Port Forward > Add Interface : WAN Protocol : TCP Destination : WAN address Destination port range : 80 Redirect target IP : 192.168.1.10 Redirect target port : 80 Description : Serveur Web HTTP → Save + Apply Changes pfSense crée automatiquement la règle de pare-feu correspondante.
✅ Réponse : Remplace l'IP source privée par l'IP publique de l'interface de sortie
✅ Réponse : net.ipv4.ip_forward
✅ Réponse : La traduction de l'adresse destination — utilisé pour le port forwarding
✅ Réponse : Par les numéros de port source
✅ Réponse : Firewall > NAT > Outbound