logo rss

How To set up OpenVPN Server on Windows

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

Schéma réseau d'une infrastructure OpenVPN sous Windows

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 :
OpenSSL installation | Contrat de Licence
  • Choisir le dossier d'installation :
OpenSSL installation | Choix du dossier d'installation
  • DĂ©finir le dossier du menu dĂ©marrer :
OpenSSL installation | Définir le menu démarrer
  • Choisir de copier les DLLs OpenSSL dans le dossier bin :
OpenSSL installation | Choix de l'emplacement des DLLs OpenSSL
  • Cliquer sur install :
OpenSSL installation | Lancement de l'installation
  • Cliquer sur Finish tpour fermer (et si vous le pouvez, faites un don pour supporter l'Ă©quipe de dĂ©veloppement 😊) :
OpenSSL installation | page de dons
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 :
Exécuter SystemPropertiesAdvanced
  • Cliquer sur Variables d'Environnement… :
Windows | Propriétés SystÚme
  • Éditer Path :
Windows | FenĂštre des variables d'environement
  • Cliquer sur Nouveau et ajouter %ProgramFiles%\OpenSSL-Win64\bin :
Edit environment variable
  • Ouvrir un prompt Windows et vĂ©rifier que l'on peut exĂ©cuter une commande openssl :
openssl version test

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.

Site de téléchargement d'OpenVPN
  • Comme nous voulons installer OpenVPN en mode serveur nous allons choisir Customize :
Installation d'OpenVPN Windows
  • On active le OpenVPN Service pour que le service soit actif au dĂ©marrage de Windows :
Installation d'OpenVPN Windows
  • On installe Ă©galement EasyRsa afin de pouvoir crĂ©er les certificats serveur et clients :
Installation d'OpenVPN Windows
  • Une fois terminĂ© on clique sur Close :
Fermeture de l'installateur OpenVPN

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 :
L'application console windows dans le menu démarrer
  • 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
OpenVPN | Easy RSA Shell 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 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.
Dossier config-auto OpenVPN sur Windows

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 :
Windows exécuter, services.msc
  • Et faire un clic droit sur OpenVPNService, puis RedĂ©marrer :
Windows services management console | redémarrer le service openvpnservice.
  • 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.
Contenu du dossier C:\Program Files\OpenVPN\config dans Windows 10.

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 :
Windows 10, Exécuter OpenVPN en tant qu'administrateur.
  • DĂ©marrer la connexion :
Windows 10, OpenVPN se connecter.
  • Un pop-up viendra confirmer la connexion :
Windows 10, OpenVPN, pop up de connexion .

AccĂšs au Serveur

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

Windows 10, OpenVPN, test ping.

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

Schéma Windows OpenVPN with routing Network Scheme

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 :
Windows | Exécuter rrasmgmt.msc
  • Faire un clic droit au niveau du nom du serveur > Configurer et activer le routage et l'accĂšs Ă  distance :
Windows | Routing and remote access console, Configure and Enabme Routing and Remote Access
  • Cliquer sur Suivant :
Windows | Routing and remote access console, Welcome Wizard
  • Choisir Configuration personnalisĂ©e :
Windows | Routing and remote access console, Custom configuration
  • Selectionner NAT et routage rĂ©seau :
Windows | Routing and remote access console, selecting NAT and LAN routing configuration
  • Enfin cliquer sur Terminer :
Windows | Routing and remote access console, Finish Wizard
  • 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 :
Windows | Routing and remote access console, Start the service box
  • En vue de pouvoir atteindre notre rĂ©seau LAN nous avons besoin de crĂ©er une rĂšgle NAT :
Windows | Routing and remote access console, NAT, New interface
  • Choisir l'Interface LAN Network (192.168.0.254 ici) et cliquer sur OK :
Windows | Routing and remote access console, selecting NAT interface
  • Choisir Interface publique connectĂ©e Ă  Internet et cocher Activer NAT sur cette interface avant de valider en cliquant sur OK :
Windows | Routing and remote access console, configuring NAT interface

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 :
Windows | commande route print
  • VĂ©rifier que l'on puisse correctement joindre notre rĂ©seau privĂ© :
Windows | ping depuis deux invites de commande
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

adresse mail de contact