[pfSense 2.4.2] Faire un NAT/PAT de deux serveurs sur un même DNS

pfSense vous permet de faire vraiment beaucoup de choses, aussi bien en routage qu’en « firewalling ». Cet article permet d’avoir un pfSense ayant la capacité de rediriger l’utilisateurs vers le serveur demandé en fonction de sa « demande DNS ».

C’est toujours un peu compliqué de comprendre une architecture informatique via des mots. Plutôt, voyez le schéma ci-dessous.

SCHEMA

L’idée, c’est d’accéder à un serveur web ou l’autre du LAN depuis le WAN. Le choix du serveur se fait via l’URL qui a été saisie au préalable dans le navigateur de l’utilisateur. pfSense devra être en mesure de rediriger lui-même ces requêtes sans passer par un reverse proxy.
De plus, étant donné qu’il faut cloisonner les serveurs, les machines ne seront pas dans le même LAN.

Mon réseau est composé de la sorte :

  • Un sous-réseau en 192.168.1.0/24 pour le LAN
    • patte LAN pfSense = 192.168.1.100
    • 1 serveur web en 192.168.1.101
    • 1 serveur web en 192.168.1.102
  • Un sous-réseau en 192.168.2.0/24 pour le WAN – simulation de l’accès à l’internet
    • patte WAN pfSense = 192.168.2.1

J’ai au préalable créé deux serveurs web (Debian 9.4, nginx 1.13, pas de PHP ni d’SQL) très simplistes pour le besoin de cet article. Les VM n’ont aucune configuration spécifique, hormis (bien entendu) un adressage IP fixe qui se trouve dans le LAN de pfSense.
pfSense quant à lui a été configuré pour être passerelle des VM dans son LAN. Il a aussi été modifié pour autoriser les connexions distantes vers les serveurs LAN et est aussi capable de rediriger les requêtes DNS vers le bon serveur web.


Configuration du NAT de pfSense

Dans un premier temps, j’ai configuré deux « aliases », pour créer un semi « mode objet » et ainsi ne pas avoir a re-saisir sans cesse les mêmes données. Dans l’onglet « Firewall« , cliquez sur « Aliases« . A l’intérieur, j’ai créé deux entrées correspondantes à mes deux serveurs web.

Dans la partie « Firewall / NAT / Port Forward« , deux règles ont été créé :

  • La première ligne permet l’accès depuis n’importe quelle source (internet en l’occurence) vers la patte WAN du pfSense sur le port 80, qui « nattera » le premier serveur web et son port 80.
  • La seconde ligne effectue le même principe que la première, à la différence qu’il s’agit cette fois du second serveur web, toujours sur le port 80.

A cet instant, il ne vous sera toujours pas possible d’accéder à vos serveurs depuis l’extérieur – la configuration n’étant pas encore terminée.
Toujours dans la partie « Firewall / NAT« , il faut dès à présent se diriger dans la partie « Outbound » – c’est cette configuration qui va nous permettre d’exposer le LAN vers l’internet. Volontairement, j’ai mis tout mon sous-réseau 192.168.1.0/24, considérant qu’il s’agit de ma DMZ où seuls des serveurs devant être accessibles depuis le NET y seront.

Il faut configurer manuellement l’Outbound, cliquez au préalable sur la case « Manual Outbound« , puis sauvegardez les changements. Par la suite, vous pouvez créez une règle Outbound comme suit :

La réflexion est « à l’envers », c’est-à-dire qu’il faut penser LAN vers WAN. Ainsi, la source est mon sous-réseau local, qui sera « natté » vers mon adresse WAN et donc ma patte WAN de pfSense. Il est possible de restreindre cette ligne de configuration en y mettant uniquement les adresses IP des serveurs devant être nattés/accessibles depuis le web.

Le NAT est cette fois prêt, il faut continuer la configuration et passer au pare-feu puis au DNS…


Configuration du pare-feu de pfSense

3 règles ont été créé dans le pare-feu, côté WAN – une pour le DNS, deux pour les serveurs web.
Ci-dessous la configuration :

Règles assez explicites, depuis le WAN sont autorisés l’accès aux serveurs web sur le port 80 en TCP IPv4, depuis n’importe quelle source.
La règle DNS est elle aussi nécessaire pour permettre la redirection sur ledit serveur en fonction de l’URL saisie.

Je n’ai pas créé de règle spécifique dans mon LAN.
C’est OK pour la partie Firewall, attaquons ensuite le DNS, la partie finale !


Configuration DNS de pfSense

Par défaut, pfSense est configuré avec le paquet « DNS Resolver« , or il ne nous sera pas exploitable en tant que tel. Il faut passer par le paquet « DNS Forwarder« .
Dirigez-vous dans un premier temps dans « Services / DNS Resolver« , puis décochez la case « Enable« . Vous ne pouvez pas avoir deux paquets de DNS en même temps. Ensuite, dirigez-vous dans « Services / DNS Forwarder« . Cliquez sur la case « Enable » pour utiliser ce paquet.

Plus bas dans la configuration, il faut ajouter deux enregistrements correspondant aux serveurs web déclarés plus tôt. J’ai donc choisi « nginx1 » et « nginx2 » en fonction de mes serveurs web, avec leurs IP respectives.

N’oubliez pas d’enregistrer les changements en cliquant sur le bouton « Save« . A présent, vous devriez être en mesure de faire les tests ! Prenez un PC « connecté » sur la patte WAN de pfSense…


Tests finaux

Ouvrez un navigateur deepuis votre PC sur le WAN, puis saisissez une première URL d’un de vos serveurs web

Si la configuration est exacte, vous pouvez accéder aux serveurs web depuis l’interface WAN de votre pfSense. Attention, souvenez-vous qu’il s’agit d’un « Outbound » du LAN, qui est en NAT vers le WAN : ce qui implique que tout le LAN (en suivant strictement l’article) est « exposé » sur le web. A vous de gérer correctement les règles de pare-feu et de NAT pour limiter les accès non souhaités.

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.

2 Comments

  1. Hey Julien,

    Tout d’abord, merci d’avoir pris le temps de répondre et rédiger un article concernant ma demande.
    J’ai lu l’article, cela à l’air simple à mettre en place. Je fais les tests ce soir et je te tiens au courant.
    Bonne journée ! =)

  2. Bonjour.
    svp je la méthode idéale pour accéder a mes cameras de surveillance derrière pfsense . merci

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. Apprenez comment les données de vos commentaires sont utilisées.

Close
Close