Cluster HA avec pfSense 2.X

Dans ce tuto on se met en place un cluster HA sur des routeurs pfSense à l’aide du CARP failover. Je suis sur pfSense 2.2.
Vous avez besoin de:

  • 2 machines pfSense identique
  • 3 cartes ethernet sur chaque machine

Dans ce tuto je travail sur des VMs. Mon WAN est simulé par une connexion bridge et le reste des carte virtuelles sont en mode réseau privé.

Les adresses utilisées sont les suivantes:

Firewall 1 (MASTER) Firewall 2 (SLAVE)
WAN IP: 10.30.20.253 WAN IP: 10.30.20.252
SYNC IP: 192.168.4.1 SYNC IP: 192.168.4.2
LAN IP: 172.16.255.253 LAN IP: 172.16.255.252

Les deux adresses suivante seront partagées entre chaque routeurs. Dans un cas réel, il faudrait donc 3 ip publique du coté WAN.

  • WAN virtual ip: 172.16.255.254
  • LAN virtual ip: 10.30.20.254

A partir de ce point je part du principe que vous avez deux pfSense installés et configurés avec leur adresse réseau respective. Voici le schéma du réseau que l’on va mettre en place:

 pfsense_cluster_ha

Petite note au passage si vous travaillez dans un environnement virtualisé. Il faut activer le mode de promiscuité suis les cartes réseau virtuelles. Chaque paquet réseau envoyé inclut l’adresse (adresse MAC) de la carte réseau destinataire. Quand une carte réseau voit passer un paquet, elle vérifie si elle est la destinataire du paquet ; si elle ne l’est pas, elle ne tient pas compte du paquet ; mais en mode promiscuous, elle traite le paquet dans tous les cas, permettant ainsi à l’ordinateur de pouvoir lire tous les paquets. Le système de HA étant basé sur une adresse MAC partagé entre les routeurs, il est indispensable d’activer ce mode.

Mise en place de la redondance de configuration

Configuration d’une interface dédié à la synchronisation

La première étape consiste à créer une interface dédié pour la communication entre les deux routeurs. Il est recommandé de faire cette interface pour des questions de sécurité mais aussi e performance, le lien étant très sollicité par le système de synchronisation.

Sur chaque routeur, créé donc une interface que l’on va nommer SYNC avec une adresse dans le même sous réseau. Dans mon shéma il sagit de l’interface 192.168.4.1 et 192.168.4.2 tous deux sous une masque CIDR /24. Ces manipulation s’effectue depuis « Interfaces> assign ».

Une fois créé, il faut ajouter une règle de par-feu afin d’autoriser tout le trafic sur ce lien. Pour cela, ce rendre dans le menu « Firewall > rules » sur l’onglet de l’interface SYNC. Ajoutez une règle qui laisse passer le trafic depuis le réseau SYNC vers n’importe quelle destination.

firewall_rule_sync_interface

Je conseille vivement de tester que le lien est fonctionnel à l’aide d’un ping depuis le menu « diagnostic« .

 Activation de la synchronisation de configuration sur le par-feu secondaire (SLAVE)

On active la synchronisation sur le routeur esclave

  • Dans le menu System > Hign Avail. Sync
  • On coche Synchronize States
  • On choisi la bonne interface (SYNC)
  • Dans « pfsync Synchronize Peer IP » on saisi l’adresse ip du routeur maître (192.168.4.1 dans l’exemple)
  • On clic sur Save

pfsense_ha_slave

 Activation de la synchronisation de configuration sur le par-feu principal (MASTER)

Il faut que les deux routeurs possède le même nom de compte admin, le même mot de passe et que l’interface d’administration soit accessible en HTTPS et non HTTP.

On active la synchronisation sur le routeur principale de la même façon.

  • Dans le menu System > Hign Avail. Sync
  • On coche Synchronize States
  • On choisi la bonne interface (SYNC)
  • Dans « Synchronize Config to IP » on saisi l’adresse ip du routeur secondaire(192.168.4.2 dans l’exemple)
  • On entre le compte et le mot de passe du serveur secondaire
  • On coche les configurations que l’on souhaite synchroniser (régles de par-feu, NAT, les routes, etc…)
  • On clic sur Save

pfsense_ha_master

Les modification sont désormais déployées depuis le MASTER vers le SLAVE à chaque enregistrement de nouvelle configuration sur ce premier.

Le mode HA

Réseau LAN

On passe maintenant à la création d’une adresse IP virtuelle pour chaque réseau. Cette manipulation est à effectuer uniquement sur le routeur maitre, la configuration étant copiée sur le routeur secondaire. On commence par le LAN. On se rend dans le menu « FireWall > Virtual IP » et on saisi la configuration suivante:

  • Type: CARP
  • Interface : LAN
  • IP Address : 172.16.255.254
  • Choisir un mot de passe dans la partie Virtual IP Password
  • VHID Group: 1
  • Advertising : 1

pfsense_vIP_lan

Réseau WAN

Pas beaucoup de changement dans la configuration si ce n’est que cette fois l’interface concernée est l’interface WAN et le numéro de groupe VHID est différent de celui du LAN.

pfsense_vIP_wan

Test du failover

On commence par vérifier que les deux routeurs ont bien échangé sur le statut. On se rend dans le menu « Status > CARP (failover) » sur chaque pfSense. L’un doit afficher le statut MASTER (c’est lui qui possède l’IP virtuelle à ce moment) et l’autre affiche BACKUP.

pf_master_status

pf_slave_status

 

Pour tester, effectuez simplement un ping continu vers l’adresse du cluster puis déconnectez le cable du routeur qui est en statut MASTER. Vous devriez voir les paquets perdu pendant quelques secondes le temps que le second firewall prenne la main.

 

2 thoughts on “Cluster HA avec pfSense 2.X”

  1. Doo dit :

    Hey,

    Curiosité : pourquoi ne pas avoir choisi une stack debian/haproxy/keepalived ?

    1. Sispheor dit :

      J’ai besoin d’autres fonctionnalités que pfsense me propose pour le projet derrière ce tuto. Plus encore, l’interface web apporte un + a l’ensemble de la solution.

Laisser un commentaire

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