15 votes

Obtenir que le VPN se reconnecte automatiquement en cas de perte de connexion

J'utilise le VPN intégré de Mac OS X 10.7.3. Il s'agit d'IPSec, FWIW. De temps en temps, il se déconnecte (probablement un problème avec le serveur de mon entreprise). Existe-t-il un moyen de le faire se reconnecter automatiquement ? Parfois, je ne le remarque pas pendant un certain temps, ce qui est assez ennuyeux.

11voto

gentmatt Points 46446

Vous pouvez utiliser les éléments suivants AppleScript enregistrez-la en tant qu'application et définissez-la en tant qu'agent (sans icône de dock).

Ce script va établir une connexion VPN quand il n'y en a pas. Par conséquent, il devrait également se reconnecter peu de temps après la chute de votre connexion. Vous pouvez changer l'intervalle pour vérifier votre connexion VPN, c'est 120 secondes dans le script.

on idle
    tell application "System Events"
        tell current location of network preferences
            set myConnection to the service "VPN University"
            if myConnection is not null then
                if current configuration of myConnection is not connected then
                    connect myConnection
                end if
            end if
        end tell
        return 120
    end tell
end idle

J'ai expliqué comment mettre en place ce système dans le document suivant cette réponse .

1 votes

Can’t get «class svce» "MyVPN" of «class locc» of «class netp» of application "System Events". System Events got an error: Can’t get service "MyVPN" of current location of network preferences. (-1728)

0 votes

Cela ne fonctionne pas avec les VPN IKEv2. Voici comment vous pouvez le faire : matt.coneybeare.me/ -service-on-your-mac/

11voto

rjarvis2010 Points 101

J'ai apporté quelques modifications à la réponse fournie, car si une chose vaut la peine d'être faite, elle vaut la peine d'être faite à fond. Je voulais me reconnecter si le VPN était abandonné, mais PAS me reconnecter si le VPN était intentionnellement déconnecté. La solution que j'ai trouvée était à la fois efficace et inélégante.

Tout d'abord, j'ai ajouté des hooks au démarrage et à l'arrêt de pppd pour garder la trace de l'état souhaité du VPN. Ces fichiers doivent appartenir à Root, et avoir les permissions de lecture/exécution ( sudo chmod 755 /etc/ppp/ip-* ).

/etc/ppp/ip-up :

#!/bin/sh
echo true > /var/run/reconnect_vpn
chmod 644 /var/run/reconnect_vpn

/etc/ppp/ip-down : pour OS X 10.9.5 et inférieur

#!/bin/sh
tail /var/log/ppp.log | grep '\[DISCONNECT\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi

/etc/ppp/ip-down : pour OS X 10.10 et supérieur

#!/bin/sh
tail /var/log/ppp.log | grep '\[TERMINATE\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi

Ensuite, en modifiant l'AppleScript ci-dessus, j'ai pu vérifier la variable d'état '/var/run/reconnect_vpn' pour déterminer si le VPN doit être réactivé :

on idle
    tell application "System Events"
        tell current location of network preferences
            set myConnection to the service "VPN"
            set startOnLogin to true
            local doReconnect
            try
                set doReconnect to (do shell script "cat /var/run/reconnect_vpn")
            on error errMsg
                set doReconnect to startOnLogin
            end try
            if myConnection is not null and doReconnect then
                if current configuration of myConnection is not connected then
                    connect myConnection
                end if
            end if
        end tell
        return 120
    end tell
end idle

Comme précédemment, modifiez la ligne set myConnection to the service "VPN" à ce que votre VPN s'appelle. Aussi, au démarrage, le fichier 'reconnect_vpn' n'existe pas, donc j'ai ajouté un booléen (startOnLogin) pour servir de défaut lorsque le fichier ne peut être trouvé. J'aime démarrer immédiatement, mais si ce n'est pas votre cas, mettez-le à false.

J'ai le sentiment que si vous êtes le genre de personne à être aussi pointilleux sur le comportement des VPN, vous êtes aussi le genre de personne qui aime tâtonner jusqu'à ce que vous trouviez une solution et donc cette réponse n'a pas d'audience. Mais juste au cas où, la voici. J'espère que cela aidera quelqu'un.

0 votes

Cela ne fonctionne pas avec les VPN IKEv2. Voici comment vous pouvez le faire : matt.coneybeare.me/ -service-on-your-mac/

4voto

John Points 41

Il y a une application qui le fait appelée Auto-connexion VPN (lien Mac App Store). C'est 0,99 $.

Une fois lancé, il se trouve dans votre barre de menu ; lorsque vous l'utilisez pour activer le VPN, il surveille un profil de connexion VPN que vous avez configuré dans le panneau de préférences Réseau d'OS X et s'assure que vous restez toujours connecté à celui-ci. L'icône de la barre de menu de VPN Auto-Connect fournit une liste de toutes les connexions VPN que vous avez définies et vous permet de choisir celle à laquelle vous voulez toujours vous connecter.

0 votes

Bienvenue à Ask Different ! Merci pour votre réponse, John ! Pouvez-vous ajouter plus d'informations sur l'application à laquelle vous avez fait référence ? Comment répond-elle à la question ? Quelles sont les caractéristiques spécifiques qui en font l'application dont le PO a besoin ?

0 votes

VPN Auto-Connect fonctionne avec les VPN IKEv2. Voici comment vous pouvez le faire : matt.coneybeare.me/ -service-on-your-mac/

0voto

pierre-o Points 1

J'utilise une approche différente pour maintenir ma connexion VPN en vie. Cela implique d'obtenir un très simple launchd qui permet de maintenir la connexion VPN sans qu'aucun utilisateur ne soit connecté (cela évite également les popups de déconnexion VPN lors de la reprise du mode veille).

créer un launchd fichier plist à partir du terminal :

sudo nano /Library/LaunchDaemons/my.vpn.connector.plist

et entrez le contenu suivant :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <dict>
        <key>NetworkState</key>
        <true/>
    </dict>
    <key>Label</key>
    <string>my.vpn.connector</string>
    <key>ProgramArguments</key>
    <array>
        <string>bash</string>
        <string>-c</string>
        <string>(test $(networksetup -showpppoestatus MyVPN) = 'disconnected' &&  ping -o my.vpn.server.url && networksetup -connectpppoeservice MyVPN) ; sleep 10</string>
    </array>
</dict>
</plist>

Vous pouvez utiliser la commande suivante pour démarrer votre démon et le tester :

launchctl load /Library/LaunchDaemons/my.vpn.connector.plist

De cette façon, vous avez un démon qui tourne pour tous les utilisateurs, la connexion n'est tentée que lorsque la connexion internet est disponible. De plus, le VPN est reconnecté automatiquement lorsque la connexion internet est rétablie

Edit :

Je trouve cette méthode la plus robuste car elle permet de faire une connexion vpn automatiquement, avant que l'utilisateur ne se connecte (utile pour les serveurs).

Mises à jour pour Yosemite (OSX 10.10)

    <key>KeepAlive</key>
    <dict>
        <key>NetworkState</key>
        <true/>
    </dict>

est déprécié dans Yosemite. Vous pouvez utiliser ce qui suit à la place

    <key>KeepAlive</key>
    <true/>

Aussi

networksetup -connectpppoeservice MyVPN

Ne fonctionne plus dans Yosemite. Vous pouvez utiliser ceci à la place

scutil --nc start MyVPN

0 votes

scutil --nc list ne liste pas ma connexion VPN, qui est visible et connectable via les paramètres réseau.

0 votes

@philpirozhkov Cela ne fonctionnera pas avec les VPN IKEv2. Voici comment vous pouvez le faire : matt.coneybeare.me/ -service-on-your-mac/

0voto

n1000 Points 7136

Une nouvelle option est Moniteur VPN disponible sur l'AppStore. Il permet une personnalisation plus poussée, comme l'identification automatique, le passage en revue des connexions VPN, etc. Au moins OS X 10.9 Mavericks requis.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X