Cumuler deux connexions internet avec pfSense

Maintenant que nous avons deux accès à Internet, autant les utiliser conjointement. La fibre déclassant complètement l'ADSL, la bascule ne se fera qu’en cas de panne.

Maintenant que nous avons deux connexions vers Internet (la fibre avec free et l’ADSL avec red), il est temps de configurer notre pare-feu pfSense pour les prendre en compte toutes les deux.

Baie et accès internet © arsouyes
Baie et accès internet © arsouyes

Vu la différence de débit (1Gbps vs 5Mbps), l’ADSL ne nous servira qu’en cas de panne. Répartir la charge ne ferait que frustrer les flux qui auraient la malchance de sortir du mauvais côté. Alors plutôt que risquer un incident diplomatique familial, autant mettre tout le monde sur la fibre et laisser l’ADSL, au cas où.

Pour les curieux, voici donc comment nous nous y sommes pris.

Après avoir configuré les interfaces vers les boxes, on va surveiller la connexion (avec ping vers des adresses publiques) puis configurer un groupe de passerelle et l’utiliser par défaut. Et pour terminer, configurer le DNS (résoudre les requêtes plutôt que transmettre).

Configuration des interfaces

On pourrait configurer toutes les interfaces directement lors de l’installation du système. On est d’ailleurs obligés d‘en configurer certaines (une WAN et une LAN) pour pouvoir se connecter et utiliser le pare-feu. Mais une fois le minimum fait en ligne de commande, je préfère souvent passer par l’interface graphique. Plus complète et intuitive à utiliser.

La première étape est donc de configurer ses interfaces pour que pfSense sache qui est qui. Pour ça, on va dans le menu « Interfaces / Assignements » et on ajoute toutes les cartes réseaux dont on a besoin (on les renommera plus tard).

Liste des interfaces
Liste des interfaces

WAN Free

On va commencer par l’interface vers la freebox. Pour ça, on clique simplement sur l’interface correspondante dans l’écran précédent.

Les possibilités de configuration sont nombreuses, mais pour notre cas, on n’a pas grand chose à changer, juste donner un nom (champ description) et s’assurer qu’elle est en DHCP.

Configuration d'une interface
Configuration d'une interface

Pour faciliter la configuration de la DMZ côté freebox, il peut être intéressant de configurer un nom d’hôte (champ hostname). Ce nom sera utilisé par pfSense lors de sa requête DHCP, la freebox s’en servant ensuite dans son interface pour nous montrer les périphériques connectés.

Configuration du nom d'hôte
Configuration du nom d'hôte

Et enfin, puisque notre pare feu est connecté à des réseaux privés (pour rappel, on utilise le mode routeur et non le mode bridge), il faut aussi débloquer les réseaux privés (décocher la case « Block private networks and loopback addresses »).

Accepter les paquets avec adresses privées
Accepter les paquets avec adresses privées

WAN Red

De même, la configuration de l'interface côté redbox est simplissime, il faut juste s’assurer qu’elle est en DHCP. N'ayant pas configuré l'IPv6, le champ correspondant est laissé vide.

Vérification de l'interface
Vérification de l'interface

Je ne répète pas les captures, mais n’oubliez pas d’ajouter un nom d’hôte (hostname) et d’autoriser les réseaux privés (case « block private network »).

Détection des pannes

Pour permettre à pfSense de basculer d’une connexion à l’autre automatiquement, il faut lui dire comment surveiller les passerelles. Pour cela, il faut aller dans le menu « System / Routing ». Vous y retrouverez les passerelles correspondantes à vos interfaces en DHCP.

Liste des passerelles
Liste des passerelles

La surveillance d’une passerelle se fait via sa configuration, en cliquant sur l’icone de crayon () en vis à vis. Dans l’écran suivant, nous pouvons alors modifier les champs suivants :

Configuration d'une passerelle
Configuration d'une passerelle

Le choix de l’adresse IP à joindre n’est pas anodin. Si vous prenez l’adresse de votre passerelle (votre box ou le routeur de l’opérateur), vous ne pourrez pas détecter les défaillances en amont. Dans notre cas, nous avons choisi les adresses des serveurs de Google, 8.8.8.8 pour le côté freebox et 8.8.4.4 pour le côté redbox.

Vu à quel point ces deux adresses sont utilisées, le jour où un petit malin leur coupera le trafic ICMP, c’est tout internet qui s’effondrera, les admins réseaux du monde entiers étant persuadés que leurs passerelles sont défaillantes…

Ensuite, pour voir l’état des passerelles, il faudra passer par le menu « Status / Gateways ». Dans le tableau suivant, pfSense nous montre les résultats des requêtes ICMP et l’état correspondant.

État des passerelles
État des passerelles

Routage

Maintenant que les interfaces sont configurées et surveillée, on peut passer au routage proprement dit, le choix de la passerelle en charge du trafic sortant.

Groupe de passerelles

On commence par grouper les passerelles. Pour cela, on va dans le menu « System / Routing / Gateway Groups » et on ajoute un groupe.

Configuration d'un groupe de passerelles
Configuration d'un groupe de passerelles

C’est la notion de Tier (« étage en français ») qui permet cette notion de l’utilisation « au cas où ». En effet, pfSense réparti la charge entre toutes les passerelles d’un même étage, n’utilisant un étage que si les étages précédent (de valeur inférieure) ont un problème.

De son côté, la détection du problème correspond au réglage Trigger Level précédent. Dans notre cas, Member Down considère la passerelle comme en échec si elle a 100% de perte de paquets lors du monitoring.

On comprend alors l’intérêt de ces trois réglages :

Passerelle par défaut

Maintenant que le groupe est créé et configuré, on va l’utiliser en tant que passerelle par défaut. Pour ça, on revient dans l‘écran « System / Routing » et on s’attache à sa deuxième partie, la configuration des passerelles par défaut.

C’est dans ce genre d’interface où l’intérêt d’utiliser des noms et des descriptions prend tout son sens.

Dans notre cas, nous configurons la passerelle IPv4 pour utiliser notre groupe. Ce qui met effectivement en place la bascule automatique en cas de panne.

Choix de la passerelle par défaut
Choix de la passerelle par défaut

Résolution DNS

Tous ces réglages sont suffisant pour traiter le routage mais il reste encore un petit détail à régler.

Par défaut, pfSense relaie les requêtes DNS vers les serveurs DNS de ses interfaces réseaux (c'est à dire, les boxes), et le problème, c’est qu’il le fait sans tenir compte de l’état des connexions correspondantes.

Dans notre cas, si quand la fibre tombe, pfSense continuera d'envoyer des requêtes DNS vers cette connexion. La box va bien entendu recevoir la requête mais ne pourra pas la résoudre puisque sa connexion Internet n’est pas disponible. La requêtes va ainsi expirer et pfSense pourra alors la renvoiyer côté ADSL. Croyez moi, le délai induit est visible (et franchement frustrant).

Les détails sont dans un article dédié à la configuration DNS mais si vous êtes pressé, il suffit d'aller dans le menu « Services / DNS Resolver » et d'activer le serveur DNS (cocher la case Enable) puis de forcer la résolution plutôt que la retransmission (décocher la case DNS Query Forwarding), sauvegarder et appliquer.

Activer le DNS
Activer le DNS
Forcer la résolution
Forcer la résolution

Et après ?

Pour tester la connexion, on pourrait se satisfaire de couper la fibre manuellement (au sens figuré bien sûr, on est pas équipé pour réparer ensuite), puis surveiller l’état des passerelles et enfin contrôler que la connexion internet fonctionne toujours pour les postes utilisateurs.

C’est d’ailleurs ce que je vous conseille de faire régulièrement : tester vos mécanismes de secours. Ça vous permettra de vous entraîner et de corriger les éventuels problèmes qui peuvent survenir avant une vraie panne.

Les choses étant bien faites, le réseau free a décidé d’avoir un incident pendant la rédaction de cet article…

Il est 16h, on se prépare à lancer une LAN party en famille et, après d’âpres négociations sur le choix du titre, le jeu vidéo décide de se mettre à jour et nous annonce un délai de plusieurs jours… souvenir de l’époque ou nous n’avions que l’ADSL.

Après avoir installé une cellule d’urgence médico-psychologique prioritaire, on peut diagnostiquer le problème. Petit tour sur l’interface de notre pare feu et on confirme le problème : la connexion fibre est tombée.

Perte d'une connexion
Perte d'une connexion

Mais d’où vient le problème ? Sur son interface de configuration, la freebox n’a rien remarqué mais après un redémarrage, elle reste bloquée à l’étape 6 (l’authentification aux serveurs de free), ça sent le problème du FAI. Problème confirmé en regardant l’état du réseau free : les répartiteurs autour de notre village sont tous tombés.

Incidents sur le réseau free est résolu
Incidents sur le réseau free est résolu

En fait, la panne avait débuté 5 heures plus tôt mais nous n’avions rien vu car la connexion de secours avait silencieusement pris le relai. La panne a été résolue vers 19h30 mais la LAN party était finie.

Comme on peut s’en rendre compte rapidement, basculer automatiquement sur une connexion de secours, c’est quand même bien confortable voir rassurant. Mais pour vous, très chers lecteurs, ces réglages n’ont pas permis de maintenir l’accès au site merveilleux des arsouyes.