RÉSEAU OSIRIS
CENTRE RÉSEAU COMMUNICATION

logo

Migration de la redondance VRRP vers IPv6

Introduction

Comme décrit lors des Jres 2003, le service DNS et le service SMTP bénéficient d'une redondance grâce au protocole VRRP. Sur Osiris, les machines ns1a.u-strasbg.fr et ns1b.u-strasbg.fr participent à cette redondance, pour assurer les services de ns1.u-strasbg.fr (serveur DNS) et mailhost1.u-strasbg.fr (relayage de messagerie).

Le principe de base, décrit dans l'article, nécessite une adresse IPv4 réelle pour chaque machine participant à la redondance, ainsi qu'une adresse IPv4 et une adresse MAC virtuelles.

Extension à IPv6

L'extension à IPv6 nécessite une adresse IPv6 réelle (auto-configurée dans notre cas, pour des raisons de simplicité) pour les deux machines, ainsi qu'une adresse IPv6 virtuelle (2001:660:2402::1 ici).

Le basculement de l'adresse IPv6 virtuelle n'étant pas prévu de base dans VRRP, nous avons profité de la possibilité d'appeler des scripts pour effectuer des actions d'appropriation et de désappropriation propres à IPv6.

Il faut noter que VRRP effectue un « gratuitous ARP » pour actualiser les tables de forwarding des différents commutateurs. Ce « gratuitous ARP » est effectué sur l'adresse MAC virtuelle, utilisée par IPv4 et IPv6. Il n'y a donc, en théorie, rien à faire pour actualiser les tables de forwarding pour IPv6.

Il reste un problème lorsque le maître redémarre (avec shutdown) : l'adresse IPv6 virtuelle n'étant pas gérée par VRRP, le maître peut continuer pendant encore quelques millisecondes à utiliser l'adresse IPv6 virtuelle, mais cette fois-ci avec l'adresse MAC réelle remise par VRRP avant de s'arrêter. Ceci a pour effet d'empoisonner les tables de forwarding pour l'adresse IPv6 virtuelle.

Gestion de l'adresse virtuelle

La gestion de l'adresse virtuelle est donc réalisée « manuellement » par les scripts de changement d'état de freevrrpd. Ainsi, lorsque ns1b.u-strasbg.fr passe en mode maître (suite à défaillance du maître), le script s'approprie l'adresse IPv6 virtuelle :

ifconfig fxp0 inet6 alias 2001:660:2402::1/128

Et lorsque ns1b.u-strasbg.fr rebascule en mode esclave, le script rend l'adresse virtuelle :

ifconfig fxp0 inet6 delete 2001:660:2402::1

Attachement des services DNS et SMTP à l'adresse virtuelle

Lorsqu'une connexion est effectuée par notre serveur (le maître, ou l'esclave devenu maître), celui-ci doit utiliser l'adresse virtuelle (IPv4 ou IPv6) et non l'adresse réelle.

Ceci nécessite une configuration de bind :

	#
        # Pour que les requêtes DNS (UDP seulement) partent de ns1
        # et non de ns1a ou ns1b.
        # Pas de solution pour les requêtes DNS TCP. Elles partiront
        # d'une adresse "random".
        #
        query-source address 130.79.200.1 ;
        query-source-v6 address 2001:660:2402::1 ;
        #
        # Idem pour les transferts de zone
        #
        transfer-source 130.79.200.1 ;
        transfer-source-v6 2001:660:2402::1 ;

On notera que la configuration IPv6 est symétrique de la configuration IPv4.

En ce qui concerne sendmail, il faut noter un piège :

O ClientPortOptions=Family=inet,Addr=130.79.200.1
O ClientPortOptions=Family=inet6,Addr=2001:660:2402::1

Il faut bien spécifier les deux lignes, et en particulier le Family=inet6 pour pouvoir spécifier l'adresse IPv6.

Bilan et calendrier

Les deux serveurs ns1a.u-strasbg.fr et ns1b.u-strasbg.fr ont été v6-ifiés le lundi 26 avril 2004.