relecture

This commit is contained in:
gcolpart 2017-05-05 12:09:19 +02:00
parent 3a3fecabbb
commit e04bbf88e7

View file

@ -1,12 +1,23 @@
**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
---
categories: network
title: Howto VRRP
...
# uvrrpd
Le protocole [VRRP](https://www.ietf.org/rfc/rfc3768.txt) permet à plusieurs équipements, sur un même segment réseau, de partager une même adresse IP en gérant des états *master*/*slave*. Lobjectif principal est de permettre une bascule réseau sur un équipement secondaire en cas dincident. Sous OpenBSD, on utilise un dérivé de ce protocole : [CARP](HowtoOpenBSD/CARP). Sous Linux, il existe plusieurs implémentations d'un démon _vrrpd_.
Utiliser le demon vrrp [uvrrpd](https://forge.evolix.org/projects/uvrrpd)
## Installation
# Paquet debian wheezy vrrpd
Le paquet officiel [vrrpd](https://packages.debian.org/jessie/vrrpd) officiel pose différents soucis, nous utilisons à la place un [paquet avec plusieurs patchs](#XXX) disponible sur le [repository Evolix](http://pub.evolix.net/jessie/) :
Utiliser le paquet evolix vrrpd wheezy avec différents patches ainsi qu'un script permettant d'utiliser les *macvlan* :
~~~
# apt install vrrpd=1.0-2.evolix
~~~
Nous avons entrepris la ré-écriture d'un démon _vrrpd_ : [uvrrpd](https://forge.evolix.org/projects/uvrrpd) mais nous ne l'utilisons pas encore en production.
### Patchs sur paquet patchés
Notre paquet **vrrpd** intègre différents patches, notamment un un script permettant d'utiliser les *macvlan* :
~~~
- debian/patches/010-vrrpd-1.0_to_1.0-1exp1
@ -27,48 +38,53 @@ Utiliser le paquet evolix vrrpd wheezy avec différents patches ainsi qu'un scri
- debian/README.macvlan
~~~
L'utilisation des macvlans permet l'utilisation des adresses mac virtuelles VRRP.
L'utilisation des *macvlans* permet d'avoir des adresses MAC spécifiques à VRRP. Pour cela, il faut :
Pour cela :
* utiliser le script `/etc/vrrpd/vrrp_switch` (installé par défaut)
* utiliser l'option `-x` pour interdire à vrrpd de manipuler les interfaces en déléguant cette opération au script. Dans ce mode, vrrpd reçoit et emet des paquets VRRP et appelle /etc/vrrpd/vrrp_switch lors des changements d'états master/slave
* ne pas utiliser l'option `-n`
* utiliser le script vrrp_switch_macvlan (/etc/vrrpd/vrrp_switch installé par défaut)
* utiliser l'option -x pour interdire à vrrpd de manipuler les interfaces en déléguant cette opération au script. Dans ce mode, vrrpd reçoit et emet des paquets VRRP et appelle /etc/vrrpd/vrrp_switch lors des changements d'états master/slave
* ne pas utiliser l'option -n
## Utilisation
## Exemple
~~~
/usr/sbin/vrrpd -i eth0 -x -D -d 10 -v 42 -p 100 -l wan 192.168.1.240
## VRRP instance "wan"
# -i eth0 : bind to eth0 (wan interface)
# -x : don't handle the virtual IP address
# -D : daemonize
# -d 10 : 10s between advertisement, 1s by default
# -v 42 : VRID
# -p 100 : priority 100
# -l wan : Name of vrrp instance (for logging purpose)
~~~
Dans l'état master, l'interface vrrp_${vrid}_${interface} est crée avec la VIP et l'adresse mac VRRP 00:00:5e:00:01:${vrid} (ici interface vrrp_42_eth0, VIP 192.168.1.240 et la mac 00:00:5e:00:01:2a).
## Sysctls
Voir /usr/share/doc/vrrpd/sysctl.vrrpd
Il faut au préalable ajuster des paramètres _sysctl_ (voir `/usr/share/doc/vrrpd/sysctl.vrrpd`) :
~~~
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.eth0.rp_filter=0
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
~~~
Puis, on lancer par exemple :
~~~
# vrrpd -i eth0 -x -D -d 10 -v 42 -p 100 -l foo 192.0.2.42/27
~~~
Détails des options utilisées :
* `-i eth0` : se binder sur l'interface _eth0_
* `-x` : ne pas manipuler d'interface mais déléguer au script `vrrp_switch`
* `-D` : lancer en mode démon
* `-d 10` : 10s between advertisement, 1s by default
* `-v 42` : identifiant VRID (il doit être unique sur un même segment réseau)
* `-p 100` : priority 100
* `-l foo` : Name of vrrp instance (for logging purpose)
Dans l'état master, l'interface vrrp_${vrid}_${interface} est créée avec l'adresse IP et l'adresse MAC 00:00:5e:00:01:${vrid} :
~~~
$ ifconfig vrrp_2_eth0
vrrp_2_eth0 Link encap:Ethernet HWaddr 00:00:5e:00:01:2a
inet adr:192.0.2.42 Bcast:0.0.0.0 Masque:255.255.255.224
adr inet6: fe80::200:5eff:fe00:102/64 Scope:Lien
[...]
~~~
## Logs
Logs dans /var/log/daemon
Historique des changements d'états dans /var/log/vrrpd/state.$vrid
Etat courant dans /var/run/vrrpd/vrrp-${instance_name}
Fichier pid /var/run/vrrpd_${instance_name}_${vrid}.pid
* Des logs sont envoyés à syslog
* L'historique des changements d'états dans /var/log/vrrpd/state.$vrid
* L'état courant se trouve dans /var/run/vrrpd/vrrp-${instance_name}
* Un fichier PID est dans `/var/run/vrrpd_${instance_name}_${vrid}.pid`