OpenVPN sur Ubuntu

Openvpn_logoL’installation d’OpenVPN présente un certain niveau de difficulté et il y’a des choses a bien garder a l’esprit.
En premier lieu, les étapes a réaliser:

1) Installer OpenVPN
2) Installer Webmin et le module de controle de OpenVPN
3) Creer l’autorité de certification
4) Creer les deux certificats (serveur et client)
5) Creer la connexion VPN partie serveur
6) Creer la connexion VPN partie cliente
7) Récuperer l’export de la partie cliente et sur l’ordinateur client dans le dossier correspondant
8) La connexion est opérationnelle.

En second lieu, le fait que l’on aura 3 réseaux: le réseau local du serveur VPN, le sous réseau de connexion, et le réseau local du client. Aucun des 3 ne doit être identiques sinon aucun routage n’est possible.
Dans cet exemple:
– le réseau local sera 192.168.10.0/24 au sein duquel, le serveur vpn sera en 192.168.10.5 sur sa carte eth0,
– le réseau de connexion 10.10.10.0/24. le réseau local du client est inconnu mais devra OBLIGATOIREMENT être différents de ces deux la.

1) Installer OpenVPN:

sudo apt-get install openvpn

Le VPN aura une interface réseau séparé (tun0) de l’interface de base (eth0) donc pour que les clients connecté puis accéder au réseau local il y aura 2 choses a effectuer:

  • S’assurer que le serveur VPN achemine les paquets entre le réseau de connexion et le réseau local en activant routage de paquets:
sudo vi /etc/sysctl.conf

décommenter la ligne
net.ipv4.ip_forward=1
puis sauvegarder et sortir.

  • Pour que les appareils du réseau local puisse répondent aux client connectés, il est nécessaire qu’ils puisse acheminer cette réponse. Les appareils ne connaissent qu’une adresse de sortie: la passerelle par défaut, donc pour des raisons pratique, c’est sur celle ci qu’il sera souhaitable d’ajouter la route vers les clients vpn pointant sur le serveur VPN.

Dans notre exemple, la route sera du style:

route add 10.10.10.0 mask 255.255.255.0 192.168.10.5

=>   où 192.168.10.5 est l’ip lan du serveur vpn et 10.10.10.0/24 le sous réseau de connexion vpn.

Il existe un cas d’exception: Free qui considère que leur usagers sont trop basiques pour avoir besoin de route statique donc, contrairement au livebox, sfr box et autres petits routeurs meme de premier prix, la Freebox n’intègre aucune route statique. Pour les malheureux freenautes, dont je fais parti, soit on transforme le serveur VPN en routeur pour en faire la passerelle par défaut du réseau, soit il faudra alors définir la route statique en persistant dans tous les appareil nécessitant un dialogue avec les clients VPN.

2) Installer webmin

(voir tuto webmin)

Installer le module openvpn en spécifiant le liens de téléchargement dans l’interface de webmin
L’adresse est:
http://www.openit.it/downloads/OpenVPNadmin/openvpn-2.6.wbm.gz

OPENVPN-1-install-module-webmin-openvpnDans Webmin =>Configuration de Webmin =>Module Webmin
recharger le modules => le module OpenVPN+CA est présent

OPENVPN-2-Apres-install-module-webmin-openvpn

3) Créer l’autorité de certification:

Remplir le formulaire puis valider.

IMPORTANT: contrairement a cette capture d’écran State doit contenir LE CODE du pays c’est a dire FR sinon cela provoque un message d’erreur.

OPENVPN-3-creation-autorite-certificationLa création dure un certain temps puis se termine:

OPENVPN-5-creation-autorite-termine

Ensuite cliquer sur Retourner a OpenVPN Administration

4) Créer les deux certificats (serveur et client):

Cliquer sur Certification authority list puis sur la droite de la ligne de votre autorité de certification sur list

D’abord le certificat serveur:

OPENVPN-7-creation-certificat-serveurPuis cliquer sur Sauvegarder
Ensuite le certificat client

OPENVPN-8-creation-certificat-client

Puis cliquer sur Sauvegarder

Normalement on doit a ce moment avoir 2 certificats avec le statut « active »:OPENVPN-9-resultat-creation-certificats

Cliquez sur « Retourner à OpenVPN Administration ».

5) Creer la connexion VPN partie serveur:

Sur l’écran OpenVPN Administration cliquez sur le bouton « VPN list » puis sur le bouton « New VPN server »

Creer la connexion Vpn en définissant
– le certificat sur le certificat serveur créé juste avant,
– L’interface désigner dans « Network Device for Bridge » est celle qui correspond a votre Lan. Dans cet exemple, c’est eth0
– la plage ip distribué hors du réseau lan du serveur vpn, par exemple 10.10.10.0/24
– l’algorithme d’authentification « Encrypt packets with cipher algorithm (option cipher) » doit être sur AES 256 CBC256 sinon ne fonctionne pas
– Le changement du port d’écoute peut être une bonne idée pour améliorer la sécurité.

OPENVPN-b-creation-vpn-server-definition-dhcpet en paramètres envoyés (a changer selon vos paramètres LAN):

push « route 192.168.10.0 255.255.255.0 »
push « dhcp-option DNS 192.168.10.3 »

Pour permettre le routage et la résolution DNS du réseau local derrière le serveur VPN.

et éventuellement: push « redirect-gateway » pour rediriger tout le trafic sur le VPN

OPENVPN-c-creation-vpn-server-definition-options-dhcppuis sauvegarder

Puis, très important, cliquer sur START pour l’activer.

6) Créer la connexion VPN partie cliente:

Cliquer sur Client List

Puis cliquer sur New VPN Client

OPENVPN-d-creation-vpn-client-1
Choisir le certificat client
Puis saisir l’ip externe (l’ip publique ou l’alias internet) de votre serveur VPN.
Note: Celle ci devra être statique ou aliassé avec un DNS dynamique.

OPENVPN-e-creation-vpn-client-1
puis Sauvegarder
Ensuite cliquer sur Export  pour récupérer le package de configuration pour l’ordinateur client a désarchiver puis copier dans le répertoire conf de celui-ci.

7) Vérification:

  • Avant de lancer la connexion un « sudo service openvpn restart » pour s’assurer de l’application des paramètres
  • S’assurer que dans le routeur (ou box) le port spécifié (ici 1194 udp) est ouvert vers l’ip du serveur VPN (ici 192.168.10.5)
  • Faire un ifconfig pour voir si l’interface tun0 est bien crée dans la liste des interfaces du serveur Ubuntu.

Il ne reste plus qu’a se connecter avec l’ordinateur client.

8) Références:

http://doc.ubuntu-fr.org/openvpn