Installer et configurer OpenVPN sur Debian
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:
- le serveur DNS Bind, comme décrit par Configurer un serveur DNS Bind sur Debian.
- le backport du paquet openvpn en version 2.3.2 (et de iproute et iproute2) depuis Debian Testing, comme décrit par Backporter un packet Debian de testing vers stable (résout les problèmes entre un client en version 2.3.2 et un serveur en version 2.2).
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
- Merci aux développeurs d'OpenVPN
- Merci à Charles Duffy pour la création du script client.up.
- Merci à Felix Knecht pour son aide.
- Merci à Alex Nogard (en / fr) pour Install OpenVPN on Raspberry PI (Debian Wheezy) (en).
- Merci à Cabusar (fr) pour Openvpn, route et nat (fr).