15/11/2024

ZeroShell

NetBalancer avec Zeroshell

I. Présentation

Le système d'exploitation propose dans ces services natifs la possibilité de faire du NetBalancer en mode "Load Balancing" ou en mode "Fail over". Dans ce tutoriel, nous allons étudier le fonctionnement et la mise en place de ces deux systèmes. Le NetBalancer est ce qui va nous permettre d'utiliser deux ou plusieurs passerelles vers un réseau (le plus souvent Internet, mais pas seulement). On pourra ainsi garantir une sécurité et une haute disponibilité dans notre infrastructure. Le but sera soit de partager la charge, soit de garantir une tolérance de panne.

Attention : Cette documentation a été réalisée avec la version RC2 de Zeroshell, considérez ce détail lors de la lecture du tutoriel et de son application sur des versions plus récentes de Zeroshell

II. Les Pré-requis

Dans un premier temps, il est important d'avoir un Zeroshell avec deux interfaces et au moins deux passerelles possibles. Nous prendrons ici l'exemple d'une redondance d’accès à Internet. Il faudrait donc avoir deux routeurs (deux abonnements) Internet avec chacun une IP publique et une connectivité à Internet.

Schématiquement, notre réseau devra ressembler à cela pour la mise en place d'un Netbalancer :

NetBalancer01

On voit donc que notre routeur Zeroshell fait la passerelle vers un autre réseau (ici un réseau relié à Internet) et que les utilisateurs passent par une seule IP (la deuxième interface Zeroshell cotée LAN utilisateurs) pour sortir sur ce réseau.

Dans un deuxième temps, on voit que Zeroshell à le choix entre deux chemins aux métriques égaux pour sortir du réseau (sur Internet). Dans un contexte plus simple. Zeroshell aura une gateway par défaut (qui dirigera vers 0.0.0.0/0) vers laquelle il sortira à chaque fois. Nous voulons donc utiliser ici les deux chemins pour sortir sur Internet au travers une répartition des charges (Load Balancing) ou une tolérance et une reprise de panne (Fail over).

III. Les deux modes de fonctionnement

Le service Net Balancer de Zeroshell propose deux modes de fonctionnement. Soit en "Fail over", soit en "Load Balancing and Fail over". Nous allons maintenant étudier ces deux modes de fonctionnement :

  • Le Fail Over 

Le mode "Fail over" ou "tolérance de panne" permet de mettre en place une reprise d'un chemin menant à un réseau à partir du moment où le chemin principal "tombe" ou n'est plus opérationnel. Ce changement de chemin doit bien sûr être effectué le plus rapidement possible et doit être invisible aux yeux des utilisateurs. On peut schématiser le Fail over comme ceci :

NetBalancer02

On voit ici que le Zeroshell qui fait la passerelle entre le LAN utilisateur et le LAN routeur relié à Internet utilise seulement une route sur les deux qui sont à sa disposition. On défini ici une "Defaut Gateway" ou "passerelle par défaut" par laquelle Zeroshell fera passer le trafic vers Internet. Si cette passerelle par défaut tombe, la tolérance de panne mise en place redirigera le trafic vers la route "de secours" en place qui était en attente jusque-là.

  • Le Load Balancing 

Le mode "Load Balancing" ou "Répartition de charge" va permettre d'utiliser les deux connexions de manière simultanée. On va alors répartir la charge réseau sur les deux lignes en même temps afin d'alléger et de rendre plus rapide le traitement et l'échange des requêtes sur le réseau. Nous pouvons imaginer ce schéma pour mieux comprendre le système de répartition de charge :

NetBalancer03

On voit donc qu'à ses sorties sur le réseau LAN routeur, Zeroshell utilise les deux lignes (les deux chemins) possibles pour sortir sur Internet. Le traitement est donc plus rapide, car la charge est répartie sur plusieurs éléments actifs au lieu d'être traités dans une seul fil d'attente. Aux yeux des utilisateurs en revanche, l'opération est invisible, car ils ne voient toujours comme seule passerelle vers Internet l'IP "LAN utilisateurs" du Zeroshell (192.168.10.252). Le souci étant que si une des deux lignes tombe, la répartition des charges serait compromise, car un paquet sur deux (sur une répartition des charges simple) serait perdu. C'est pour cette raison que Zeroshell mettra toujours en place un Load Balacing couplé à un Fail Over .

IV. La mise en place

Dans le cadre de notre tutoriel, nous allons faire en test "en interne". Nous aurons deux routeurs Linux avec deux interfaces, une "eth0" qui ira vers un "WAN" en 192.168.1.0/24 et une "eth1" qui ira vers un "LAN routeur" en 192.168.10.0/24. Notre Zeroshell aura lui aussi deux interfaces, une "eth0" vers notre "LAN routeur" et une autre "eth1" vers un "LAN users" en 192.168.20.0/24. Enfin, une simple box pourra faire office "d'Internet". Il sera plus simple de comprendre cela avec ce schéma :

NetBalancer04

Après voir mit en place notre architecture, nous pouvons commencer à configurer notre NetBalancer Zeroshell. Nous nous rendons pour cela dans l'interface graphique de celui-ci puis dans le menu "Net Balancer". Pour rappel, les "IP publiques" de nos routeurs dans le cadre de l'exemple sont 192.168.1.100 et 192.168.1.101 et leur IP LAN sont 192.168.10.254 et 192.168.10.253.

Nous arrivons donc sur cette fenêtre :NetBalancer05

Ceci est la fenêtre principale de configuration du NetBalancer, pour une configuration basique et simple, nous n'avons besoin de manipuler uniquement dans cette fenêtre.

A. Failover Monitor

Trois panneaux sont donc à configurer, nous commencerons par le panneau en haut à droite "Failover Monitor" :

NetBalancer06

Ici, nous allons configurer les paramètres principaux de fonctionnement de notre NetBalancer, il convient d'abord d'expliquer ces paramètres pour pouvoir les gérer correctement :

  • Vérification de l'état de santé par ICMP "ICMP failover checking" : Permet au Zeroshell de savoir si le ou les chemins que nous lui donnons pour sortir sur d'autres réseaux sont opérationnel "vivant" ("Active") ou non ("Fault"). Zeroshell testera grâce à des requêtes ICMP (des ping) si les interfaces des routeurs qui sont dans sa configuration sont joignables et déterminera le meilleur chemin pour sortir en fonction des réponses des hôtes.
  • Le nombre d'échecs avant de définir l'interface comme injoignable "Number of probes before making DOWN" : C'est le nombre de tentatives infructueuses et consécutives à partir desquels le Zeroshell décidera de mettre l'interface concernée en "injoignable" ("Fault"). Par défaut la configuration est de 3 échecs.
  • Le nombre d'échecs avant de définir l'interface comme injoignable "Number of probes before making UP" : C'est le nombre de tentatives consécutives réussies à partir desquels Zeroshell pourra considérer une interface qui était alors injoignable comme de nouveau joignable. Le paramétrage par défaut est de 5 ping réussis. Cela veut dire qu'une interface qui était jusque-là "DOWN" et qui répond correctement à 5 ping consécutifs se verra passer de nouveau "UP".
  • La durée de vie maximale d'une réponse en seconde "Reply timeout (seconds)" : C'est le nombre de secondes maximales d'une réponse. Un ping devra mettre moins de 4 secondes (selon la configuration par défaut) à revenir sinon il sera considéré comme un échec.
  • Durée entre les cycles "Pause before strating a new cycle" : C'est le délai d'attente avant de retenter un cycle de détection. Après chaque ping il y a une pause qui est de la valeur que nous mettons dans ce paramètre.
  • Redémarrage immédiat des PPPoE et mobile 3G "Immediately restart PPPoE and 3G Mobile" : Lance une tentative de redémarrage sur une connexion qui est injoignable "Fault".

Il faut savoir que la gestion de de ces paramètres permet de rendre plus ou moins rapide et plus ou moins précise la détection de l'état de santé. Pour le tutoriel, nous allons laisser ces paramètres par défaut, mais ils peuvent varier selon les besoins et l'architecture du réseau.

B. Gateway List

Nous allons maintenant configurer le panneau de gauche ou nous allons entrer nos différentes passerelles. ici les deux passerelles que nous avons pour aller sur des réseaux extérieurs sont "192.168.10.100" et "192.168.10.101". Nous allons donc cliquer sur "Add" pour les ajouter :

NetBalancer07

Nous définissons ici plusieurs paramètres :

  • Status : Le statut de l'interface, si elle sera active dés sa création ou non.
  • Weight : C'est le poids que l'interface aura au niveau de la définition des priorités dans l'élection fail-over. Nous y reviendrons, mais il faut savoir que l'interface avec le plus de poids sera la plus importante.
  • IP Address : C'est l'IP LAN de notre routeur. Il faut ici mettre l'IP qui est sur le même réseau que notre interface Zeroshell.
  • Network Interface : C'est l'interface de notre Zeroshell dans le cas ou les connexions à monitorer et à redonder sont directement des interfaces du Zeroshell et non des chemins vers d'autres routeurs.
  • Timeout coefficient : définie la vitesse de réponse maximale acceptée

Après avoir entré nos deux routeurs (en mettant un poids différent sur les deux) et avoir coché leurs cases "UP", nous pourrons voir cela dans note panneau de configuration:

NetBalancer08

Note : La "DEFAUT GATEWAY" qui est définie dans "Setup" > "network" fait partie de votre jeu de routeur. La configuration de cette passerelle se fait en la cochant puis en cliquant sur "Change" pour la configurer correctement.

C. Failover IP Addresses

Nous allons maintenant passer à la configuration de la dernière fenêtre "Failover IP Addresses" . Dans cette fenêtre, nous allons entrer les IP "publiques" de nos routeurs, c'est-à-dire les IP qui sont à l’extérieur de notre réseau. En suivant le schéma de ce tutoriel, il s'agit donc des IP "192.168.1.100" et "192.168.1.101". L’intérêt d'entrer les IP publics est que si notre routeur reste joignable depuis notre réseau LAN (depuis l'intérieur), cela ne signifie pas que son internet allant vers extérieur est toujours opérationnelle. Il faut donc tester également l'interface WAN de notre routeur pour vérifie qu'il faut toujours sont travail :

NetBalancer09

Il faut entrer les interfaces dans leurs ordres de priorité (cf le poids que vous avez mis à vos routeurs). Nous pourrons alors passer à l'activation de notre NetBalancer après avoir vérifié tous nos paramètres. Il faut pour cela cocher la case "Status", sélectionner le mode "Failover" ou "Load Balancing and Failover" puis cliquer sur "Save".

V. Test de l'architecture

  • Failover :

Si vous avez choisi "Fail-over", le panneau des passerelles devrait ressembler à cela :

NetBalancer14

Il faut ici s’intéresser aux "Status". Le routeur qui sera actif et qui reliera les requêtes sera en "Active" et celui qui sera en attente de reprise en cas de problèmes avec le principale sera en "Spare".

  • Load Balancing :

Si vous avez choisi "Load Balancing and Failover". Les deux routeurs seront en actifs et chacun pourra se mettre à fonctionner tout seul si l'autre à un problème :

NetBalancer11

Le poids des passerelles n'a ici plus d’intérêt, car les deux traitent de façon égale les requêtes. Pour forcer le test de l'état de santé des routeurs, vous pouvez cliquer sur "Test" dans le panneau "Failover IP Addresses". Nous allons maintenant retirer une interface ou la désactiver (décocher la case "UP") du côté de nos routeurs pour voir comment réagit notre Zeroshell :

NetBalancer12

Dans les deux modes de fonctionnement, le routeur passera en "Fault" et le Zeroshell réagira en conséquence, c'est-à-dire qu'il orientera tout le trafic sur l'autre routeur si ce n'était pas déjà le cas. On remarque aussi que l’"ACTIVE" est passée en orange ce qui veut dire que le service est toujours opérationnel, mais qu'il y a un problème. Nous pouvons également aller voir dans les logs ce qu'il se passe en cliquant sur "show logs" :

NetBalancer13

On voit qu’après avoir défini la passerelle "DEFAUT GATEWAY" en "FAULT", il change la route par défaut pour l'orienter vers notre seconde passerelle.

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail 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.