Cómo hacer que VPN se vuelva a conectar automáticamente al interrumpir la conexión

12

Uso la VPN incorporada en Mac OS X 10.7.3. Es IPSec, FWIW. De vez en cuando, se desconecta (probablemente un problema con mi servidor corporativo). ¿Hay una manera de conseguir que se vuelva a conectar automáticamente? A veces no me doy cuenta por un tiempo, lo que es un poco molesto.

    
pregunta Andrew Ferrier 05.03.2012 - 15:55

8 respuestas

8

Puede utilizar el siguiente AppleScript , guardarlo como una aplicación y configurarlo para que sea un agente (sin icono de base).

Este script configurará una conexión VPN cuando no haya ninguna. Por lo tanto, también debe volver a conectarse poco después de que se caiga la conexión. Puede cambiar el intervalo para verificar su conexión VPN, hay 120 segundos en el 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

He explicado cómo configurar esto en esta respuesta .

    
respondido por el gentmatt 05.03.2012 - 16:03
7

Hice algunos cambios en la respuesta proporcionada, porque si vale la pena hacer algo, vale la pena hacerlo en el suelo. Quería volver a conectar si se eliminó la VPN, pero NO volver a conectarme si la VPN se desconectó intencionalmente. La solución que se me ocurrió fue efectiva y poco elegante.

Primero agregué ganchos al inicio y apagado de pppd para realizar un seguimiento del estado de VPN deseado. Estos archivos deben ser propiedad de la raíz y tener permisos de lectura / ejecución ( 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: para OS X 10.9.5 e inferior

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

/ etc / ppp / ip-down: para OS X 10.10 y superior

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

Luego, modificando el AppleScript anterior, pude verificar la variable de estado '/ var / run / reconnect_vpn' para determinar si debo realizar una copia de seguridad de la VPN:

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

Como antes, cambia la línea set myConnection to the service "VPN" a como se llame tu VPN. Además, al iniciar el sistema, el archivo 'reconnect_vpn' no existe, así que agregué un booleano (startOnLogin) para que actúe como predeterminado cuando no se puede encontrar el archivo. Me gusta comenzar de inmediato, pero si no lo haces, entonces cambia a falso.

Tengo la sensación de que si el tipo de persona es el tipo de persona que trata sobre la VPN, entonces también es el tipo de persona al que le gusta andar a tientas hasta encontrar una solución y, por lo tanto, esta respuesta no tiene audiencia. Pero por si acaso, aquí está. Espero que ayude a alguien.

    
respondido por el rjarvis2010 18.02.2013 - 05:24
4

Hay una aplicación que lo hace VPN Auto-Connect (Mac App Store enlazar). Es $ 0.99.

Una vez iniciado, vive en la barra de menú; cuando lo use para activar VPN, controlará el perfil de conexión VPN que configuró en el panel de preferencias de Red de OS X y se asegurará de que siempre esté conectado a él. El ícono de la barra de menú de VPN Auto-Connect proporciona una lista de todas las conexiones VPN que ha definido y le permite elegir a cuál de ellas conectarse siempre.

    
respondido por el John 18.07.2012 - 10:21
0

Una nueva opción es VPN Monitor disponible en la AppStore. Permite una mayor personalización, como inicio de sesión automático, ciclos a través de conexiones VPN, etc. Se requieren al menos OS X 10.9 Mavericks.

    
respondido por el n1000 27.10.2014 - 22:36
0

El script vuelve a conectarse automáticamente a cualquier servicio VPN descartado.

Había estado utilizando la rjarvis2010 de la solución pero no estaba del todo feliz con eso

Tengo muchos servicios VPN diferentes a los que me conecto, así que quería un script que volviera a conectar automáticamente cualquier VPN a la que estuviera conectado.

on idle
    tell application "System Events"
        tell location "Uni" of network preferences
            -- keep checking for VPN name until a VPN is connected
            set empty to true
            repeat until empty is false
                try
                    -- set variable "myVPN" to the name of the service that is connected and is a VPN
                    set myVPN to get name of first service whose (kind is greater than 11 and kind is less than 17) and connected of current configuration is true
                    set empty to false
                on error
                    set empty to true
                    delay 15
                end try
            end repeat

            -- doReconnect is a file that reads from the ppp.log and contains "true" by default, "false" if the vpn service was manually disconnected recently
            local doReconnect
            set doReconnect to (do shell script "cat /var/run/reconnect_vpn")

            repeat while doReconnect contains "true"
                set ConfProp to get current configuration of service myVPN
                if connected of ConfProp is false then
                    delay 1
                    set doReconnect to (do shell script "cat /var/run/reconnect_vpn")
                    if doReconnect contains "true" then
                        try
                            connect service myVPN
                        on error errorMessage
                        end try
                    else
                        exit repeat
                    end if
                end if
                delay 5
            end repeat
        end tell
    end tell
    return 1
end idle

Para que funcione, necesitas reemplazarlo

  • Uni con el nombre de tu ubicación

Una vez que hayas terminado, guárdalo como una aplicación y colócalo en tus elementos de inicio de sesión y listo.

Además, y esto es importante, debe configurar los enlaces PPP como se describe en rjarvis2010 solución

Además, le recomendaría que no intente esto conectando varias VPN simultáneamente. Para detener esta secuencia de comandos, es posible que deba forzar su salida a través del monitor de actividad (ya que los bucles de repetición no le permiten recibir entradas externas a veces).

    
respondido por el francesco 21.01.2015 - 17:57
0

Estoy usando un enfoque diferente para mantener viva mi conexión VPN. Esto implica ejecutar un daemon launchd muy simple que permite mantener la conexión VPN sin que ningún usuario haya iniciado sesión (esto también evita las ventanas emergentes de desconexión de VPN cuando se reanuda el modo de suspensión).

cree un archivo launchd plist desde la terminal:

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

e ingrese el siguiente contenido:

<?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>

Puedes usar el siguiente comando para iniciar tu daemon y prueba:

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

De esta manera, tiene un demonio ejecutándose para todos los usuarios, la conexión se intentó solo cuando la conexión a Internet está disponible. Además, la VPN se vuelve a conectar automáticamente cuando vuelve la conexión a Internet ...

Editar:

Considero que este método es el más robusto, ya que permite que una conexión vpn se realice automáticamente, antes de que un usuario inicie sesión (útil para servidores).

Actualizaciones para Yosemite (OSX 10.10)

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

Se deprecia en Yosemite. Puedes usar lo siguiente en su lugar

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

También

networksetup -connectpppoeservice MyVPN

Ya no funciona en Yosemite. Puedes usar esto en su lugar

scutil --nc start MyVPN
    
respondido por el pierre-o 26.02.2013 - 02:21
0

Vi que hay algunas respuestas aquí que usan enlaces de inicio de sesión, que están en desuso en las versiones más recientes de OS X a favor de Launch Agent y Launch Daemons.

He creado un script y un agente de inicio. El agente llama a un script de shell cada 30 segundos e intenta hacer ping a una dirección IP que es estática en la red vpn. Si no puede hacer ping a esa IP, habilita tu conexión vpn.

Si hizo esto a través de una aplicación Apple Script, el icono de la aplicación siempre estará en su base. Prefiero que esto se ejecute automáticamente en segundo plano.

Clone el proyecto a continuación y siga las instrucciones del archivo Léame. El resultado final es un paquete de instalación que colocará un archivo plist del agente de inicio en / Library / LaunchAgents / y un script de shell en / Library / Application Support / melonsmasher /.

Asegúrese de editar el script de shell (auto-vpn) con el nombre de su conexión VPN y una dirección IP que se encuentra en la red VPN. Puede cambiar el intervalo de ejecución en el archivo plist (com.melonsmasher.autovpn.plist).

enlace

    
respondido por el almyz125 28.01.2016 - 19:20
-2

La belleza de AppleScripts es que puedes hacer casi cualquier cosa con él y es gratis, el inconveniente es que generalmente no son muy receptivos (sondeo en un intervalo de tiempo fijo) y carecen de funciones que solo las aplicaciones nativas de MAC OS X pueden tener. Una buena y nueva aplicación de reconexión automática de VPN es "Monitor de VPN" en la tienda de aplicaciones, se vuelve a conectar instantáneamente en el momento en que se cae una conexión VPN, es capaz de volver a conectarse a un servicio VPN diferente si el servicio preferido está inactivo, se conecta al inicio, realiza un seguimiento de su tiempo de inactividad y utiliza un mínimo de recursos del sistema para ejecutarse en segundo plano como una aplicación de barra de estado. VPN Monitor

    
respondido por el Jos 02.08.2014 - 09:09

Lea otras preguntas en las etiquetas