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.



Notice Légale du site