Vous êtes sur la page 1sur 16

VPN : installation et configuration d'un VPN rout avec OpenVPN

par Mathieu Androz (Accueil)


Date de publication : 05/04/2009 Dernire mise jour : 17/04/2009

Cet article traite de l'installation et de la configuration d'un rseau priv virtuel ou VPN avec le logiciel Open Source OpenVPN.

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

Introduction...................................................................................................................................................................3 I - Qu'est-ce qu'un VPN ?............................................................................................................................................4 II - Installation d'OpenVPN.......................................................................................................................................... 5 III - Gnration des certificats et cls d'authentification............................................................................................. 6 III-1 - Initialisation des variables de gnration..................................................................................................... 6 III-2 - Gnration du certificat et de la cl d'autorit de certification..................................................................... 6 III-3 - Gnration du certificat et de cl pour le serveur....................................................................................... 7 III-4 - Gnration des certificats et cls pour les clients....................................................................................... 7 III-5 - Gnration des paramtres de Diffie-Hellman.............................................................................................7 IV - Configuration.........................................................................................................................................................9 IV-1 - Prrequis...................................................................................................................................................... 9 IV-2 - Configuration du serveur............................................................................................................................10 IV-3 - Configuration des clients............................................................................................................................11 IV-3-a - Clients Linux...................................................................................................................................... 11 IV-3-b - Clients windows XP ou Vista............................................................................................................ 12 IV-3-c - Alternative clients windows Vista ou Seven...................................................................................... 14 V - Conclusion........................................................................................................................................................... 15 Remerciements.......................................................................................................................................................... 16

-2Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

Introduction
OpenVPN est un logiciel libre permettant de crer facilement une liaison VPN site site. OpenVPN permet des pairs de s'authentifier entre eux l'aide d'une cl prive partage l'avance ou de certificats. Il fonctionne sur un mode client/serveur, ce qui implique son installation sur les 2 sites distants, l'un ct client, l'autre ct serveur.

-3Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

I - Qu'est-ce qu'un VPN ?


Un VPN (Virtual Private Network) ou Rseau Priv Virtuel en franais est connexion inter-rseau permettant de relier 2 rseaux locaux diffrents de faon scuris par un protocole de tunnelisation. La tunnelisation est un protocole permettant aux donnes passant d'une extrmit l'autre du VPN d'tre scurises par des algorithmes de cryptographie. Le terme tunnel est utilis pour symboliser le fait qu'entre l'entre et la sortie du VPN les donnes sont chiffres et donc normalement incomprhensibles pour toute personne situe entre les deux extrmits du VPN, comme si les donnes passaient dans un tunnel. De plus, crer un tunnel signifie aussi encapsuler un protocole dans un protocole de mme niveau du modle OSI (IP dans IPSec par exemple). Dans le cas d'un VPN tabli entre deux machines, on appelle client VPN l'lment permettant de chiffrer les donnes l'entre et serveur VPN (ou plus gnralement serveur d'accs distant) l'lment dchiffrant les donnes en sortie. (Wikipedia)

-4Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

II - Installation d'OpenVPN
Remarque : La mthode d'installation propose dans cet article repose sur le fonctionnement de la distribution Debian et ses drivs. Pour les autres distributions, veuillez vous reporter aux commandes de gestions des paquets implantes pour la distribution choisie. Installation d'OpenVPN proprement dit : Installation d'OpenVPN

> apt-get install openvpn

Installation d'OpenSSL pour la scurisation des donnes : Remarque : Gnralement, OpenSSL est install par dfaut sur les machines et ne ncessite donc pas d'tre rinstall. Installation d'OpenSSL

> apt-get install openssl

-5Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

III - Gnration des certificats et cls d'authentification


L'installation d'OpenVPN cre un dossier dans /usr/share/doc/openvpn/easy-rsa/ contenant tous les scripts permettant de gnrer facilement tous les certificats et cls d'authentification ncessaire au fonctionnement d'OpenVPN. Avant toute chose, crez un dossier easy-rsa dans le rpertoire d'OpenVPN et copier les scripts originaux dedans afin de centraliser applications et scripts : Cration du rpertoire easy-rsa Copie des scripts

> mkdir /etc/openvpn/easy-rsa/

> cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

On cre ensuite un dossier keys destin contenir les diffrents certificats et cls gnrs : Cration du rpertoire destin contenir les cls et certificats
> mkdir /etc/openvpn/easy-rsa/keys/

III-1 - Initialisation des variables de gnration


A partir du dossier /etc/openvpn/easy-rsa/, il faut dans un premier temps diter le fichier vars afin d'initialiser diffrentes variables servant la gnration des certificats : Edition du fichier vars

> nano /etc/openvpn/easy-rsa/vars

On entre les informations personnelles comme suit : Informations renseigner dans le fichier vars
Export Export Export Export Export Export KEY_DIR=$D/keys KEY_COUNTRY=FR KEY_PROVINCE=FR KEY_CITY=Lyon KEY_ORG=example KEY_EMAIL=example@toto.org

Enfin, on excute enfin le script afin d'initialiser les variables : Excution du script vars
> . ./vars

attention la commande est bien : point - espace - point/vars !

III-2 - Gnration du certificat et de la cl d'autorit de certification


OpenVPN fonctionne sous un mode PKI (Public Key Infrastructure). Selon ce mode, le serveur et chaque client possde un certificat (appel galement cl publique) et une cl prive qui leur sont propres. Un certificat d'autorit de certification (master CA) et une cl prive sont utiliss pour signer les certificats du serveur et de chaque client. Ce master CA permet une authentification bidirectionnelle : chacun des clients et serveur authentifient donc l'autre rciproquement en vrifiant dans un premier temps que le certificat qu'ils proposent a bien t sign par le master CA.

-6Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

Pour gnrer ce master CA et la cl correspondante, il faut excuter les scripts suivants partir du dossier /etc/ openvpn/easy-rsa : Excution du script clean-all
> ./clean-all > ./build-ca

L'excution du script build-ca entrane la cration du certificat ca.crt et de la cl ca.key dans le rpertoire /etc/ openvpn/easy-rsa/keys.

III-3 - Gnration du certificat et de cl pour le serveur


La gnration du certificat et de la cl du serveur VPN se fait simplement, par l'excution du script build-key-server, toujours partir du dossier /etc/openvpn/easy-rsa : Gnration du certificat et de cl pour le serveur
> ./build-key-server nom_choisi_pour_le_serveur

Attention : La commande d'xecution du script build-key-server doit tre suivie d'un nom donn au serveur. Ce nom n'a pas d'importance en soit, il peut tre ce que vous voulez. L'important est de toujours utiliser le mme nom quand celui-ci est demand ! Diffrentes informations sont demandes pendant l'excution de ce script : Commun-name : Entrez le nom du serveur que vous avez pour lancer le script !!! Sign the certificate ? : tapez "yes" 1 out of 1 certificate requests certificated, commit : tapez "yes" Ce script conduit la cration des fichiers nom_choisi_du_serveur.crt et nom_choisi_du_serveur.key dans le dossier /etc/openvpn/easy-rsa/keys.

III-4 - Gnration des certificats et cls pour les clients


De la mme faon, ils sont gnrs par l'excution du script build-key partir du dossier /etc/openvpn/easy-rsa/ : Gnration des certificats et cls pour le client1
> ./build-key nom_du_client1

Attention : Encore une fois, de mme manire que pour le serveur, l'excution du script build-key demande d'entrer le nom du client : Pour le paramtre Commun-name , saisissez le mme nom que nom_du_client1 que vous avez utilis dans la commande ! Rptez cette opration autant de fois que vous voulez pour gnrer plusieurs certficats et cls si vous avez plusieurs clients. N'oubliez pas cependant de changer de nom_du_client chaque fois !!! Ce script entraine la cration des fichiers nom_du_client1.crt et nom_du_client1.key dans le dossier /etc/opnevpn/ easy-rsa/keys.

III-5 - Gnration des paramtres de Diffie-Hellman


Le protocole Diffie-Hellman est un protocole de cryptographie utilis dans les changes de cls.
-7Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

Pour plus d'information, je vous invite vous rendre sur la page de Wikipedia traitant de ce sujet. Les paramtres de Diffie-Hellman sont gnrs par l'excution du script build-dh partir du dossier /etc/openvpn/ easy-rsa : Gnration des paramtres de Diffie-Hellman
> ./build-dh

Son excution donne en sortie quelque-chose de ce style : Sortie de l'excution de build-dh

Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time .................+........................................... ...................+.............+.................+......... ......................................

Il en rsulte la cration du fichier dh1024.pem dans le dossier /etc/openvpn/easy-rsa/keys.

-8Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

IV - Configuration IV-1 - Prrequis


Il existe 2 configurations possibles d'OpenVPN suivant le type de rseau que l'on souhaite mettre en place et suivant le contexte rseau : VPN pont (interface tap) et VPN rout (interface tun). La configuration VPN rout est plus performant et plus fiable que le pont. Le VPN pont est utilis dans une architecture rseau local, alors que le VPN rout peut aussi bien tre utilis dans cette architecture que pour relier 2 rseaux travers l'internet. C'est cette configuration route qui sera utilise dans cet article. Voici le schma global des rseaux pour lequel la configuration propose est valable. A vous de l'adapter selon votre structure.

Architecture rseau utilise comme exemple pour cet article. La cration des cls et certificats d'authentification est termine. Nous allons pass la configuration du serveur et des clients. Afin de configurer au mieux le serveur et les clients, il est ncessaire de prparer le terrain. Des exemples de fichiers de configuration sont prsents dans le dossier /usr/share/doc/openvpn/examples/ sample-config-files/. On place les diffrents fichiers de configuration ncessaires dans /etc/openvpn/ : Copie du fichier de conf server.conf dans le dossier openvpn
> cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

-9Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

Copie du fichier de conf client.conf dans le dossier openvpn Ensuite, on dcompresse le fichier server.conf.gz : Extraction du fichier de conf server

> cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

> gunzip /etc/openvpn/server.conf.gz

voil, les exemples de fichiers de configuration sont prts, il ne reste qu' les paramtrer.

IV-2 - Configuration du serveur


La mise en route du serveur entraine l'attribution automatique d'una adresse ip l'interface tun0 du serveur. Cette ardesse ip est toujours la premire adresse (en .1) du rseau annonc dans le fichier de configuration. Par exemple, si l'on se place dans l'exemple de configuration dtaille ci-dessous, on dfinit un rseau vpn en 192.168.0.0. L'adresse ip du serveur vpn sera donc 192.168.0.1. Contrairement au serveur vpn, il est possible de dfinir une plage d'ip disponibles pour l'attribution des ip clients (avec l'option --ifconfig-pool start-IP end-IP [netmask]), voire de dfinir prcisment chaque ip pour chaque client (en entrant ces informations dans un fichier et en utilisant l'option --ifconfig-pool-persist file [seconds]). Ces options sont dfinir dans le fichier de configuration du serveur. De nombreuses autres options sont disponibles et consultables dans la documentation d'OpenVPN. Pour ce faire, il suffit de renseigner les bons paramtres au fichier /etc/openvpn/server.conf : Explication du contenu du fichier de conf server
#numro du port utilis port 1595 #protocole de communication proto udp #type d'interface dev tun #emplacement du master CA ca /etc/openvpn/easy-rsa/keys/ca.crt #emplacement du certificat du serveur cert /etc/openvpn/easy-rsa/keys/nom_choisi_pour_le_serveur.crt #emplacement de la cl du serveur key /etc/openvpn/easy-rsa/keys/nom_choisi_pour_le_serveur.key #emplacement du fichier Diffie-Hellman dh /etc/openvpn/easy-rsa/keys/dh1024.pem #quelle sera l'adresse du rseau virtuel cr par le VPN #l'adresse du serveur VPN sera ici 192.168.0.1 server 192.168.0.0 255.255.255.0 #quelle est la route pour communiquer, ici le rseau 10.4. push "route 10.4.0.0 255.255.255.0" # keepalive 10 120 #type d'encryptage des donnes cipher AES-128-CBC #activation de la compression comp-lzo #nombre maximum de clients autoriss max-clients 10 #pas d'utilisateur et groupe particuliers pour l'utilisation du VPN user nobody group nobody #pour rendre la connexion persistante persist-key persist-tun #fichier de log status openvpn-status.log log openvpn.log

- 10 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

Explication du contenu du fichier de conf server


#niveau de verbosit verb 5

Voila, la configuration du ct serveur est termine ! Facile, non ? Pour dmarrer le serveur, la commande est : Dmarrage du serveur OpenVPN
> /etc/init.d/openvpn start

Vous pouvez vrifier que tout s'est bien pass jusqu' prsent en vrifiant la cration et la bonne configuration de l'interface tun0 : Affichage des interfaces rseau
> ifconfig

Vous devriez avoir quelque-chose dans ce style : Exemple d'informations pour une interface tun correctement configure
tun0

Lien encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00 inet adr:192.168.0.1 P-t-P:192.168.0.2 Masque:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:100 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

IV-3 - Configuration des clients


La connexion au serveur VPN est possible via des clients Linux ou Windowsiens.

IV-3-a - Clients Linux


Le client Linux ncessite la mme installation que le serveur : Installation d'OpenVPN ct client
> apt-get install openvpn

Pour garder une certaine cohrence entre le serveur et les clients, j'utilise la mme hirarchie de dossiers sur les clients que sur le serveur. Ainsi, on cre un dossier config et un dossier /easy-rsa/keys dans /etc/openvpn :
> mkdir /etc/openvpn/config && mkdir /etc/openvpn/easy-rsa && mkdir /etc/openvpn/easy-rsa/keys

Pour fonctionner, les clients ont besoin de 4 fichiers provenant du serveur : 1. ca.crt 2. nom_du_client1.crt 3. nom_du_client1.key 4. le fichier de configuration client.conf

Voici le contenu du fichier client.conf permettant de se connecter au serveur dfini prcdemment : Explication du contenu du fichier de conf client
#pour signaler que c'est un client ! client

- 11 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

Explication du contenu du fichier de conf client

#type d'interface dev tun #protocole de communication proto udp #adresse ip publique du rseau dans lequel le serveur est install + port identique au serveur remote 82.236.27.215 1595 #tentative de connexion infinie resolv-retry infinite nobind #pour rendre la connexion persistante persist-key persist-tun #pour cacher les avertissements mute-replay-warnings #emplacement du master CA ca /etc/openvpn/easy-rsa/keys/ca.crt #emplacement du certificat client cert /etc/openvpn/easy-rsa/keys/nom_du_client1.crt #emplacement de la cl prive du client key /etc/openvpn/easy-rsa/keys/nom_du_client1.key #type d'encryptage des donnes cipher AES-128-CBC #activation de la compression comp-lzo #niveau de verbosit verb 5

IV-3-b - Clients windows XP ou Vista


Pour les clients windowsiens, il est ncessaire d'installer une application spcifique, OpenVPN GUI for Windows, qui se trouve ici : http://openvpn.se/ Une fois tlcharge, lancer l'installation d'OpenVPN. Une fentre vous demandera si vous acceptez d'installer une nouvelle interface TAP-Win32 Adapter V8 . Acceptez.

L'installation finie, deux petits ordinateurs avec un globe font leur apparition dans la barre des tches. Cela correspond l'interface virtuelle nouvellement cre TAP-Win32 Adapter V8 permettant la connexion au VPN.

- 12 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

Icne de l'interface TAP Win32 pour OpenVPN dans la barre des tches de Windows. Copiez les 4 fichiers suivants dans le dossier C:\Program Files\OpenVPN\config : 1. ca.crt 2. nom_du_client1.crt 3. nom_du_client1.key 4. client.conf Attention : Petite subtilit, il faut renommer le fichier client.conf en client.ovpn !!! La configuration du fichier de configuration client.ovpn est la mme que pour un client Linux, except pour les chemins de fichiers. Si les certificats et cls sont bien placs dans le dossier config, le contenu du fichier client.ovpn doit tre : Explication du contenu du fichier de conf client

#pour signaler que c'est un client ! client #type d'interface dev tun #protocole de communication proto udp #adresse ip publique du rseau dans lequel le serveur est install + port #identique au serveur remote 82.236.27.215 1595 #tentative de connexion infinie resolv-retry infinite nobind #pour rendre la connexion persistante persist-key persist-tun #pour cacher les avertissements mute-replay-warnings #emplacement du master CA ca ca.crt #emplacement du certificat client cert nom_du_client1.crt #emplacement de la cl prive du client key nom_du_client1.key #type d'encryptage des donnes cipher AES-128-CBC #activation de la compression comp-lzo #niveau de verbosit verb 5

Pour se connecter au VPN, un clic droit sur l'icne d'interface TAP-Win32 Adaptater V8 et connect ...

- 13 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

Connexion au VPN. Si la connexion au VPN est un succs, les crans de l'icne de l'interface TAP-Win32 Adaptater V8 deviennent verts.

Lorsque la connexion est effectue, l'icne de l'interface devient vert..

IV-3-c - Alternative clients windows Vista ou Seven


Si vous rencontrez des difficults pour faire fonctionner votre VPN sous Windows Vista ou Seven, voici une alternative qui pourrra vous permettre de vous en sortir. OpenVPN Technologies, Inc offre un nouveau client pour Windows mais galement pour Mac et Linux. Ce client propose une nouvelle interface beaucoup plus conviviale que la prcdente et une utilisation intuitive. Vous trouverez ces clients l'adresse suivante : http://openvpn.net/index.php/openvpn-client.html. Pour Windows, il faut tlcharger le client : OpenVPN Access Server Windows Client Download

- 14 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

V - Conclusion
A prsent, vous devez tre capable de raliser un VPN distant. Cet article propose une configuration fonctionnelle, cependant il ne dcrit pas l'ensemble des possibilits qu'offre OpenVPN. Pour de plus amples informations et pour dcouvrir les autres options de configuration que propose OpenVPN, je vous invite lire la documentation officielle d'OpenVPN. J'espre que cet article vous a t utile.

- 15 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

VPN : installation et configuration d'un VPN rout avec OpenVPN par Mathieu Androz (Accueil)

Remerciements
Je tiens remercier ovh pour m'avoir guid dans mes premiers pas de rdacteur.

- 16 Ce document est issu de http://www.developpez.com et reste la proprit exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise l'obtention pralable de l'authorisation de l'auteur.
http://mathieu-androz.developpez.com/articles/linux/vpn/

Vous aimerez peut-être aussi