Outils pour utilisateurs

Outils du site


all:bibles:linux:openvpn

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
all:bibles:linux:openvpn [2025/09/23 11:02] – [Configuration] omeylhocall:bibles:linux:openvpn [2025/09/23 11:09] (Version actuelle) – [Activation VPN] omeylhoc
Ligne 1: Ligne 1:
 +====== openVPN ======
  
 +----
 +
 +===== Installation =====
 +
 +==== openvpn ====
 +
 +Normalement déjà installé avec Ubuntu mais en version 2. Pour installer openvpn3 suivre la procédure suivante :
 +
 +<code bash>
 +sudo apt purge openvpn
 +sudo mkdir -p /etc/apt/keyrings && curl -fsSL https://packages.openvpn.net/packages-repo.gpg | sudo tee /etc/apt/keyrings/openvpn.asc
 +DISTRO=$(lsb_release -c -s)
 +echo "deb [signed-by=/etc/apt/keyrings/openvpn.asc] https://packages.openvpn.net/openvpn3/debian $DISTRO main" | sudo tee /etc/apt/sources.list.d/openvpn-packages.list
 +sudo apt update
 +sudo apt install openvpn3
 +</code>
 +
 +==== easy-rsa ====
 +
 +<code bash>
 +sudo apt install easy-rsa
 +</code>
 +
 +----
 +
 +===== Création des certificats sur le serveur =====
 +
 +==== Configuration autorité de certification ====
 +
 +<code bash>
 +sudo make-cadir /etc/openvpn/easy-rsa
 +</code>
 +
 +  * Editer le fichier <color #00a2e8>/etc/openvpn/easy-rsa/vars</color> pour l'adapter à ses besoins.
 +
 +<code bash>
 +set_var EASYRSA "${0%/*}"
 +set_var EASYRSA_OPENSSL "openssl"
 +set_var EASYRSA_PKI             "$PWD/pki"
 +set_var EASYRSA_KEY_SIZE        2048
 +set_var EASYRSA_ALGO            rsa
 +set_var EASYRSA_CA_EXPIRE       3650
 +set_var EASYRSA_TEMP_FILE       "$EASYRSA_PKI/extensions.temp"
 +</code>
 +
 +  * Pour vérifier en listant les lignes non vides ne commençant pas par un commentaire :
 +
 +<code bash>
 +cat vars | awk 'NF>0' | grep -v "^#"
 +</code>
 +
 +=== Création de l'infrastructure ===
 +
 +<code bash>
 +sudo -s
 +cd /etc/openvpn/easy-rsa
 +./easyrsa init-pki
 +./easyrsa build-ca nopass
 +</code>
 +
 +==== Certificats et clefs serveur ====
 +
 +  * Génération certificat
 +
 +<code bash>
 +./easyrsa gen-req <nomserveur> nopass
 +</code>
 +
 +  * Signature du certificat
 +
 +<code bash>
 +./easyrsa gen-dh
 +./easyrsa sign-req server <nomserveur>
 +</code>
 +
 +  * Copier certificats et clefs
 +
 +<code bash>
 +cp pki/dh.pem pki/ca.crt pki/issued/<nomserveur>.crt pki/private/<nomserveur>.key /etc/openvpn
 +</code>
 +
 +==== Certificats client ====
 +
 +=== Création certificats ===
 +
 +<code bash>
 +./easyrsa gen-req <nomclient> nopass
 +./easyrsa sign-req client <nomclient>
 +</code>
 +
 +=== Transfert fichiers ===
 +
 +Copier les fichiers suivant sur le client dans le répertoire <color #00a2e8>/etc/openvpn</color>
 +
 +  * pki/ca.crt
 +  * pki/issued/<nomclient>.crt
 +  * pki/private/<nomclient>.key
 +
 +----
 +
 +[[all:bibles:linux:openvpn|Haut de page]]
 +
 +===== Configuration Serveur =====
 +
 +==== Configuration ====
 +
 +=== Fichier ===
 +
 +  * Copier le fichier d'exemple
 +
 +<code bash>
 +sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/<nomserveur>.conf.gz
 +sudo gzip -d /etc/openvpn/<nomserveur>.conf.gz
 +</code>
 +
 +  * Mettre à jour le fichier <color #00a2e8>/etc/openvpn/<nomserveur>.conf</color> en vérifiant le chemin des 4 fichiers créés précédemment
 +
 +<code bash>
 +ca ca.crt
 +cert <nomserveur>.crt
 +key <nomserveur>.key
 +dh dh2048.pem
 +</code>
 +
 +  * Autres paramètres intéressants :
 +
 +<code bash>
 +port 1195                                 ; port (par défaut 1194)
 +proto udp                                 ; possibilité de mettre udp4 pour IP V4
 +server 10.8.0.0 255.255.255.0             ; réseau utilisé par le VPN
 +comp-lzo                                  ; activer la compression
 +user nobody                               ; 
 +group nogroup                             ; pas d utilisateur et groupe particulier pour utilisation du VPN
 +log         /var/log/openvpn/openvpn.log  ; fichier de log (au lieu de syslog). Utiliser log ou log-append mais pas les 2.
 +log-append  /var/log/openvpn/openvpn.log  ; idem mais fichier pas effacé à chaque redémarrage.
 +verb 5                                    ; niveau de verbosité
 +</code>
 +
 +<note tip>Le paramètre **verb** permet de mettre un niveau d'information plus élevé pour le debug.</note>
 +
 +=== TLS ===
 +
 +  * Générer une clef pour le TLS
 +
 +<code bash>
 +sudo openvpn --genkey --secret ta.key
 +</code>
 +
 +=== IP forwarding ===
 +
 +  * Enlever le commentaire dans le fichier <color #00a2e8>/etc/sysctl.conf</color>
 +
 +<code bash>
 +net.ipv4.ip_forward=1
 +</code>
 +
 +  * Recharger sysctl
 +
 +<code bash>
 +sudo sysctl -p /etc/sysctl.conf
 +</code>
 +
 +==== Activation VPN ====
 +
 +<code bash>
 +sudo systemctl start openvpn@<nomserveur>
 +</code>
 +
 +==== Logs ====
 +
 +<code bash>
 +journalctl -u openvpn@<nomserveur> -xe
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:openvpn|Haut de page]]
 +
 +----
 +
 +===== Configuration client =====
 +
 +==== Configuration ====
 +
 +<code bash>
 +openvpn3 config-import --config /file/to/profile.ovpn --name <nom connexion> --persistent
 +openvpn3 config-acl --show --lock-down true --grant root --config <nom connexion>
 +</code>
 +
 +==== Lister les configurations ====
 +
 +<code bash>
 +openvpn3 configs-list --verbose
 +</code>
 +
 +==== Suppression d'une configuration ====
 +
 +<code bash>
 +openvpn3 config-remove --config <nom connexion>                          # suppression par nom config
 +openvpn3 config-remove --path /net/openvpn/v3/configuration/<xxxxxxxx>   # suppression par chemin (si plusieur config du même nom)
 +</code>
 +
 +==== Activation VPN ====
 +
 +<code bash>
 +sudo systemctl start openvpn3-session@<nom connexion>.service
 +</code>
 +
 +==== Logs ====
 +
 +<note tip>Possibilité de modifier le niveau de verbosité des logs dans le fichier de conf en mettant verb 5 (de 0 à 11)</note>
 +
 +<code bash>
 +journalctl -u openvpn@<nomclient> -xe
 +tail -f /var/log/syslog
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:openvpn|Haut de page]]
 +
 +===== Vérifications =====
 +
 +==== Côté serveur ====
 +
 +=== Service ===
 +
 +<code bash>
 +sudo systemctl status openvpn@<nomserveur>
 +</code>
 +
 +=== Tunnel ===
 +
 +Vérifier la présence de l'interface tun0
 +
 +<code bash>
 +ip addr
 +</code>
 +
 +<note important>Le port 1194 (ou autre) n'apparaîtra pas avec la commande **ss -tlna** </note>
 +==== Client ====
 +
 +=== Tunnel ===
 +
 +Vérifier la présence de l'interface tun0, vérifier les routes et tenter de pinger la gateway du réseau VPN
 +
 +<code bash>
 +ip addr
 +ip route
 +ping <IP gateway>
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:openvpn|Haut de page]]
 +
 +
 +===== Sources =====
 +
 +  * [[https://ubuntu.com/server/docs/service-openvpn|OpenVPN]]
 +  * [[https://openvpn.net/cloud-docs/tutorials/configuration-tutorials/connectors/operating-systems/linux/tutorial--learn-to-install-and-control-the-openvpn-3-client.html|OpenVPN3]]
 +
 +----
 +[[all:bibles:linux:openvpn|Haut de page]]