Dans le cas du client, je suppose? Quel logiciel utilises-tu? OpenVPN ou un wrapper (par exemple, NetworkManager)?
Lekensteyn
@ Lekensteyn, wrapper network-manger-openvpn.
Oxwivi
Réponses:
62
network-manager-openvpnne fournit pas une telle fonctionnalité, vous devez utiliser openvpndirectement.
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
--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.shet 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 upscript est exécuté en tant que root. Si vous n'avez pas spécifié de paramètre Useret Group, OpenVPN exécutera également des scripts en downtant que root.
Si vous ne savez pas comment utiliser directement openvpn, ajoutez les détails de votre configuration actuelle: type de connexion (par exemple, certificats X509), port de passerelle, compression LZO, force de TCP, utilisation de périphérique Tap, de chiffrement, HMAC et TLS. Mentionnez également vos paramètres IP s'ils ne sont pas automatiques. Pour votre vie privée, omettez vos adresses réelles.
Lekensteyn
D'accord, j'ai décidé d'utiliser OpenVPN directement (et oui, j'ai le fichier .conf), mais est-ce qu'il se reconnectera automatiquement si la connexion est perdue? Et comment puis-je le connecter automatiquement chaque fois qu'il y a une connexion Internet? Et enfin, je ne comprenais pas où je devais ajouter les lignes que vous avez mentionnées dans la réponse.
Oxwivi
J'ai élargi la réponse à utiliser openvpndirectement. 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.
Lekensteyn
Mon problème n'est pas lorsque l'interface réseau tombe en panne - il essaie de se reconnecter lorsque la connexion Internet est perdue et retrouvée. Je veux juste me connecter au VPN chaque fois que je reçois une connexion Internet.
Oxwivi
Oh, et le script s'applique-t-il à toutes les connexions VPN? Et s'il vous plaît taguer @ Oxwivi en répondant, je ne serai pas averti autrement.
Oxwivi
5
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.
Arguments de ligne de commande Openvpn sur Ubuntu:
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=""
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.
Exemple:
Sur ma machine avec un server.conf openpvn, j'ai les lignes suivantes dans mon /etc/default/openvpnfichier:
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].confet /etc/default/openvpnfichiers 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 openvpninclusion 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:
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:
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).
network-manger-openvpn
.Réponses:
network-manager-openvpn
ne fournit pas une telle fonctionnalité, vous devez utiliseropenvpn
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:Depuis la page de manuel OpenVPN :
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):Notez que ce
up
script est exécuté en tant que root. Si vous n'avez pas spécifié de paramètreUser
etGroup
, OpenVPN exécutera également des scripts endown
tant que root.la source
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.
Arguments de ligne de commande Openvpn sur Ubuntu:
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:Depuis la page de manuel openvpn de la communauté sur
--script-security
Combiné avec une section abrégée sur
--up
Exemple:
Sur ma machine avec un server.conf openpvn, j'ai les lignes suivantes dans mon
/etc/default/openvpn
fichier: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:Autres options utiles disponibles pour l'
service openvpn
inclusioncond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.la source
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.
la source
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:
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).la source