OpenVPN

Dernière mise à jour : 24/06/2004

    Après avoir expliquĂ© comment utiliser FreeSWAN/IPSec pour faire un VPN entre deux rĂ©seaux (et connecter des clients Windows), nous allons voir dans cet article comment utiliser http://openvpn.sourceforge.net/ qui vous permet de relier deux passerelles Linux (mais aussi beaucoup d'autres plateformes, consultez le site pour plus d'infos). Je me limiterais ici Ă  la connexion de deux rĂ©seaux dont les passerelles sont assurĂ©es par des serveurs Linux tournant sous Debian stable (woody). Pour des raisons de sĂ©curitĂ©, j'ai prĂ©fĂ©rĂ© recompiler un kernel maison tournant sous GRSec.

    La Debian Woody Ă©tait mon choix car ne nĂ©cessitant pas de mises Ă  jour particulières si ce n'est pour la sĂ©curitĂ©, mais le guide peut facilement s'appliquer Ă  tout autre Linux. J'ai trouvĂ© un site qui est maintenu par un Allemand fort sympathique fournissant des paquets pour OpenVPN, vous pouvez pour ceci consulter : http://cmeerw.org/debian/. Il vous est donc possible d'ajouter les bonnes lignes dans votre /etc/apt/sources.list comme ceci :

    L'installation d'OpenVPN n'est pas longue. C'est sa configuration qui prends du temps. Assurez-vous de bien sĂ©curiser votre serveur et de ne tourner que les services nĂ©cessaires. Au niveau du kernel, il vous faudra le pĂ©riphĂ©rique /dev/tun et /dev/tap, assurez-vous de l'avoir compilĂ© en support. Dans notre exemple nous allons prendre deux rĂ©seaux : 192.168.1.0 - 255.255.255.0 et 172.16.1.0 - 255.255.255.0 Ă©tant respectivement le rĂ©seau 1 et le rĂ©seau 2. Imaginons Ă  prĂ©sent que vous passiez pas une ligne ADSL avec un IP fixe. Disons que l'IP fixe du rĂ©seau 1 est 193.145.1.10 (IP fictive) et que celle du rĂ©seau 2 est 194.133.10.128. Il vous faut ensuite crĂ©er une clĂ© partagĂ©e, pour se faire tapez : openvpn --genkey --secret static.key et copiez cette clĂ© dans /etc/openvpn/certificates/ (il vous faudra crĂ©er le rĂ©pertoire, et changer les permissions).

    Voici le fichier de configuration du rĂ©seau 1, que vous devez placer dans /etc/openvpn.conf. Quelques explications s'imposent. On dĂ©finit d'abord l'adresse locale et distante, puis les adresses IP du lien VPN entre les deux passerelles. On dĂ©finit ensuite deux scripts, un de dĂ©marrage et un d'arrĂŞt du VPN, ils serviront Ă  paramĂ©trer des routes pour que les deux rĂ©seaux parlent entre eux. Le port standard d'openvpn est le 5000 mais je conseille de changer ceci. Les deux lignes suivantes sont des fixes pour du VPN par lien sans fil, les utilisateurs de cartes rĂ©seau standard prĂ©fèreront un tun-mtu 1500 qui est standard. Le mssfix permet de rĂ©gler des problème de gros paquets transitant par le lien. Enfin la clĂ© est ici partagĂ©e entre les deux serveurs.

    Pour faire marcher correctement le serveur, il vous faudra Ă©galement changer des règles de route et d'accès par le biais d'iptables, voici le fichier que vous pouvez recopier dans /etc/init.d/firewall :

    La dernière Ă©tape pour faire fonctionner le VPN sur la machine 1 est de renseigner la route du rĂ©seau distant, il vous suffit alors de crĂ©er : /usr/local/sbin/office.up et d'y rentrer ceci :

    Il faut bien sĂ»r crĂ©er un fichier /usr/local/sbin/office.down tel que je l'ai documentĂ© dans le fichier de configuration. Ce fichier contient les commandes d'extinction de VPN.

    Il faut ensuite s'occuper de la configuration de la machine distante (rĂ©seau 2). Commencez par crĂ©er le fichier /etc/openvpn/openvpn.conf et mettez les lignes suivantes :

    Il faut ensuite Ă©diter le fichier /etc/init.d/firewall. Recopiez l'exemple ci-dessus et changez juste la ligne : PRIVATE=192.168.1.0/24 par PRIVATE=172.16.1.0/24.

    Comme pour la passerelle VPN du rĂ©seau 1, il faut renseigner la route du rĂ©seau distant, il vous suffit alors de crĂ©er : /usr/local/sbin/office.up et d'y rentrer ceci :

    Il faut bien sĂ»r crĂ©er un fichier /usr/local/sbin/office.down tel que je l'ai documentĂ© dans le fichier de configuration. Ce fichier contient les commandes d'extinction de VPN.

    Il ne vous reste alors qu'Ă  lier le script de dĂ©marrage du firewall comme ceci (sous Debian) : ln -s /etc/init.d/firewall.vpn /etc/rc2.d/S99firewall.vpn sur les deux machines afin qu'il dĂ©marre automatiquement. Et Ă  dĂ©marrer OpenVPN sur les deux machines, comme ceci (la première fois car ensuite cela sera automatique) : /etc/init.d/openvpn start et vous devriez voir quelque chose dans ces eaux lĂ  :

    Une petite note me semble nĂ©cessaire pour ceux gĂ©rant du cisco en routeurs et switches. Dans ce type de configurations, il sera nĂ©cessaire d'ajouter les routes ip route 10.0.0.1 255.255.255.0 10.0.0.2 ainsi que ip route 10.0.0.2 255.255.255.0 193.145.1.10 afin que les routes entre les rĂ©seau se fassent correctement. Le second avertissement concerne le mtu-fix qui est nĂ©cessaire si vous avez un serveur de mail de l'autre cotĂ© du VPN afin que le protocole de dĂ©couverte marche.

    VoilĂ  qui termine cet article sur OpenVPN, cette procĂ©dure vous permet de mettre en place de façon simple et rapide un VPN opensource entre deux passerelles. N'hĂ©sitez pas Ă  consulter le site officiel si vous avez des questions. Cet article est entièrement tirĂ© de leur documentation d'installation, leurs HOWTO et le FAQ.