18
0
Fork 0

Ajout d'un cas pratique de bascule

This commit is contained in:
Tristan 2019-03-14 15:06:45 +01:00
parent 68cf2bfac8
commit f5cdd1f2f7
1 changed files with 105 additions and 0 deletions

View File

@ -115,6 +115,111 @@ Pour revenir à l'état initial
Si lors d'un incident on a coupé une interface carp en faisant `ifconfig carpX down`, pour la remettre en place, on vérifie que le `advskew` est bien supérieur à celui où le master est actuellement pour ne pas basculer directement en tant que MASTER. Si ce n'est pas le cas, on peut corriger avec `ifconfig carpX advskew xxx`. Lorsque c'est OK, il reste juste à faire `ifconfig carpX up`.
### Cas pratique de bascule
Dans cet exemple, nous avons deux pare-feux configurés avec CARP.
Sur fw00 :
~~~
$ ifconfig carp
carp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:00:42:00:00:01
index 12 priority 15 llprio 3
carp: MASTER carpdev em0 vhid 1 advbase 1 advskew 1
groups: carp
status: master
inet 192.0.2.30 netmask 0xffffffe0 broadcast 192.0.2.31
carp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:00:42:00:00:02
index 13 priority 15 llprio 3
carp: MASTER carpdev em1 vhid 2 advbase 1 advskew 1
groups: carp
status: master
inet 192.0.2.60 netmask 0xffffffe0 broadcast 192.0.2.61
~~~
Sur fw01 :
~~~
$ ifconfig carp
carp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:00:42:00:00:03
description: CARP DMZ
index 16 priority 15 llprio 3
carp: BACKUP carpdev em0 vhid 1 advbase 1 advskew 42
groups: carp
status: backup
inet 192.0.2.30 netmask 0xffffffe0 broadcast 192.0.2.31
carp1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr 00:00:42:00:00:04
description: CARP LAN
index 17 priority 15 llprio 3
carp: BACKUP carpdev em1 vhid 2 advbase 1 advskew 42
groups: carp
status: backup
inet 192.0.2.60 netmask 0xffffffe0 broadcast 192.0.2.61
~~~
Nous souhaiterons mettre à jour fw00 et donc passer fw01 en master.
Sur fw00 :
~~~
ifconfig -g carp carpdemote 50
mv /etc/hostname.carp* /root/
~~~
Le master va alors immédiatement passer en backup. Le déplacement des fichiers de configuration CARP évite que les interfaces ne remontent en cas de redémarrage. On peut désormais lancer la mise à jour et effectuer notre redémarrage.
Une fois fw00 prêt à être réintégré en production, voici un moyen de garantir une re-bascule sans coupure en recréant nos interfaces CARP avec ifconfig sur fw00. Sur ce dernier nous créons les interfaces à la main en se basant sur le contenu des fichiers hostname.carpX (et en veillant à modifier la valeur du advskew pour une valeur plus élevée que celle actuellement configurée sur fw01).
Sur fw00 :
~~~
ifconfig carp0 vhid 1 pass puffy carpdev em0 advskew 142 advbase 1 192.0.2.30 netmask 255.255.255.224 state backup
ifconfig carp1 vhid 2 pass puffy carpdev em1 advskew 142 advbase 1 192.0.2.60 netmask 255.255.255.224 state backup
~~~
Nous avons désormais nos interfaces CARP en BACKUP sur fw00. Le failover est donc d'ores et déjà fonctionnel.
Il s'agit maintenant de remettre en place nos fichiers de configuration CARP.
Sur fw00 :
~~~
mv /root/hostname.carp* /etc/
~~~
On bascule ensuite les interfaces CARP depuis fw01 pour les repasser en BACKUP sur ce dernier et en MASTER sur fw00.
Sur fw01 :
~~~
ifconfig -g carp carpdemote 50
~~~
Le pare-feu fw00 doit être repassé en MASTER maintenant.
On remet les valeurs de advskew à zero sur notre MASTER.
Sur fw00 :
~~~
ifconfig carp0 advskew 1
ifconfig carp1 advskew 1
~~~
Enfin nous reconfigurons le carpdemote à 0 sur fw01.
Sur fw01 :
~~~
ifconfig -g carp -carpdemote 50
~~~
Et c'est terminé !
### Optimisation CARP au (re)boot d'un BACKUP
Lorsque que l'on a un firewall en BACKUP, il est important de pouvoir le redémarrer sans que cela n'impacte le MASTER. Pour cela, il faut bien comprendre le comportement de CARP au démarrage : pendant un certain temps, il va toujours rester en BACKUP pour voir si il ne reçoit pas d'annonce d'un MASTER. Ce comportement est aussi présent lors de la (re)configuration même si le CARP était MASTER initialement. S'il n'a rien reçu, il passe en MASTER. Ce temps est d'attente correspond à la valeur du paramètre _advbase_ (par défaut à 1 seconde).