# Créer un serveur OpenVPN sur Debian > Créer un serveur OpenVPN sur Debian et s'y connecter avec un client. Publié le 2021-10-21 | Mis à jour le 2025-01-12 | Tags: openvpn https://xsec.fr/gnu-linux/openvpn-server/ --- import Callout from '@shared/components/Callout.astro' import { Steps, Step } from '@/components/ui/steps' import { Collapsible } from '@shared/components/ui/collapsible' import { Tree, Folder, File } from '@shared/components/ui/file-tree' ## Configuration du serveur ```sh sudo apt update && apt install openvpn ``` easy-rsa est utilisé pour générer les certificats. ```sh sudo cp -pr /usr/share/easy-rsa /etc/openvpn/server/ && cd /etc/openvpn/server/easy-rsa ``` ```sh cp vars.example vars && nano vars ``` - Rechercher le bloc suivant : ```sh title="/etc/openvpn/server/easy-rsa/vars" # Organizational fields (used with 'org' mode and ignored in 'cn_only' mode.) # These are the default values for fields which will be placed in the # certificate. Don't leave any of these fields blank, although interactively # you may omit any specific field by typing the "." symbol (not valid for # email.) #set_var EASYRSA_REQ_COUNTRY "US" #set_var EASYRSA_REQ_PROVINCE "California" #set_var EASYRSA_REQ_CITY "San Francisco" #set_var EASYRSA_REQ_ORG "Copyleft Certificate Co" #set_var EASYRSA_REQ_EMAIL "me@example.net" #set_var EASYRSA_REQ_OU "My Organizational Unit" # Choose a size in bits for your keypairs. The recommended value is 2048. Using # 2048-bit keys is considered more than sufficient for many years into the # future. Larger keysizes will slow down TLS negotiation and make key/DH param # generation take much longer. Values up to 4096 should be accepted by most # software. Only used when the crypto alg is rsa (see below.) ``` - Décommenter les lignes et entrer votre configuration : ```sh title="/etc/openvpn/server/easy-rsa/vars" set_var EASYRSA_REQ_COUNTRY "FR" set_var EASYRSA_REQ_PROVINCE "France" set_var EASYRSA_REQ_CITY "maville" set_var EASYRSA_REQ_ORG "xsec" set_var EASYRSA_REQ_EMAIL "test@gmail.com" set_var EASYRSA_REQ_OU "it" ``` - Ici sans mot de passe, en production il est recommandé d'en définir un. ```sh ./easyrsa init-pki ``` ```sh ./easyrsa build-ca nopass ``` ```sh title="./easyrsa build-ca nopass" Note: using Easy-RSA configuration from: /etc/openvpn/server/easy-rsa/vars Using SSL: openssl OpenSSL 1.1.1k 25 Mar 2021 Generating RSA private key, 2048 bit long modulus (2 primes) .............................+++++ ..................................+++++ e is 65537 (0x010001) You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/openvpn/server/easy-rsa/pki/ca.crt ``` - `Common Name [Easy-RSA CA]:` Appuyez sur Entrée pour garder le nom par défaut. - Ici sans mot de passe, en production il est recommandé d'en définir un. ```sh ./easyrsa build-server-full server nopass ``` - Ici sans mot de passe, en production il est recommandé d'en définir un. ```sh ./easyrsa build-client-full client nopass ``` - Ce fichier sera utilisé pour la première connexion avec chiffrement symétrique ```sh ./easyrsa gen-dh ``` - Cette opération peut prendre du temps, selon la puissance de votre machine. ```sh openvpn --genkey tls-auth ta.key ``` - Copier l'ensemble du répertoire des fichiers générés du serveur et de l'Autorité de Certification vers `/etc/openvpn/` ```sh cp pki/issued/server.crt pki/private/server.key pki/ca.crt pki/dh.pem ta.key /etc/openvpn/ ``` - Copier l'ensemble du répertoire des fichiers générés du client vers `/etc/openvpn/client/` ```sh cp pki/issued/client.crt pki/private/client.key pki/ca.crt pki/dh.pem ta.key /etc/openvpn/client/ ``` ```sh cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server.conf && cd /etc/openvpn ``` - Ici nous copions le fichier de configuration dans le répertoire par défaut `/etc/openvpn/` et entrons dans le répertoire. ```sh mv /etc/openvpn/dh.pem /etc/openvpn/dh2048.pem ``` En le renommant en `dh2048.pem`, le fichier `server.conf` le reconnaîtra directement, puisque le nom de fichier `dh2048.pem` est spécifié par défaut. ```sh openvpn --config /etc/openvpn/server.conf ``` Si votre configuration est correcte, vous verrez dans la dernière ligne : ```plaintext Initialization Sequence Completed ``` Si vous avez déjà une instance d'openvpn en cours d'exécution, il peut y avoir un conflit avec l'installation (erreur: Alredy in use). Vous devez trouver le processus qui bloque le port du service. Vous pouvez lister la liste des ports utilisés : ```sh ss -na ``` Vous pouvez filtrer le port par défaut d'OpenVPN pour voir si une instance est en cours d'exécution : ```sh ss -pan | grep 1194 udp UNCONN 0 0 0.0.0.0:1194 0.0.0.0:* users:(("openvpn",pid=8660,fd=7)) ``` - Vous pouvez voir le `pid=8660` ici, vous devez arrêter ce processus : ```sh sudo kill -9 8660 ``` - Continuez l'opération jusqu'à ce que `ss -pan | grep 1194` ne retourne plus de résultat (adaptez le pid à chaque fois) ```sh systemctl daemon-reload && systemctl restart openvpn ``` Vous pouvez ajouter `systemctl enable openvpn` pour faire démarrer OpenVPN automatiquement avec la machine. ## Configuration du client ```sh apt update && apt install openvpn ``` Sur la machine cliente, déplacez-les vers `/etc/openvpn/` ```sh cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/ && nano /etc/openvpn/client.conf ``` ```txt title="/etc/openvpn/client.conf" ############################################## # Exemple de fichier de configuration # # OpenVPN 2.0 côté client pour se connecter # # à un serveur multi-clients. # # # # Cette configuration peut être utilisée # # par plusieurs clients, cependant chaque # # client doit avoir ses propres fichiers # # cert et key. # # # # Sous Windows, vous pouvez renommer ce # # fichier pour qu'il ait une extension .ovpn # ############################################## # Spécifier que nous sommes un client et que nous # allons récupérer certaines directives du fichier # de configuration depuis le serveur. client # Utiliser le même paramètre que celui que vous # utilisez sur le serveur. # Sur la plupart des systèmes, le VPN ne fonctionnera # pas sauf si vous désactivez partiellement ou # totalement le pare-feu pour l'interface TUN/TAP. ;dev tap dev tun # Windows a besoin du nom de l'adaptateur TAP-Win32 # depuis le panneau Connexions réseau # si vous en avez plus d'un. Sous XP SP2, # vous devrez peut-être désactiver le pare-feu # pour l'adaptateur TAP. ;dev-node MyTap # Nous connectons-nous à un serveur TCP ou # UDP ? Utilisez le même paramètre que # sur le serveur. ;proto tcp proto udp # Le nom d'hôte/IP et le port du serveur. # Vous pouvez avoir plusieurs entrées remote # pour équilibrer la charge entre les serveurs. remote my-server-1 1194 ;remote my-server-2 1194 ``` Remplacer `remote my-server-1 1194` par `remote IP_DU_SERVEUR_OPENVPN 1194` ```sh sudo systemctl daemon-reload && systemctl restart openvpn ``` Vous pouvez ajouter `systemctl enable openvpn` pour faire démarrer OpenVPN automatiquement avec la machine. ```sh openvpn --config /etc/openvpn/client.conf ``` Si votre configuration est correcte, vous verrez dans la dernière ligne : `Initialization Sequence Completed`