logo rss

Comment configurer un serveur OpenVPN avec le routage sur Windows Server 2019

OpenVPN Logo

Nous allons voir ici comment mettre en place un serveur OpenVPN sous Microsoft Windows Serveur.

Il sagit de la suite de mon précédent "Tutoriel" que j'ai écris (le lien ici) sous Windows 2019 (ce qui ne change pas grand chose) mais avec l'activation de la fonctionnalité de routage qui permet de joindre le LAN depuis notre client distant.

OpenVPN est un VPN performant, qui a plusieurs avantages : il est gratuit, compatible avec les principaux systèmes d'exploitation, facile à implémenter et hautement paramétrable.

Schéma réseau

Diagramme montrant la connexion réseau entre le serveur OpenVPN et le client avec les configurations IP et les chemins de connexion

Configuration Serveur

  • Propriétés du serveur OpenVPN :
    • OS : Windows Server 2019
    • Role : OpenVPN Server
    • IP : 192.168.0.254

Prérequis

OpenSSL

OpenSSL Logo

Pour créer les certificats de connexion, nous devrons installer OpenSSL. J'utilise personnelement les packages proposés sur slproweb.com.

Télécharger OpenSSL

Télécharger la dernière version d'OpenSSL Light.

Téléchargement d'OpenSSL sur le site slproweb
Installer OpenSSL
  • Accepter le Contrat de Licence :
Fenêtre d'installation d'OpenSSL affichant l'accord de licence avec l'option d'acceptation de l'accord sélectionnée
  • Choisir le dossier d'installation :
Fenêtre d'installation d'OpenSSL invitant à sélectionner l'emplacement de destination de l'installation sous Windows
  • Définir le dossier du menu démarrer :
Fenêtre d'installation d'OpenSSL demandant de sélectionner le dossier du menu Démarrer pour les raccourcis du programme sous Windows
  • Choisir de copier les DLLs OpenSSL dans le dossier bin :
Fenêtre d'installation d'OpenSSL demandant de sélectionner des tâches supplémentaires, avec l'option de copier les binaires dans le répertoire bin d'OpenSSL sélectionnée
  • Cliquer sur install :
Fenêtre d'installation d'OpenSSL affichant un résumé des paramètres et une invite à l'installation sous Windows
  • Cliquer sur Finish tpour fermer (et si vous le pouvez, faites un don pour supporter l'équipe de développement 😊) :
Fenêtre d'achèvement de l'assistant d'installation d'OpenSSL avec des options de dons et un bouton Terminer
Ajouter OpenSSL dans les variables d'environement

Nous allons avoir besoin d'ajouter OpenSSL dans les variables d'environnement.

  • Exécuter SystemPropertiesAdvanced pour ouvrir les Propriétés Système :
Boîte de dialogue Exécuter de Windows avec « SystemPropertiesAdvanced » pour ouvrir les propriétés avancées du système avec des privilèges administratifs.
  • Cliquer sur Variables d'Environnement… :
Fenêtre Propriétés du système Windows avec le bouton Variables d'environnement en surbrillance pour accéder aux paramètres de l'environnement du système.
  • Éditer la variable système Path :
Fenêtre des variables d'environnement de Windows montrant la variable Path du système avec l'option Edit en surbrillance
  • Cliquer sur Nouveau et ajouter %ProgramFiles%\OpenSSL-Win64\bin :
Fenêtre de modification des variables d'environnement dans Windows montrant le chemin OpenSSL ajouté, avec une flèche pointant vers le bouton «Nouveau».
  • Ouvrir un prompt Windows et vérifier que l'on peut exécuter une commande openssl :
Command Prompt showing the command to check OpenSSL version and its output

Ajouter une règle dans le pare-feu Windows

Windows Firewall logo

Nous avons besoin d'ouvrir le port 1194 en udp pour autoriser les flux OpenVPN.

  • On pourra au choix utiliser la Console de Management de pare-feu Windows ou entrer cette commande dans un prompt Administrateur.
C:\Windows\system32>netsh advfirewall firewall add rule name="OpenVPN" dir=in localport=1194 remoteport=0-65535 protocol=UDP action=allow remoteip=any localip=any
  • Également possible avec PowerShell :
PS C:\ > New-NetFirewallRule -DisplayName "OpenVPN" -Direction Inbound -Protocol UDP -LocalPort 1194 -Action Allow

Installation d'OpenVPN

Se rendre sur le site officiel d'OpenVPN et télécharger ici la dernière version de l'installeur msi.

Command Prompt showing the command to check OpenSSL version and its output
  • Comme nous voulons installer OpenVPN en mode serveur nous allons choisir Customize :
Fenêtre d'installation d'OpenVPN montrant les options Installer maintenant ou Personnaliser, avec une flèche pointant vers le bouton Personnaliser
  • On active le OpenVPN Service pour que le service soit actif au démarrage de Windows :
Fenêtre d'installation personnalisée d'OpenVPN montrant les options de sélection des fonctionnalités, avec le service OpenVPN en surbrillance
  • On installe également EasyRsa afin de pouvoir créer les certificats serveur et clients :
Fenêtre d'installation personnalisée d'OpenVPN montrant la sélection des scripts de gestion de certificats EasyRSA 3 avec un bouton Installer maintenant en surbrillance
  • Une fois terminé on clique sur Close :
Fenêtre d'installation d'OpenVPN terminée avec un bouton Fermer en surbrillance

Les Certificats

Création de l'autorité de certification (CA) et génération des certificats et clés pour le serveur et clients

Ici on mettra en place une pki pour la création de nos certificats serveur et clients.

  • Ouvrir l'invite de commande en tant qu'administrateur :
Les résultats de la recherche Windows montrent que l'application de bureau Command Prompt est celle qui correspond le mieux.
  • Et entrer les commandes suivantes pour entrer dans le shell EasyRSA :
C:\Windows\system32> cd "C:\Program Files\OpenVPN\easy-rsa" C:\Program Files\OpenVPN\easy-rsa> .\EasyRSA-Start.bat
  • Supprimer la configuration existante (normalement inutile) :
# ./easyrsa clean-all
  • Initialiser notre pki, entrer yes pour confirmer :
# ./easyrsa init-pki
L'interpréteur de commandes EasyRSA affiche la commande d'initialisation de la PKI avec un message de confirmation demandant de taper « oui » pour la suppression.
  • Créer son autorité de certification :
# ./easyrsa build-ca nopass […] Enter PEM pass phrase:MyPassW0rd Verifying - Enter PEM pass phrase:MyPassW0rd […] Common Name (eg: your user, host, or server name) [Easy-RSA CA]:ovpn
  • Créer la paire de clé pour le serveur :
# ./easyrsa build-server-full server nopass […] Enter pass phrase for c:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key:MyPassW0rd
  • Générer les paramètres Diffie Hellman :
# ./easyrsa gen-dh
  • Générer les certificats client :
# ./easyrsa build-client-full client01 nopass […] Enter pass phrase for c:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key:MyPassW0rd

Déplacer les certificats dans les bons dossiers

  • Déplacer les fichiers suivants (présents dans les répertoires C:\Program Files\OpenVPN\easy-rsa\pki, C:\Program Files\OpenVPN\easy-rsa\pki\issued et C:\Program Files\OpenVPN\easy-rsa\pki\private) :
    • ca.crt
    • dh.pem
    • server.crt
    • server.key
  • Dans C:\Program Files\OpenVPN\config-auto et C:\Program Files\OpenVPN\config.
Les résultats de la recherche Windows montrent que l'application de bureau Command Prompt est celle qui correspond le mieux.

Fichier de Configuration

  • Éditer avec les droits administrateur le fichier C:\Program Files\OpenVPN\config-auto\server.ovpn :
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh.pem server 10.50.8.0 255.255.255.0 ifconfig-pool-persist ipp.txt keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log verb 3

Redémarrer le service OpenVPN

Le service OpenVPN doit être redémarré pour que la modification du fichier de configuration soit prise en compte.

  • Ouvrir la console de gestion des services :
Exécuter la boîte de dialogue dans Windows avec la commande services.msc pour ouvrir la console de gestion des services.
  • Et faire un clic droit sur OpenVPNService, puis Redémarrer :
console de gestion des services sous Windows montrant le service OpenVPNService avec l'option Redémarrer en surbrillance
  • Ou , en tant qu'administrateur depuis une console :
C:\Windows\system32>net stop openvpnservice C:\Windows\system32>net start openvpnservice
  • Ou, avec PowerShell :
PS C:> Restart-Service OpenVPNService -PassThru

Client OpenVPN

  • Client OpenVPN :
    • OS : Windows 10
    • Rôle : Client OpenVPN

Installation d'OpenVPN

On téléchargera le même package que pour le serveur, mais ici l'installation par défaut sera suffisante.

Copie des certificats depuis le Serveur

  • Depuis le Serveur récupérer les fichiers suivants (depuis les dossiers C:\Program Files\OpenVPN\easy-rsa\pki, C:\Program Files\OpenVPN\easy-rsa\pki\issued et C:\Program Files\OpenVPN\easy-rsa\pki\private) :
    • ca.crt
    • client01.crt
    • client01.key
  • Et les coller dans C:\Program Files\OpenVPN\config.
L'explorateur de fichiers montre le dossier de configuration OpenVPN avec les fichiers de certificats et de clés.

Fichier de configuration

  • En tant qu'administrateur, éditer le fichier C:\Program Files\OpenVPN\config\client.ovpn :
client dev tun proto udp remote OPENVPN_IP 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client01.crt key client01.key #comp-lzo verb 3

Établir la connexion VPN

  • Ouvrir OpenVPN en tant qu'administrateur :
Menu contextuel montrant l'option d'exécuter l'interface graphique OpenVPN en tant qu'administrateur sur Windows
  • Démarrer la connexion :
Menu d'icônes de la barre des tâches de l'interface graphique OpenVPN montrant l'option Connect en surbrillance
  • Un pop-up viendra confirmer la connexion :
Notification de l'interface graphique OpenVPN indiquant que le client est désormais connecté avec une adresse IP attribuée, affichée dans la barre des tâches.

Accès au Serveur

Une fois le VPN établit, nous pouvons joindre le serveur depuis l'adresse 10.50.8.1.

L'Explorateur de fichiers et l'Invite de commandes montrent une connexion réseau réussie et une réponse ping à l'adresse IP 10.50.8.1 via OpenVPN.

⚠️ Troubleshooting : Suite à une mise à jour Windows, je ne pouvais plus avoir accès aux ressources du serveur (le partage de fichiers et ping étaient KO alors même que le VPN était établi), j'ai du réparer l'installation d'OpenVPN (sur le serveur en relançant le programme d'installation) pour que cela fonctionne de nouveau.

Activer le routage

À ce stade nous avons un serveur OpenVPN fonctionnel qui est joignable depuis notre client distant. Mais comment joindre notre serveur sur son ip privée (192.168.0.254 ici) ou d'autres machines (192.168.0.200 ici) de notre réseau local? C'est ce que nous allons voir en activant le routage sur notre serveur OpenVPN Windows.

Diagramme illustrant la configuration du routage réseau entre le serveur OpenVPN, le client et le réseau local avec les adresses IP et les chemins de connexion

Serveur OpenVPN

Fichier de configuration

  • Éditer en tant qu'administrateur le fichier C:\Program Files\OpenVPN\config-auto\server.ovpn et ajouter la ligne push "route add 192.168.0.0 255.255.255.0" pour annoncer le réseau à notre client distant :
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh.pem server 10.50.8.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 192.168.0.0 255.255.255.0" push "dhcp-option DNS 192.168.0.200" keepalive 10 120 #comp-lzo persist-key persist-tun status openvpn-status.log verb 3
  • Redémarrer le service OpenVPNService, exemple ici avec PowerShell :
PS C:> Restart-Service OpenVPNService -PassThru

Installer la fonctionnalité de routage

  • En tant qu'administrateur, ouvrir PowerShell et entrer la commande suivante pour installer la fonctionnalité de routage :
PS C:> Install-WindowsFeature -Name Routing -IncludeManagementTools

Configuration du routage

  • Ouvrir la console Routage et accès distant en exécutant rrasmgmt.msc :
Exécuter la boîte de dialogue dans Windows avec la commande rrasmgmt.msc pour ouvrir la console de gestion RRAS avec des privilèges administratifs.
  • Faire un clic droit au niveau du nom du serveur puis sélectionner Configurer et activer le routage et l'accès à distance :
Console de routage et d'accès à distance montrant l'option de configuration et d'activation du routage et de l'accès à distance avec une flèche pointant vers elle.
  • Cliquer sur Suivant :
Écran de démarrage de l'assistant de configuration du serveur de routage et d'accès distant avec le bouton « Suivant » en surbrillance
  • Choisir Configuration personnalisée :
L'assistant de configuration du serveur de routage et d'accès distant montre l'option de configuration personnalisée sélectionnée, avec le bouton « Suivant » en surbrillance.
  • Selectionner NAT et routage réseau :
Assistant de configuration du serveur de routage et d'accès distant avec les options de routage NAT et LAN sélectionnées, et le bouton Suivant mis en évidence.
  • Enfin cliquer sur Terminer :
Fin de l'assistant d'installation du serveur de routage et d'accès distant avec un résumé des sélections et le bouton Terminer en surbrillance.
  • Puis sur Démarrer le service. A ce stade le Client distant devrait être en mesure de joindre l' interface LAN (192.168.0.254 ici) du serveur :
La boîte de dialogue Routage et accès distant invite à démarrer le service et le bouton Démarrer le service est en surbrillance.
  • En vue de pouvoir atteindre notre réseau LAN nous avons besoin de créer une règle NAT :
Console de routage et d'accès à distance montrant l'option de création d'une nouvelle interface NAT avec une flèche pointant vers elle.
  • Choisir l'Interface LAN Network (192.168.0.254 ici) et cliquer sur OK :
Fenêtre Nouvelle interface pour NAT dans Routage et accès distant, montrant la sélection de l'interface Ethernet1 avec le bouton OK en surbrillance.
  • Choisir Interface publique connectée à Internet et cocher Activer NAT sur cette interface avant de valider en cliquant sur OK :
Fenêtre des propriétés de la traduction d'adresses de réseau montrant l'option d'activation de la NAT sur une interface publique avec le bouton OK en surbrillance.

Client OpenVPN

Logo Windows 10
  • Ouvrir une invite de commande et entrer route print pour vérifier que notre route vers le réseau 192.168.0.0 a été correctement poussée par le serveur :
Invite de commande montrant la sortie de la commande « route print » avec les détails de l'itinéraire en surbrillance
  • Vérifier que l'on puisse correctement joindre notre réseau privé :
Fenêtres de l'invite de commande montrant des résultats de ping continus vers deux adresses IP différentes, 192.168.0.200 et 192.168.0.254
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

adresse mail de contact