Comment puis-je associer un script à OpenVPN pour qu'il s'exécute lorsque le VPN est connecté avec succès ?
Meilleure réponse
network-manager-openvpn
ne fournit pas une telle fonctionnalité, vous devez utiliser openvpn
directement.
Passez --script-security 2 --up /path/to/your/script
à celui-ci lors de la connexion. Si vous utilisez un fichier de configuration situé dans /etc/openvpn/
, ajoutez les lignes suivantes à votre fichier de configuration :
script-security 2
# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
À partir de la page de manuel OpenVPN :
--script-security level [method] This directive offers policy-level control over OpenVPN’s usage of external programs and scripts. Lower level values are more restrictive, higher values are more permissive. Settings for level: 0 -- Strictly no calling of external programs. 1 -- (Default) Only call built-in executables such as ifconfig, ip, route, or netsh. 2 -- Allow calling of built-in executables and user-defined scripts. 3 -- Allow passwords to be passed to scripts via environmental variables (potentially unsafe). --up cmd Shell command to run after successful TUN/TAP device open (pre --user UID change). The up script is useful for specifying route commands which route IP traffic destined for private subnets which exist at the other end of the VPN connection into the tunnel. Script Order of Execution --up Executed after TCP/UDP socket bind and TUN/TAP open. --down Executed after TCP/UDP and TUN/TAP close.
Il y a plus d'événements pour l'exécution du script, ceux-ci peuvent être trouvés sur la page de manuel.
Créez /etc/openvpn/up.sh
, et donnez-lui des autorisations d'exécution (par exemple, 755 ou 700). Exemple de contenu pour ajouter une adresse IPv6 et un itinéraire (affiché à des fins pédagogiques, ne le copiez pas directement) :
#!/bin/sh
# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev
# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev
Notez que ce up
le script est exécuté en tant que root. Si vous n'avez pas spécifié d'User
et Group
paramètre, OpenVPN exécutera des scripts comme down
aussi en tant que root.