Comment configurer un serveur OpenVPN avec le routage sur Windows Server 2019
- Mise à jour le 27 oct. 2024
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

Configuration Serveur
- Propriétés du serveur OpenVPN :
- OS : Windows Server 2019
- Role : OpenVPN Server
- IP : 192.168.0.254
Prérequis
OpenSSL
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.

Installer OpenSSL
- Accepter le Contrat de Licence :

- Choisir le dossier d'installation :

- Définir le dossier du menu démarrer :

- Choisir de copier les DLLs OpenSSL dans le dossier bin :

- Cliquer sur install :

- Cliquer sur Finish tpour fermer (et si vous le pouvez, faites un don pour supporter l'équipe de développement 😊) :

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 :

- Cliquer sur Variables d'Environnement… :

- Éditer la variable système Path :

- Cliquer sur Nouveau et ajouter
%ProgramFiles%\OpenSSL-Win64\bin
:

- Ouvrir un prompt Windows et vérifier que l'on peut exécuter une commande openssl :

Ajouter une règle dans le pare-feu Windows

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.

- Comme nous voulons installer OpenVPN en mode serveur nous allons choisir Customize :

- On active le OpenVPN Service pour que le service soit actif au démarrage de Windows :

- On installe également EasyRsa afin de pouvoir créer les certificats serveur et clients :

- Une fois terminé on clique sur Close :

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 :

- 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

- 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
etC:\Program Files\OpenVPN\easy-rsa\pki\private
) :- ca.crt
- dh.pem
- server.crt
- server.key
- Dans
C:\Program Files\OpenVPN\config-auto
etC:\Program Files\OpenVPN\config
.

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 :

- Et faire un clic droit sur OpenVPNService, puis Redémarrer :

- 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 dossiersC:\Program Files\OpenVPN\easy-rsa\pki
,C:\Program Files\OpenVPN\easy-rsa\pki\issued
etC:\Program Files\OpenVPN\easy-rsa\pki\private
) :- ca.crt
- client01.crt
- client01.key
- Et les coller dans
C:\Program Files\OpenVPN\config
.

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 :

- Démarrer la connexion :

- Un pop-up viendra confirmer la connexion :

Accès au Serveur
Une fois le VPN établit, nous pouvons joindre le serveur depuis l'adresse 10.50.8.1
.

⚠️ 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.

Serveur OpenVPN
Fichier de configuration
- Éditer en tant qu'administrateur le fichier
C:\Program Files\OpenVPN\config-auto\server.ovpn
et ajouter la lignepush "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 :

- Faire un clic droit au niveau du nom du serveur puis sélectionner Configurer et activer le routage et l'accès à distance :

- Cliquer sur Suivant :

- Choisir Configuration personnalisée :

- Selectionner NAT et routage réseau :

- Enfin cliquer sur Terminer :

- 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 :

- En vue de pouvoir atteindre notre réseau LAN nous avons besoin de créer une règle NAT :

- Choisir l'Interface LAN Network (192.168.0.254 ici) et cliquer sur OK :

- Choisir Interface publique connectée à Internet et cocher Activer NAT sur cette interface avant de valider en cliquant sur OK :

Client OpenVPN
- 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 :

- Vérifier que l'on puisse correctement joindre notre réseau privé :
