__**WIP**__ //Objectif : mettre en place un serveur Openvpn haute disponibilité, en mode "actif-actif".// On souhaite pouvoir mette en place plusieurs serveurs Openvpn permettant l'accès avec les mêmes identifiants/certificats, et surtout, les mêmes adress ip attribuées. On souhaite également pouvoir reproduire le comportement par défaut (ie sans --duplicate-cn) n'autorisant qu'une seule connexion à la fois pour un Common Name (cn) donné. Problème à résoudre : * une source commune d'authentification * aiguiller les paquets d'une connexion établie vers le bon serveur : utiliser un protocole de routage dynamique * s'assurer qu'un client soit connecté une seule fois parmis les différents serveurs **Authentification commune** **Routage dynamique** Deux systèmes permettent, à partir d'openvpn d'obtenir des informations sur les routes "internes" à Openvpn : - le fichier de status (typiquement openvpn-status.log dans /etc/openvpn) - les scripts "up", "learn-address", "down", ... (ou plugins sur les mêmes hooks) appelés au fur et à mesure de l'établissemnet d'une connexion. L'avantage du fichier de status, c'est qu'il contient un récapitulatif des routes actives au moment où il est écrit. L'inconvénient, c'est qu'il n'est écrit que périodiquement (60 secondes, par défaut), ce qui induit une granularité minimum sur la mise à jour. L'avantage des scripts/plugins, c'est qu'ils sont appelé "just in time", quand un évènement se produit. L'inconvénient, c'est que si on se base uniquement sur eux, il faut être sur de ne rater aucun évènement, sous peine d'être "désynchronisé". => On va utiliser les deux. Une lecture « quand il est modifié » (grâce à inotify) du fichier status, et l'utilisation d'un script permettant de signaler de façon synchrone la mise en place d'une nouvelle route. Ces informations sont regroupées pour constituer la configuration d'un démon de routage dynamique. Le choix se porte sur "announcer" ([[http://www.dia.uniroma3.it/~compunet/bgp-probing/]]) un démon écrit en python qui permet d'annoncer des préfixes à un peer bgp. (un autre choix intéressant aurait pu être le BGP Route Injector : [[http://bgp.exa.org.uk/]] Il suffit de lui envoyer un signal HUP pour qu'il relise le fichier de configuration. Les modifications de peers/préfixes sont alors réperctuées, sans remettre à zéro les connexions en cours. **Connexion unique**