Comment puis-je associer un script à OpenVPN afin qu'il s'exécute lorsque le VPN est connecté avec succès?
network-manger-openvpn
.
Comment puis-je associer un script à OpenVPN afin qu'il s'exécute lorsque le VPN est connecté avec succès?
network-manger-openvpn
.
Réponses:
network-manager-openvpn
ne fournit pas une telle fonctionnalité, vous devez utiliser openvpn
directement.
Passez --script-security 2 --up /path/to/your/script
à lui lors de la connexion. Si vous utilisez un fichier de configuration situé à /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
Depuis la page de manuel OpenVPN :
--script-security level [méthode] Cette directive offre un contrôle au niveau politique sur l'utilisation d'OpenVPN. des programmes externes et des scripts. Les valeurs de niveau inférieur sont plus restrictif, les valeurs élevées sont plus permissives. Paramètres pour niveau: 0 - Strictement pas d'appel de programmes externes. 1 - (Par défaut) N'appeler que les exécutables intégrés tels que ifconfig, ip, route ou netsh. 2 - Autoriser l’appel d’exécutables intégrés et définis par l’utilisateur les scripts. 3 - Autoriser les mots de passe à être transmis aux scripts via l'environnement variables (potentiellement dangereuses). --up cmd Commande Shell à exécuter après l’ouverture réussie du périphérique TUN / TAP (avant - changement d'utilisateur UID). Le script up est utile pour spécifier commandes de routage qui acheminent le trafic IP destiné au secteur privé sous-réseaux qui existent à l’autre extrémité de la connexion VPN dans le tunnel. Ordre d'exécution du script --up Exécuté après une liaison TCP / UDP et une ouverture de TUN / TAP. --down Exécuté après la fermeture de TCP / UDP et TUN / TAP.
Il y a plus d'événements pour l'exécution de 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 l'ajout d'une adresse IPv6 et d'un itinéraire (affiché à des fins éducatives, 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
script est exécuté en tant que root. Si vous n'avez pas spécifié de paramètre User
et Group
, OpenVPN exécutera également des scripts en down
tant que root.
openvpn
directement. Lors de la configuration d’un serveur, j’ai remarqué que OpenVPN essaierait de se reconnecter lorsque le serveur serait en panne. Vous ne savez pas si OpenVPN continue d'essayer lorsque votre interface réseau tombe en panne.
A la question: "Comment puis-je associer un script à OpenVPN afin qu'il s'exécute lorsque le VPN est connecté avec succès?" Je tiens à souligner que Lekensteyn a fourni une excellente réponse . Mais, au moment où sa réponse a été composée, il manquait un peu de clarté sur la manière dont les arguments de ligne de commande openvpn devraient être fournis pour démarrer openvpn sur une machine Ubuntu, en particulier pour que cela fonctionne de la même manière après les redémarrages.
Naturellement, on peut démarrer openvpn à partir d’une ligne de commande avec toutes les options légales disponibles. Mais, sur une machine Ubuntu, si on veut démarrer openvpn avec les mêmes arguments en ligne de commande après un redémarrage, ils devraient envisager de modifier le fichier /etc/default/openvpn
. Examiner les lignes suivantes:
# Optional arguments to openvpn's command line
OPTARGS=""
Depuis la page de manuel openvpn de la communauté sur--script-security
Niveau de sécurité - script Cette directive offre un contrôle au niveau politique sur l’utilisation par OpenVPN de programmes et scripts. Les valeurs de niveau inférieur sont plus restrictives, plus élevées les valeurs sont plus permissives. Paramètres de niveau: 0 - Strictement pas d'appel de programmes externes. 1 - (Par défaut) N'appeler que les exécutables intégrés tels que ifconfig, ip, route, ou netsh. 2 - Autoriser l’appel d’exécutables intégrés et de scripts définis par l’utilisateur. 3 - Autoriser les mots de passe à être transmis aux scripts via des variables d'environnement (potentiellement dangereux). Les versions OpenVPN antérieures à la v2.3 prenaient également en charge un indicateur de méthode indiquant comment OpenVPN doit appeler des commandes et des scripts externes. Cela pourrait être soit execve ou système. Depuis OpenVPN v2.3, cet indicateur n'est plus accepté. Dans la plupart des * nix environnements l'approche execve () a été utilisée sans aucun problème. Certaines directives telles que --up autorisent la transmission d'options au script externe. Dans ces cas, assurez-vous que le nom du script ne contient pas d’espace ou le analyseur de configuration va s'étouffer, car il ne peut pas déterminer où le script nom se termine et les options de script commencent.
Combiné avec une section abrégée sur --up
--up cmd Exécutez la commande cmd après l’ouverture réussie du périphérique TUN / TAP (modification de l’ID utilisateur pré-utilisateur). cmd consiste en un chemin d'accès au script (ou programme exécutable), éventuellement suivi par des arguments. Le chemin et les arguments peuvent être simples ou doubles et / ou échappé en utilisant une barre oblique inverse, et doit être séparé par un ou plusieurs espaces.
Sur ma machine avec un server.conf openpvn, j'ai les lignes suivantes dans mon /etc/default/openvpn
fichier:
OPTARGS="
--script-security 2
--up /etc/openvpn/nat.sh
"
Incidemment, nat.sh configure la traduction d’adresse réseau pour acheminer le trafic réseau privé des clients OpenVPN vers l’Internet public; ce qui est bon lorsque l'on ne fait pas confiance à un point d'accès WIFI public.
En plus de permettre de redémarrer comme prévu après un redémarrage, quand /etc/openvpn/[client or server].conf
et /etc/default/openvpn
fichiers sont correctement configurés, OpenVPN peut être démarré ou arrêté avec:
sudo service openvpn start
sudo service openvpn stop
Autres options utiles disponibles pour l' service openvpn
inclusion cond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.
Comme il s’agit d’un sujet assez ancien, je ne sais pas s’il est toujours d’intérêt. Si vous souhaitez toujours utiliser NetworkManager pour vous connecter à un VPN, vous pouvez ajouter une règle udev simple comme celle-ci:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
Cela devrait exécuter n'importe quel script après la création du VPN.
Je suis tombé sur la réponse dans mes recherches pour résoudre ce problème et j'ai découvert que la meilleure solution est (en utilisant un serveur openvpn) comme suit:
Créez un script à exécuter:
# nano /etc/openvpn/up.sh
<file:contents>
#!/bin/sh
# export >> /var/log/openvpn/openvpn-up.log
D=`date "+%Y-%m-%d %H:%M"`
echo "[$D] ($local_port_1:$proto_1) $X509_0_CN: $trusted_ip => $ifconfig_pool_remote_ip" >> /var/log/openvpn/openvpn-up.log
</file>
Ajoutez les lignes suivantes dans la configuration openvpn (généralement /etc/openvpn/server.conf
). Dans la réponse ci-dessus, il a été utilisé de haut en bas, qui sont utilisés lorsque le serveur démarre (redémarre). La directive client-connect (et client-disconnect) est utilisée lorsque le client se connecte (se déconnecte).
# nano /etc/openvpn/server.conf
<file:add>
script-security 2
client-connect /etc/openvpn/up.sh
</file>