Académique Documents
Professionnel Documents
Culture Documents
SAR/CARS
Présentation de CARP
CARP veut dire “Common Address Redundancy Protocol”. L'objectif premier de ce protocole
est de permettre à un groupe d'hôtes sur un même segment réseau de partager une adresse IP.
CARP est une alternative sécurisée et libre aux protocoles Virtual Router Redundancy
Protocol (VRRP) et Hot Standby Router Protocol (HSRP).
Une utilisation commune de CARP est la création d'un groupe de pare-feux redondants.
L'adresse IP virtuelle attribuée au groupe de redondance est désignée comme l'adresse du
routeur par défaut sur les machines clientes. Dans le cas où le pare-feu maître rencontre une
panne ou est déconnecté du réseau, l'adresse IP virtuelle sera prise par un des pare-feux
esclaves et le service continuera à être rendu sans interruption.
Fonctionnement de CARP
L'hôte maître du groupe envoie des annonces régulières sur le réseau local afin que les hôtes
esclaves puissent savoir qu'il est toujours disponible. Si les hôtes esclaves ne reçoivent plus
d'annonce de la part du maître durant une période de temps configurable, alors l'un d'eux
devient le nouveau maître.
Il est possible de faire co-exister plusieurs groupes CARP sur un même segment réseau. Les
annonces de CARP contiennent un identifiant appelé “Virtual Host ID” qui permet à des
membres d'un même groupe d'identifier le groupe de redondance.
Afin d'empêcher un utilisateur malicieux sur le segment réseau d'usurper les annonces CARP,
chaque groupe peut être doté d'un mot de passe. Ainsi chaque paquet CARP envoyé au groupe
est protégé par SHA1 MAC.
Etant donné que CARP est un protocole à part entière, il doit être explicitement autorisé au
niveau des règles de filtrage : pass out on $carp_dev proto carp keep state
#sysctl -w net.inet.carp.allow=1
#ifconfig carp1 create
#ifconfig carp1 vhid 1 pass mekmitasdigoat carpdev em0 \
advskew 100 10.0.0.1 255.255.255.0
Fonctionnement de pfsync
Par défaut, pfsync(4) n'envoit pas et ne reçoit pas les mises à jour de la table d'état à travers le
réseau. Cependant, les mises à jour peuvent être toujours surveillées en utilisant tcpdump(8)
ou d'autres outils similaires en local sur la machine.
Lorsque pfsync(4) est configuré pour envoyer et recevoir des mises à jour à travers le réseau,
le comportement par défaut consiste à utiliser le multicast sur le réseau local. Toutes les mises
à jour sont envoyées sans authentification. Il faudrait donc utiliser une des deux méthodes
suivantes pour sécuriser les échanges :
1. Connectez les deux pare-feux qui devront échanger les mises à jour à l'aide d'un câble
croisé. Les interfaces physiques ainsi connectées seront utilisées comme syncdev (voir plus
bas).
2. Utilisez l'option syncpeer de la commande ifconfig(8) (voir plus bas) de telle façon à
utiliser des échanges unicast pour envoyer les mises à jour au pair, puis configurez ipsec(4)
entre les deux hôtes pour sécuriser le trafic pfsync(4).
Lorsque les mises à jour sont envoyées et reçues à travers le réseau, les paquets pfsync
doivent être autorisés par les règles de filtrage : pass on $sync_if proto pfsync
Les interfaces em1 des pare-feux sont connectées à l'aide d'un câble croisé. Les interfaces
em0 sont connectées au LAN et les interfaces em2 sont connectées à un réseau WAN ou à
Internet. Les adresses IP utilisées sont les suivantes :
! configuration de pfsync
# ifconfig em1 10.10.10.1 netmask 255.255.255.0
# ifconfig pfsync0 syncdev em1
# ifconfig pfsync0 up
! configuration de CARP côté LAN
# ifconfig carp1 create
# ifconfig carp1 vhid 1 carpdev em0 pass lanpasswd \
172.16.0.100 255.255.255.0
! configuration de pfsync
# ifconfig em1 10.10.10.2 netmask 255.255.255.0
# ifconfig pfsync0 syncdev em1
# ifconfig pfsync0 up
Problèmes opérationnels
Voici quelques problèmes opérationnels communément rencontrés avec CARP/pfsync.
- configuration de CARP
- pfsync au démarrage
Etant donné que carp(4) et pfsync(4) sont des interfaces réseau, elles peuvent être configurées
au démarrage en créant des fichiers hostname.if(5). Le script de démarrage netstart prendra
soin de la création et de la configuration des interfaces.