Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / Autres / Installer et configurer OpenVPN sur Debian

Installer et configurer OpenVPN sur Debian

Par Pierre-Yves Landuré Dernière modification 07/02/2017 11:45

OpenVPN permet de créer des réseaux privés virtuels chiffrés avec OpenSSL. C'est une alternative crédible aux technologies telles que PPtP (Microsoft) ou IPSec. Disponible sur de nombreux systèmes d'exploitation (Microsoft Windows, GNU / Linux, MacOS X, ...), c'est une solution simple pour gérer un réseau privé virtuel composé de machines hétéroclites dans un environnement n'autorisant pas IPSec.

Ce guide est testé sur:

  • Debian 6.0 Squeeze
  • Debian 7.0 Wheezy

Prérequis

Ce guide recommande:

Installation

Installez les logiciels:

command apt-get install openvpn openssl module-init-tools zip dos2unix git

Initialisez le module tun:

command modprobe tun

Intégrez le module au démarrage du système:

if [[ -z "$(command grep '^tun$' '/etc/modules')" ]]; then
command echo '# Needed by OpenVPN
tun' >> '/etc/modules'
fi

Si nécessaire de créez le device associé:

if [[ ! -e '/dev/net/tun' ]]; then
command mkdir -p '/dev/net'
command mknod '/dev/net/tun' c 10 200
fi

Installez Easy-RSA v3:

command git clone 'https://github.com/OpenVPN/easy-rsa' '/etc/openvpn/easy-rsa'

Mettez en place l'outil openvpn-tools:

command wget 'https://raw.github.com/biapy/howto.biapy.com/master/openvpn/openvpn-tools' \
--quiet --no-check-certificate --output-document='/usr/local/bin/openvpn-tools'
command chmod +x '/usr/local/bin/openvpn-tools'

Si nécessaire, mettez en place le script 'update-resolv-conf':

if [ ! -e '/etc/openvpn/update-resolv-conf' ]; then
command wget 'https://raw.github.com/biapy/howto.biapy.com/master/openvpn/update-resolv-conf' \
--quiet --no-check-certificate --output-document='/etc/openvpn/update-resolv-conf'
command chmod +x '/etc/openvpn/update-resolv-conf'
fi

Initialisez l'environnement de création des certificats SSL:

command openvpn-tools --initialize

Configurez la rotation des journaux:

echo "/var/log/openvpn/*.log {
daily
missingok
rotate 10
compress
delaycompress
notifempty
create 600 root root
postrotate
/etc/init.d/openvpn restart > /dev/null
endscript
}" > "/etc/logrotate.d/openvpn"

Administration

Création d'un réseau VPN

Créez une instance VPN:

command openvpn-tools --create="domain.vpn"

où:

  • domain.vpn est le nom d'instance / domaine du nouveau réseau VPN.

Le serveur est créé sur le port UDP 1194 par défaut.Si ce port n'est pas disponible, un autre port est choisi aléatoirement.

Suppression d'un réseau VPN

Supprimez un serveur VPN:

command openvpn-tools --destroy="domain.vpn"

Ajout d'un client

Ajoutez un client au réseau VPN:

command openvpn-tools --domain="domain.vpn" --add="client-alias"

Les clients sont créés avec une adresse IP fixe.

L'outil génère des archives contenant les configurations clientes pour Unix (Ubuntu, Mac OS X, etc...), iPhone, et Microsoft Windows. Configurer un client revient à y décompresser à l'emplacement adéquat.

L'archive contient aussi un fichier hosts.txt dont le contenu peut être inséré dans le fichier hosts du système.

Suppression d'un client

Supprimez l'accès au réseau VPN d'un client:

command openvpn-tools --domain="domain.vpn" --remove="client-alias"

Autres options

Communication entre clients

Activez la communication directe entre les clients du réseau VPN:

command openvpn-tools --domain="domain.vpn" --c2c='y'

Accès au réseau local du serveur

Activez l'accès au réseau local du serveur par les clients du réseau VPN:

command openvpn-tools --domain="domain.vpn" --nat='y'

Accès à Internet par le réseau VPN

Activez le passage forcé de l'accès à Internet des clients par le réseau VPN:

command openvpn-tools --domain="domain.vpn" --gateway='y'

Mise en place d'un serveur DNS pour le réseau VPN

Cette procédure est expérimentale. Elle peut poser des problèmes sur les clients Unix.

Mettez en place la résolution DNS des noms des clients du réseau VPN grâce à un serveur DNS Bind:

command openvpn-tools --domain="domain.vpn" --bind='y'

Désactivez la résolution DNS pour le réseau VPN:

command openvpn-tools --domain="domain.vpn" --bind='n'

Si vous rencontrez des problèmes de résolution des domaines Internet sur les clients du VPN, suivez la section "Redirections" du guide Configurer un serveur DNS Bind sur Debian.

Mise en place des clients

Windows

Le client Windows est disponible dans les téléchargements du site officiel d'OpenVPN.

Pour installer OpenVPN sur Windows pour un utilisateur ne disposant pas des droits d'administration, lisez l'article de Michauko : OpenVPN, OpenVPN GUI, droits admin, et "add route"....

Mac OS X

OpenVPN nécessite l'installation de Tun Tap - Virtual network interfaces for Mac OS X pour fonctionner.

Si la ligne de commande vous pose problème, essayez TunnelBlick, une interface graphique pour OpenVPN.

iPhone

Le client "OpenVPN Connect" est disponible sur l'AppStore. Transférez les fichiers de configuration (obtenus en décompressant l'archive correspondante) sur l'iPhone à l'aide d'iTunes.

Références

Ces livres peuvent vous aider:

Remerciements

Thierry a écrit :
16/06/2014 13:42
Bonjour, En partant d'une VM "vierge" sous debian Wheezy, et en suivant la procédure, je me retrouve avec une erreur "TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed"
d’après ce que j'ai pu trouver sur différent forum, il semblerait que cela soit liée à la création des différents certificats ...
Thierry a écrit :
04/07/2014 11:26
J'ai résolu le problème en mettant en commentaire "ns_cert_type server" dans le fichier de conf "client".
Thor a écrit :
15/07/2014 19:09
J'ai le même problème avec le certificat TLS
Matthieu a écrit :
03/05/2015 12:45
Bonjour,
Je suis un peu nouveau sur linux.
Est-ce que je peu appliquer ce tuto sur un raspberry avec raspbian ?
Pierre-Yves Landuré a écrit :
26/11/2016 11:49
Bonjour,

oui, ce guide devrait être compatible avec raspbian.
Dav a écrit :
10/05/2015 21:38
Merci pour le script ça me fait gagner du temps !
Par contre il peut être intéressant d'ajouter que ntp est requis sur le serveur en question.
Ajouter un commentaire

Vous pouvez ajouter un commentaire en complétant le formulaire ci-dessous. Le format doit être plain text. Les url et les courriels sont transformés en liens cliquables. Les commentaires sont modérés.