[pfSense 2.3] Rediriger un ou plusieurs ports d’une VM derrière le pfSense (PAT)

pfSense est un pare-feu et un routeur – vous pouvez mettre des redirections de ports pour pouvoir accéder à certains services via internet vers votre machine derrière le pfSense.

Cette technique est utilisée sur tous les routeurs, notamment en IPv4 pour pouvoir bénéficier de plusieurs accès à différents services qu’avec une seule IP. Il s’agit du NAT. Ici, nous allons plus loin dans le système, puisqu’il s’agit du PAT, pour « Port Address Translation ».

Pour se faire, il faut donc ajouter une redirection de ports – nous avons la chance qu’avec pfSense, l’interface web permet de faire cette redirection de manière intuitive et à peu près automatisée. Ouvrez l’interface de pfSense puis connectez-vous.
Cliquez sur le menu « Firewall », puis sur « NAT ». Une liste de toutes les redirections va s’afficher. Cliquez sur le bouton « Add » en bas de cette liste pour ouvrir l’assistant de redirection.

La création d’une redirection s’appréhende de la sorte :

  • L’interface de destination est l’interface qui sera « réceptrice » de la demande, donc sur internet – WAN.
  • Le protocole, la destination et le « destination port range » : il s’agit des options qui seront accessibles sur l’internet.

Dans l’exemple ci-dessous, j’autorise l’accès via le port WAN que les clients contacte via TCP le port 80.

Schéma et exemple simple :
Un client souhaite accéder au site web de votre VM, dans votre réseau local.

CLIENT > internet > |pfSense WAN| > redirection "port forwarding" > |pfSense LAN| > VM

Une fois la partie « destination » effectuée, il faut passer à la redirection. Ci-dessous, l’exemple concerne une machine virtuelle ayant un serveur web sur l’IP 192.168.100.212.
La configuration se fait de la sorte :

Il est fortement conseillé de mettre des descriptions / commentaires – vous saurez ce qu’il en est lorsque vous serez sur la liste de toutes les redirections. L’autre point est le « NAT reflection » – par défaut, pfSense effectuera le NAT (PAT) mais aussi la règle correspondante dans le pare-feu. Pratique !
Vous pouvez vous aventurer plus loin dans les paramètres, mais le blocage du service se fait très (trop malheureusement) rapidement !

Quand votre règle est prête, cliquez sur « Save » – la liste des redirections va alors s’afficher, avec un bouton principal : « Apply changes »

Après avoir cliqué sur « apply changes », les modifications seront alors prises en compte et votre pfSense va donc faire ce fameux PAT. Tester immédiatement l’accès au service qui est redirigé : si vous y accédez, c’est gagné !


Multiples redirections de ports

Vous avez plusieurs machines virtuelles à administrer, via une seule et même IP côté WAN – toutes ont le même port de connexion, prenons par exemple le SSH (22).
La solution est assez simple : il s’agit quand même du redirection de ports, le « destination port » va être modifié et être incrémenté (par exemple) et le « redirection port » restera lui 22. pfSense saura alors quel machine doit être contacté en fonction du port que vous avez saisi depuis un PC distant.

Exemple :

  • machine 1 = 192.168.100.11, port 22
  • machine 2 = 192.168.100.12, port 22
  • machine 3 = 192.168.100.13, port 22

la configuration de pfSense sera alors de la sorte :

  • machine 1 = 192.168.100.11, sur le WAN en port « 222 »
  • machine 2 = 192.168.100.12, sur le WAN en port « 223 »
  • machine 3 = 192.168.100.13, sur le WAN en port « 224 »

Chaque serveur a le même port « NATé », mais le port visible sur le net sera différent. vous pourrez ainsi partager la même adresse de connexion entre tous vos serveurs, tous ayant le même port d’écoute (ici, le 22) mais un port de connexion différent.

Cette technique est purement du « PAT » (Port Address Translation) – il s’agit d’un cas typique à utiliser en IPv4 pour éviter d’utiliser de nombreuses adresses. Toutefois, n’en abusez pas non plus, certains services /logiciels n’aiment pas être redirigés de la sorte.

Julien H

Passionné depuis toujours par l'informatique, je transforme ma passion en expertise. J'utilise quotidiennement les outils et systèmes Microsoft. Je ne délaisse pas mon côté ouvert, notamment via l'utilisation des OS Debian et Archlinux. L'infosec m'ouvre les yeux sur les enjeux actuels et futurs de l'IT.

8 commentaires

  1. Bonjour,

    Très bon article – Merci pour le partage.

    Si je peux me permettre, je voulais vous attirer l’attention du fait que l’ajout dans la partie : Firewall/NAT/PortForward pour la redirection du port 80 vers mon serveur en interne n’a pas fonctionné.

    J’ai été obligé d’ajouter une règle aussi dans la partie : Firewall/Rules/Wan pour la redirection.

    J’aurais manque quelque chose ?

    Cordialement

    PS : mon LAB

    VirtualBox avec 3 VM’s : Pfsense 2.3.3 ; Win7Pro et Debian_8.3 (comme serveur web)

    1. Bonjour, merci pour les compliments 🙂
      C’est assez curieux le fait que vous ayez dû justement ajouter des règles dans le Firewall/Rules/Wan > lorsque l’on crée une règle NAT, sans avoir touché auparavant à la configuration du NAT dans pfSense, la règle pour le Firewall/Rules/Wan est automatiquement créée.
      Pour savoir si cette option de création automatique est mis en place, il faut effectuer un contrôle lors de la création d’une règle NAT :

      • Le « NAT Reflection » doit être en « Use system default »
      • Le « Filter rule association » (le plus important, c’est lui qui pose problème dans votre cas) doit être sur « Rule NAT ».

      Avec ces options, pfSense est capable de créer automatiquement les règles nécessaires pour le NAT (d’une part, puisqu’on lui demande) et le pare-feu « WAN ».
      Dans tous les cas, merci pour le retour ! C’est toujours bon de prendre les expériences positives comme négatives ! 🙂

      1. …c’est assez bizarre je l’avoue aussi …car j’ai effectué aussi la redirection du port SSH et une autre règle sur le port 8090 en WAN vers 80 en LAN sur mon serveur et la la règle a été crée automatiquement.

        Merci en tout cas pour votre réponse.

        Bonne continuation.

  2. Bonjour,

    Très bon article, explication simple, avec des petites images qu’on aime tant.

    J’aimerais aller plus loin dans les redirections, et je voulais savoir s’il était possible de rediriger plusieurs port 80 entrant vers des adresses interne en FONCTION du nom de sous domaine.
    exemple:
    a.domaine.com(:80) –> vers 192.168.0.10
    b.domaine.com(:80) –> vers 10.0.0.100

    A savoir que pfSense à une adresse IP publique (bridgé depuis une box SFR).

    Dans l’attente de vous lire, encore bravo pour votre site, et la section pfSense tout francisé 😉

    Victor.

    1. Bonjour Victor,
      Merci pour ton retour :-).
      Ce type de redirection est possible, c’est un peu plus « tordu » par contre à mettre en place, notamment parce qu’il faut faire appel à plusieurs notions dans cette situation : les « Virtual IP » et faire un « Reverse Proxy ». Je n’ai pas mis en place ce genre d’architecture, se serait par contre un bon exercice… ! Je pourrai m’y atteler dès ce week-end 😉

      1. Re et Bonsoir,
        Bon je n’y arrive pas du tout, j’ai même tout planté :'(.
        Vivement ce week-end voir ce que tu va nous sortir de jolie ^^
        Tu dis que cela semble possible, mais ma question portais uniquement sur les ports 80, est-ce que cela sera également valable pour des autres ports ? par exemple 14000 ?

        En attendant, bonne nuit et bon week-end

    2. Bonsoir,
      Les tests sont concluants, j’ai réussi à faire l’infrastructure comme demandée, à savoir une IP publique, deux DNS qui sont redirigés sur deux serveurs différents dans des LAN différents :-). Je suis en train de saisir l’article, sortie prévue demain !

  3. Heyy 🙂
    et bien merci pour la proposition, je vais tout de même essayer grâce à tes indications.
    Je débute avec pfSense, donc on va voir ce que cela donne.
    Merci encore à toi et bonne soirée Julien

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Fermer
Fermer