====== openVPN ======
----
===== Installation =====
==== openvpn ====
Normalement déjà installé avec Ubuntu mais en version 2. Pour installer openvpn3 suivre la procédure suivante :
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
==== easy-rsa ====
sudo apt install easy-rsa
----
===== Création des certificats sur le serveur =====
==== Configuration autorité de certification ====
sudo make-cadir /etc/openvpn/easy-rsa
* Editer le fichier /etc/openvpn/easy-rsa/vars pour l'adapter à ses besoins.
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"
* Pour vérifier en listant les lignes non vides ne commençant pas par un commentaire :
cat vars | awk 'NF>0' | grep -v "^#"
=== Création de l'infrastructure ===
sudo -s
cd /etc/openvpn/easy-rsa
./easyrsa init-pki
./easyrsa build-ca nopass
==== Certificats et clefs serveur ====
* Génération certificat
./easyrsa gen-req nopass
* Signature du certificat
./easyrsa gen-dh
./easyrsa sign-req server
* Copier certificats et clefs
cp pki/dh.pem pki/ca.crt pki/issued/.crt pki/private/.key /etc/openvpn
==== Certificats client ====
=== Création certificats ===
./easyrsa gen-req nopass
./easyrsa sign-req client
=== Transfert fichiers ===
Copier les fichiers suivant sur le client dans le répertoire /etc/openvpn
* pki/ca.crt
* pki/issued/.crt
* pki/private/.key
----
[[all:bibles:linux:openvpn|Haut de page]]
===== Configuration Serveur =====
==== Configuration ====
=== Fichier ===
* Copier le fichier d'exemple
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/.conf.gz
sudo gzip -d /etc/openvpn/.conf.gz
* Mettre à jour le fichier /etc/openvpn/.conf en vérifiant le chemin des 4 fichiers créés précédemment
ca ca.crt
cert .crt
key .key
dh dh2048.pem
* Autres paramètres intéressants :
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é
Le paramètre **verb** permet de mettre un niveau d'information plus élevé pour le debug.
=== TLS ===
* Générer une clef pour le TLS
sudo openvpn --genkey --secret ta.key
=== IP forwarding ===
* Enlever le commentaire dans le fichier /etc/sysctl.conf
net.ipv4.ip_forward=1
* Recharger sysctl
sudo sysctl -p /etc/sysctl.conf
==== Activation VPN ====
sudo systemctl start openvpn@
==== Logs ====
journalctl -u openvpn@ -xe
----
[[all:bibles:linux:openvpn|Haut de page]]
----
===== Configuration client =====
==== Configuration ====
openvpn3 config-import --config /file/to/profile.ovpn --name --persistent
openvpn3 config-acl --show --lock-down true --grant root --config
==== Lister les configurations ====
openvpn3 configs-list --verbose
==== Suppression d'une configuration ====
openvpn3 config-remove --config # suppression par nom config
openvpn3 config-remove --path /net/openvpn/v3/configuration/ # suppression par chemin (si plusieur config du même nom)
==== Activation VPN ====
sudo systemctl start openvpn3-session@.service
==== Logs ====
Possibilité de modifier le niveau de verbosité des logs dans le fichier de conf en mettant verb 5 (de 0 à 11)
journalctl -u openvpn@ -xe
tail -f /var/log/syslog
----
[[all:bibles:linux:openvpn|Haut de page]]
===== Vérifications =====
==== Côté serveur ====
=== Service ===
sudo systemctl status openvpn@
=== Tunnel ===
Vérifier la présence de l'interface tun0
ip addr
Le port 1194 (ou autre) n'apparaîtra pas avec la commande **ss -tlna**
==== 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
ip addr
ip route
ping
----
[[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]]