Chapitre 615 minIntermédiaire
NAT sur pfSense : NAT sortant, redirection de port et NAT 1:1
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- expliquer dans quel ordre pfSense traduit et filtre ;
- choisir le mode de NAT sortant et écrire une règle manuelle ;
- publier un serveur par une redirection de port et sa règle associée ;
- permettre aux utilisateurs internes de joindre le site public avec un DNS partagé ;
- configurer un NAT 1:1 avec une adresse IP virtuelle.
4 exercices corrigés1 schéma
Le NAT (Network Address Translation, traduction d'adresses) remplace une adresse IP, et souvent un port, dans les paquets qui traversent le pare-feu. Sur pfSense, il prend trois formes : le NAT sortant, qui fait sortir les réseaux privés sur Internet avec l'adresse publique ; la redirection de port (port forward), qui publie un service interne sur un port de l'adresse publique ; le NAT 1:1, qui associe une adresse publique entière à un serveur. Ce chapitre configure les trois chez Sorbier, explique dans quel ordre pfSense traduit et filtre, et règle le cas des utilisateurs internes qui visitent le site public de l'entreprise.
Pourquoi traduire
Les réseaux de Sorbier utilisent des adresses privées (192.168.10.0/24), qui ne circulent pas sur Internet. L'opérateur lui a attribué six adresses publiques, de 203.0.113.17 à 203.0.113.22. Le NAT fait le lien : les postes sortent avec l'adresse publique du pare-feu, et les clients d'Internet joignent le serveur web en visant cette même adresse. Le principe de la traduction et de la table PAT est expliqué dans le cours Réseaux ; celle d'un routeur Cisco dans le cours Routage et commutation.
| Type | Ce qui est traduit | Sens | Usage chez Sorbier |
|---|---|---|---|
| NAT sortant (source NAT, PAT) | L'adresse source privée devient l'adresse publique, avec un port choisi par le pare-feu | Interne vers Internet | Navigation des postes, mises à jour des serveurs |
| Redirection de port (destination NAT) | L'adresse destination publique et un port deviennent une adresse privée et un port | Internet vers interne | Publier le site de suivi de srv-web |
| NAT 1:1 (binat) | Une adresse publique entière ↔ une adresse privée, dans les deux sens, tous ports | Les deux | Un serveur qui a besoin de sa propre adresse publique |
Dans quel ordre pfSense traduit et filtre
Pour le trafic qui entre par une interface, pfSense applique la redirection avant les règles de filtrage. Pour le trafic qui sort par le WAN, le NAT sortant s'applique après le filtrage.
Conséquence directe, la plus importante du chapitre : la règle de filtrage qui autorise un flux redirigé vise l'adresse interne du serveur, pas l'adresse publique. Quand la règle est examinée, l'adresse de destination du paquet a déjà été remplacée.
Le NAT sortant
Firewall > NAT > Outbound propose quatre modes :
| Mode | Fonctionnement | Quand le choisir |
|---|---|---|
| Automatic outbound NAT rule generation | pfSense crée lui-même une règle par réseau interne : tout ce qui sort par le WAN prend l'adresse du WAN | Le défaut ; suffit dans la plupart des cas |
| Hybrid Outbound NAT rule generation | Les règles automatiques, plus tes règles manuelles, lues en premier | Une exception : un serveur qui doit sortir avec une autre adresse publique, un réseau qui ne doit pas être traduit |
| Manual Outbound NAT rule generation | Seulement tes règles ; pfSense ne crée plus rien | Contrôle total ; tout nouveau réseau doit être ajouté à la main |
| Disable Outbound NAT rule generation | Aucune traduction | Pare-feu derrière un routeur qui fait déjà le NAT, ou adresses publiques à l'intérieur |
En mode automatique, la section Automatic Rules liste les règles générées : une ligne par réseau interne (les sept VLAN de Sorbier, les réseaux VPN), traduite vers WAN address. pfSense les crée pour les réseaux des interfaces sans passerelle, ce qui explique le piège de la passerelle de trop vu au chapitre 3. Une règle particulière garde le port source d'origine (Static Port) pour l'UDP 500, le port d'IKE, utile aux VPN IPsec établis depuis l'intérieur.
Le trafic entre deux réseaux internes, et entre le siège et Mâcon dans le tunnel IPsec, n'est jamais traduit : seul ce qui sort par le WAN l'est.
Publier srv-web : la redirection de port
Les clients de Sorbier suivent leurs livraisons sur https://suivi.sorbier.example, dont l'enregistrement DNS public pointe vers 203.0.113.17. Le site est sur srv-web, 192.168.10.225, en DMZ. Firewall > NAT > Port Forward > Add :
| Champ | Valeur | Remarque |
|---|---|---|
| Interface | WAN | Là où arrive le trafic |
| Address Family | IPv4 | |
| Protocol | TCP | Le protocole précis, pas TCP/UDP |
| Source | any (options avancées) | On peut la restreindre à un alias si le service n'est destiné qu'à quelques partenaires |
| Destination | WAN address | L'adresse publique 203.0.113.17 |
| Destination port range | HTTPS (443) | Le port public |
| Redirect target IP | Single host or alias : SRV_WEB | L'adresse privée 192.168.10.225 |
| Redirect target port | HTTPS (443) | Le port interne, souvent le même |
| Description | NAT HTTPS vers srv-web | |
| NAT reflection | Use system default | Voir plus bas |
| Filter rule association | Add associated filter rule | pfSense crée la règle de filtrage correspondante dans l'onglet WAN |
Une seconde redirection publie le port 80, pour que srv-web redirige les visiteurs vers HTTPS (et pour le renouvellement de son certificat Let's Encrypt par le défi HTTP).
Le choix Filter rule association :
- Add associated filter rule (le défaut, à garder) : la règle de filtrage est liée à la redirection ; modifier l'une met l'autre à jour, et la règle ne se modifie pas seule ;
- Add unassociated filter rule : une règle indépendante, qu'il faudra tenir à jour soi-même ;
- Pass : aucune règle visible, le trafic redirigé est autorisé directement ; à éviter, la politique devient illisible dans l'onglet WAN ;
- None : aucune règle ; tu l'écris toi-même, et sans elle le trafic redirigé est bloqué.
La règle créée dans l'onglet WAN se lit : Pass, TCP, source any, destination 192.168.10.225 (l'adresse interne), port 443, avec la description « NAT HTTPS vers srv-web ».
Changer de port au passage. La redirection peut traduire le port : un port public 8443 vers le port interne 443, par exemple. Cela ne cache rien à un balayage de ports et n'apporte aucune sécurité ; on s'en sert seulement quand deux serveurs internes doivent être publiés sur le même port avec une seule adresse publique (sinon, voir le proxy inverse du chapitre 7).
Les utilisateurs internes et le site public
Un salarié de Sorbier tape https://suivi.sorbier.example depuis son poste. Son DNS lui répond 203.0.113.17, l'adresse publique. Le paquet part vers le pare-feu… par l'interface POSTES, pas par le WAN : la redirection, définie sur le WAN, ne s'applique pas, et le poste tombe sur l'interface web du pare-feu (ou sur la règle qui l'interdit). Deux solutions :
| Solution | Principe | Avis |
|---|---|---|
| DNS partagé (split DNS) | Les clients internes reçoivent l'adresse privée du serveur pour ce nom, les clients d'Internet l'adresse publique | La bonne pratique, recommandée par Netgate : le trafic interne va directement au serveur, sans détour par le NAT |
| Réflexion NAT (NAT reflection) | pfSense applique aussi la redirection aux paquets qui arrivent des interfaces internes vers l'adresse publique | Dépannage rapide ; ajoute des règles et une traduction supplémentaires, à réserver aux cas où le DNS partagé est impossible |
Chez Sorbier, les postes utilisent le DNS de l'Active Directory : c'est là qu'on crée le DNS partagé. Une zone qui porte exactement le nom du site évite de masquer le reste de sorbier.example :
# Sur srv-ad : une zone dédiée au seul nom suivi.sorbier.example, répliquée dans l'annuaire
Add-DnsServerPrimaryZone -Name "suivi.sorbier.example" -ReplicationScope "Forest"
# L'enregistrement de la racine de la zone pointe vers l'adresse privée de srv-web
Add-DnsServerResourceRecordA -ZoneName "suivi.sorbier.example" -Name "@" -IPv4Address 192.168.10.225
Les machines qui utilisent le résolveur du pare-feu (la DMZ, les visiteurs) reçoivent la même réponse grâce à une substitution d'hôte : Services > DNS Resolver > Host Overrides > Add, Host suivi, Domain sorbier.example, IP Address 192.168.10.225. Le flux interne vers srv-web est alors un flux ordinaire entre deux zones, autorisé par une règle (la règle 5 de l'onglet POSTES au chapitre 5).
La réflexion NAT se règle globalement dans System > Advanced > Firewall & NAT, section Network Address Translation (Disabled par défaut, Pure NAT ou NAT + Proxy), ou redirection par redirection avec le champ NAT reflection.
Le NAT 1:1
Un NAT 1:1 associe une adresse publique entière à une adresse privée : tout ce qui arrive sur l'adresse publique est traduit vers le serveur, et tout ce que le serveur envoie vers Internet sort avec cette adresse publique. Il sert quand un serveur a besoin de sa propre adresse publique, en entrée comme en sortie : un relais de messagerie (le DNS inverse de l'adresse d'envoi doit correspondre au nom du serveur), un serveur de téléphonie, un service qui utilise de nombreux ports.
Si Sorbier installait un relais de messagerie srv-mail en DMZ (192.168.10.231), avec l'adresse publique 203.0.113.20 :
- Firewall > Virtual IPs > Add : Type IP Alias, Interface WAN, Address
203.0.113.20/29, description « IP publique srv-mail ». Le pare-feu répond désormais aux requêtes ARP de la box pour cette adresse. (Le type Proxy ARP fait la même chose sans que le pare-feu puisse utiliser l'adresse pour ses propres services ; le type CARP sert à la haute disponibilité.) - Firewall > NAT > 1:1 > Add : Interface WAN, External subnet IP
203.0.113.20, Internal IP192.168.10.231(Single host), Destination any, description « 1:1 srv-mail ». - Firewall > Rules > WAN : une règle Pass, TCP, source any, destination
192.168.10.231, port 25. Le NAT 1:1 ne crée aucune règle : sans elle, tout est bloqué, et c'est très bien ainsi.
Vérifier le NAT
- Diagnostics > States : la colonne Source (Original Source) -> Destination (Original Destination) montre les adresses après traduction, et entre parenthèses celles d'origine. Pour la navigation d'un poste, la ligne de l'interface WAN se lit
203.0.113.17:7135 (192.168.10.88:51544) -> 198.51.100.80:443: l'adresse publique et le port choisi par le pare-feu, puis l'adresse réelle du poste. - Depuis l'extérieur (un téléphone en 4G), ouvrir
https://suivi.sorbier.example, et vérifier le journal de srv-web : l'adresse source vue par le serveur est celle du client d'Internet, car la redirection ne traduit que la destination. - Si le serveur publié ne répond pas, vérifie dans l'ordre : la redirection, la règle associée dans l'onglet WAN, la passerelle par défaut du serveur (elle doit être le pare-feu,
192.168.10.238: sinon la réponse part ailleurs et le client attend toujours), le pare-feu local du serveur.
Exercices
Exercice 1 sur 4 Planifier le NAT Réussi À revoir
Sorbier ouvre en DMZ un serveur d'échange de fichiers avec ses transporteurs, srv-sftp (192.168.10.232), accessible en SFTP (TCP 22) uniquement depuis les adresses de trois transporteurs : 198.51.100.10, 198.51.100.11 et 192.0.2.50. L'adresse publique 203.0.113.17 a déjà son port 22 libre, mais le responsable préfère utiliser le port public 2222.
- Écris la redirection de port (champs pfSense).
- Quelle règle de filtrage en résulte dans l'onglet WAN ?
- Quelles règles ajoutes-tu dans l'onglet DMZ ?
Voir la réponseMasquer la réponse de l'exercice 1
- Alias
TRANSPORTEURS(Host(s)) :198.51.100.10,198.51.100.11,192.0.2.50. Redirection : Interface WAN ; Protocol TCP ; SourceTRANSPORTEURS; Destination WAN address, port 2222 ; Redirect target IP192.168.10.232; Redirect target port 22 ; Filter rule association Add associated filter rule ; description « NAT SFTP transporteurs ». - Pass, TCP, source
TRANSPORTEURS, destination192.168.10.232, port 22 (adresse et port internes, puisque la traduction a lieu avant le filtrage). Journaliser : c'est un accès d'Internet vers des données. - Les mêmes principes que pour srv-web : DNS et NTP vers DMZ address, agent Wazuh vers
SRV_JOURNAUX, puis les refus vers le pare-feu et versRESEAUX_INTERNES, les mises à jour versDEPOTS_MAJ, et le refus final. Rien ne doit permettre à srv-sftp d'ouvrir une connexion vers l'intérieur.
Tu avais trouvé ?
Exercice 2 sur 4 La redirection qui ne répond pas Réussi À revoir
Un technicien publie une caméra 192.168.10.165 (VLAN TELEPHONIE) sur le port public 8080 pour la regarder de chez lui. La redirection existe, avec sa règle associée. Depuis Internet, la connexion n'aboutit pas. La capture de paquets sur TELEPHONIE montre les SYN qui sortent vers la caméra, et des SYN-ACK de la caméra qui repartent… vers 192.168.10.161, l'adresse d'un ancien routeur de téléphonie.
- Explique la panne.
- Pourquoi cette publication est-elle de toute façon une mauvaise idée ? Que proposes-tu ?
Voir la réponseMasquer la réponse de l'exercice 2
- La caméra a pour passerelle
192.168.10.161au lieu du pare-feu (192.168.10.174) : sa réponse, destinée à une adresse d'Internet, part vers l'ancien routeur et n'atteint jamais pfSense, qui ne peut donc pas la traduire et la renvoyer. Le client n'obtient jamais de réponse. Correction technique : passerelle192.168.10.174sur la caméra. - Une caméra est un objet rarement mis à jour, dans un VLAN interne : la publier sur Internet expose l'appareil, et à travers lui le réseau de téléphonie, à toutes les attaques automatisées. Il faut supprimer la redirection et passer par le VPN nomade, avec une règle qui autorise le technicien à joindre la caméra, ou par l'enregistreur vidéo si celui-ci propose un accès sécurisé.
Tu avais trouvé ?
Exercice 3 sur 4 DNS partagé ou réflexion ? Réussi À revoir
Après la mise en ligne de suivi.sorbier.example, les commerciaux, depuis le siège, obtiennent la page de connexion du pare-feu (ou un refus) au lieu du site. Depuis chez eux, tout fonctionne.
- Explique pourquoi.
- Donne la solution recommandée, avec les commandes.
- Les visiteurs du Wi-Fi invité doivent aussi pouvoir consulter le site. Que faut-il ajouter ?
Voir la réponseMasquer la réponse de l'exercice 3
- Au siège, le DNS renvoie l'adresse publique
203.0.113.17. Le paquet arrive sur l'interface POSTES, où aucune redirection ne s'applique (elle est définie sur le WAN) : le poste joint donc le pare-feu lui-même sur le port 443, son interface web, que la règle « Refus vers le pare-feu » refuse (ou, sans cette règle, affiche). - Le DNS partagé sur le DNS de l'Active Directory :
Add-DnsServerPrimaryZone -Name "suivi.sorbier.example" -ReplicationScope "Forest", puisAdd-DnsServerResourceRecordA -ZoneName "suivi.sorbier.example" -Name "@" -IPv4Address 192.168.10.225. Les postes reçoivent l'adresse privée et la règle « Postes vers site de suivi » les autorise. - Les visiteurs utilisent le résolveur du pare-feu : une substitution d'hôte (Services > DNS Resolver > Host Overrides)
suivi.sorbier.example→192.168.10.225, et une règle Pass TCP de VISITEURS subnets versSRV_WEBport 443, placée au-dessus de la règle d'isolation versRESEAUX_INTERNES.
Tu avais trouvé ?
Exercice 4 sur 4 Lire une table d'états Réussi À revoir
Dans Diagnostics > States, colonne Source (Original Source) -> Destination (Original Destination), tu lis deux lignes de l'interface WAN :
| Interface | Protocole | Source (source d'origine) -> Destination (destination d'origine) | État |
|---|---|---|---|
| WAN | tcp | 203.0.113.17:20519 (192.168.10.91:49822) -> 198.51.100.80:443 | ESTABLISHED:ESTABLISHED |
| WAN | tcp | 198.51.100.23:60110 -> 192.168.10.225:443 (203.0.113.17:443) | ESTABLISHED:ESTABLISHED |
Pour chaque ligne, dis de quel type de NAT il s'agit, qui a ouvert la connexion et quelles adresses voit chaque extrémité.
Voir la réponseMasquer la réponse de l'exercice 4
- Ligne 1 : NAT sortant. La source d'origine, entre parenthèses, est le poste
192.168.10.91, qui a ouvert une connexion HTTPS vers198.51.100.80. Le pare-feu a traduit la source en203.0.113.17:20519: c'est ce que voit le serveur d'Internet. Le poste, lui, ne voit que l'adresse du serveur. - Ligne 2 : redirection de port. Le client d'Internet
198.51.100.23a ouvert une connexion vers la destination d'origine203.0.113.17:443, traduite vers srv-web192.168.10.225:443. Le client voit l'adresse publique ; srv-web voit l'adresse réelle du client,198.51.100.23, puisque seule la destination a été traduite.
Tu avais trouvé ?