Skip to main content

Mise en place OpenVPN Serveur avec Docker

Image Docker utilisé : https://hub.docker.com/r/kylemanna/openvpn/

Mise en place du serveur

Dans un premier temps, nous allons cloner le dépôt :

git clone https://github.com/kylemanna/docker-openvpn.git

Dès le téléchargement terminé, rendez-vous dans le dossier :

cd docker-openvpn

Nous allons pouvoir construire l'image avec les éléments à jour :

docker build -t server_vpn .

TCP vs UDP ?

On utilise généralement le protocole UDP pour une connexion VPN. Il est malgré tout possible de réaliser cette connexion en TCP.

La configuration TCP offre les avantages suivants :

  • Plus stable puisque le protocole TCP garantit l'émission des paquets,
  • By-Pass des firewalls : Il est rare de bloquer le port 80 et 443 en TCP,

Par contre de ce fait le protocole TCP est plus lent.

De ce fait le protocole UDP offrira comme gros avantage d'être beaucoup plus rapide. Par contre il peut être déconseillé dans des cas où la connexion n'est pas stable ou si votre infrastructure ne le permet pas.

Génération des certificats

Nous devons maintenant générer les clés PKI du serveur. Le script d'initialisation, en plus de créer la clé privée,  va également générer le certificat CA. Un mot de passe vous sera demandé afin de sécuriser votre clé privée.

docker run -v $PWD/openvpn-etc:/etc/openvpn --rm -it server_vpn ovpn_initpki

Le script exécuté sera cette fois-ci : ovpn_initpki

Une fois ces éléments générés, vous pouvez lancer le serveur :

docker run -v $PWD/openvpn-etc:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN server_vpn

Enfin, nous allons pouvoir créer les comptes utilisateurs pour connecter au VPN. L'image possède encore un outil pour faciliter notre travail :

docker run -v $PWD/openvpn-etc:/etc/openvpn --rm -it server_vpn easyrsa build-client-full user1 nopass

Le mot de passe de votre certificat PKI vous sera demandé.

Nous venons d'ajouter un compte utilisateur avec le nom user1, et dans le cadre de notre tutoriel, j'ai utilisé l'option nopass. Avec cette option, l'utilisateur peut se connecter directement avec le fichier de configuration.

Cela signifie également que si quelqu'un obtient le fichier de configuration que nous venons de générer en quelques secondes, il pourra alors se connecter à notre serveur VPN sans avoir besoin d'une autre authentification.

 

Dernière étape de notre installation, nous allons exporter le fichier de configuration qui sera envoyé à l'utilisateur pour se connecter :

docker run -v $PWD/openvpn-etc:/etc/openvpn --rm server_vpn ovpn_getclient user1 > monuser.ovpn