Vendredi 23 novembre 2018 (Modifié le Vendredi 23 novembre 2018)

ProtonVPN

ProtonVPN auto connexion

Pour utiliser le dispatcher, il faut créer des scripts dans le répertoire /etc/NetworkManager/dispatcher.d, le fichier peut avoir un préfixe pour donner un ordre de lancement, exemple: 10-netfs, 20-ntpd
Le script en lui même prend 2 arguments, l’un pour le nom de l’interface, l’autre pour le statut, voici un exemple:

#!/bin/sh
INTERFACE=$1 # Le nom de l'interface
STATUS=$2 # Le statut

case "$STATUS" in
    'up') exec systemctl start [service];;
    'down') exec systemctl stop [service];;
esac

Afin que les scripts s’exécutent, il est nécessaire d’activer le dispatcher :
systemctl enable NetworkManager-dispatcher

Connexion automatique au VPN quand le réseau est établi.
Pour se garder la possibilité de se connecter sur le réseau sans VPN , création d’une seconde connexion réseau filaire nommée Free.fr
Modification du fichier de connexion vpn /etc/NetworkManager/system-connections/se-fr-protonvpn ,password-flags passe à 0 et ajout configuration vpn-secrets

[vpn]
 ....
password-flags=0
 
[vpn-secrets]
password=your_password

On va créer un fichier /etc/NetworkManager/dispatcher.d/10-openvpn en mode root qui va activer ou désactiver la configuration VPN.
Les connexions de réseau disponibles

nmcli con show
NAME                            UUID                                  TYPE      DEVICE    
Free.fr                         53794a72-c4bd-4a8d-a0d6-5d5aa0b530d5  ethernet  enp0s31f6 
se-fr-01.protonvpn.com.udp1194  d51b1d0b-70a1-4b1b-a1e1-7a03a13cdce5  vpn       enp0s31f6 
tun0                            3bbb43cd-ca8c-42ce-a686-97550f3a78e8  tun       tun0      
Connexion filaire 2             9409f119-2c50-3f58-b5e7-6220d8e62d70  ethernet  --        
fr.protonvpn.com.udp1194        aa1754d7-6162-4502-9938-d2faa2a5d3c9  vpn       --        
is.protonvpn.com.udp1194        b16731c4-ad3d-4338-82c5-d5ed50fb69dd  vpn       --        

Si la connexion Free.fr est active, on lance le VPN

#!/bin/bash
VPN_NAME="se-fr-01.protonvpn.com.udp1194"

case "$2" in
  up)
    if [ "$CONNECTION_ID" == "Free.fr" ]; then
      nmcli con up id "$VPN_NAME" 
    fi
  ;;
  down)
      if nmcli con show --active | grep "$VPN_NAME"; then
        nmcli con down id "$VPN_NAME"
      fi
  ;;
esac

Changer les droits
sudo chown root:root /etc/NetworkManager/dispatcher.d/10-openvpn
sudo chmod 755 /etc/NetworkManager/dispatcher.d/10-openvpn

Démarrer le service
sudo systemctl start NetworkManager-dispatcher.service

Liens