Lancer Open VPN sous SystemD

OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel (VPN). Cet article explique comment mettre en œuvre un client OpenVPN sous forme de service. Ce tutoriel est initialement rédigé pour une distribution « Manjaro ». Il devrait toutefois fonctionner correctement pour toutes les distributions basées sur « systemd ».

Mise en place des fichiers de configuration

La mise en place du VPN nécessite 4 fichiers de configuration :

  • certificat et la clé de l’Autorité de Certification Maître (master Certificate Authority) : nomVPN-ca.crt ;
  • certificat client : nomVPN-client.crt ;
  • clé privée du client : nomVPN-client-key ;
  • un fichier de configuration nomVPN.ovpn.

Pour plus de lisibilité en cas de gestion de multiples VPN, ces différents fichiers seront copiés dans « /etc/openvpn/nomVPN« . Par exemple, si l’on met en place deux VPN, l’arborescence sera similaire à celle-ci :

  • etc
    • openvpn
      • VPN1
        • VPN1-ca.crt
        • VPN1-client.crt
        • VPN1-client-key
        • VPN1.ovpn
      • VPN2
        • VPN2-ca.crt
        • VPN2-client.crt
        • VPN2-client-key
        • VPN2.ovpn

Tester la configuration

Avant de mettre en place les services, nous allons nous assurer que les fichiers de configuration sont corrects. Pour cela, nous lançons OpenVPN afin de vérifier que l’on accède correctement au VPN.

sudo openvpn --config /etc/openvpn/VPN1/VPN1.ovpn

Si les fichiers de configuration sont corrects, la console doit afficher le  message suivant :

Initialization Sequence Completed

Dans le cas contraire, il faut vérifier les fichiers de configuration. En particulier, on veillera à ce que le fichier « VPN1.ovpn » référence correctement les autres fichiers de configuration (éventuellement en mettant le chemin absolu si nécessaire).

Créer le script pour lancer le service

Pour lancer un service, « systemd » s’appuie sur des scripts (.service) situés dans « /etc/systemd/system ». Pour chaque VPN auquel nous souhaitons nous connecter, nous allons créer un fichier « service » associé. Par convention, le nom du fichier sera « openvpn@nomVPN.service ».

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=OpenVPN connection to nomVPN
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/sbin/openvpn --config /etc/openvpn/nomVPN/nomVPN.ovpn --daemon openvpn@nomVPN WorkingDirectory=/etc/openvpn
 
[Install]
WantedBy=multi-user.target

Activer le service

Pour activer le service au démarrage de la machine, lancer la commande suivante :

sudo systemctl enable openvpn@nomVPN.service

Pour lancer le service immédiatement (et ne pas attendre que la machine redémarre), lancer la commande :

sudo systemctl start openvpn@nomVPN.service

Il est possible de vérifier le statut du service avec la commande :

systemctl status openvpn@nomVPN.service

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *