15 votos

Conseguir que la VPN se reconecte automáticamente al caer la conexión

Utilizo la VPN integrada en Mac OS X 10.7.3. Es IPSec, FWIW. De vez en cuando, se desconecta (probablemente un problema con mi servidor corporativo). ¿Hay alguna forma de hacer que se reconecte automáticamente? A veces no me doy cuenta durante un tiempo, lo que es un poco molesto.

11voto

user13414 Puntos 111

Puede utilizar lo siguiente AppleScript , guárdelo como una aplicación y configúrelo como agente (sin icono del dock).

Este scriptconfigurará una conexión VPN cuando no haya ninguna. Por lo tanto, también debería reconectarse poco después de que su conexión se caiga. Puedes cambiar el intervalo para comprobar tu conexión VPN, es de 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 .

1 votos

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 votos

Eso no funcionará con las VPN IKEv2. Así es como puedes hacerlo: matt.coneybeare.me/ -servicio-en-tu-mac/

11voto

rjarvis2010 Puntos 61

He hecho algunos cambios en la respuesta proporcionada, porque si algo vale la pena hacerlo hasta el fondo. Quería reconectar si la VPN se caía, pero NO reconectar si la VPN se desconectaba intencionadamente. La solución que se me ocurrió era a la vez eficaz y poco elegante.

Primero añadí ganchos al inicio y al apagado de pppd para mantener el estado deseado de la VPN. Estos archivos deben ser propiedad de Root, y tienen permisos de lectura/ejecución mundiales ( 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

Entonces, modificando el AppleScript de arriba, pude comprobar la variable de estado '/var/run/reconnect_vpn' para determinar si hay que volver a activar 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, cambie la línea set myConnection to the service "VPN" a cualquiera que sea el nombre de su VPN. Además, al iniciar el archivo 'reconnect_vpn' no existe, así que añadí un booleano (startOnLogin) para que sirviera como valor por defecto cuando no se pudiera encontrar el archivo. A mí me gusta que se inicie inmediatamente, pero si no es así, cámbialo a false.

Tengo la sensación de que si eres el tipo de persona es este particular sobre el comportamiento de la VPN, entonces también eres el tipo de persona que le gusta tantear 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.

0 votos

Eso no funcionará con las VPN IKEv2. Así es como puedes hacerlo: matt.coneybeare.me/ -servicio-en-tu-mac/

4voto

Hay una aplicación que lo hace llamada Conexión automática a la VPN (enlace a la Mac App Store). Cuesta 0,99 dólares.

Una vez iniciada, vive en tu barra de menús; cuando la utilices para activar la VPN, controlará el perfil de conexión a la VPN que hayas configurado en el panel de preferencias de red de OS X y se asegurará de que siempre permanezcas conectado a ella. El icono de la barra de menús de VPN Auto-Connect ofrece una lista de todas las conexiones VPN que hayas definido y te permite elegir a cuál conectarte siempre.

0 votos

¡Bienvenido a Ask Different! Gracias por tu respuesta, John. ¿Puedes añadir más información sobre la aplicación que has enlazado? ¿Cómo responde a la pregunta? ¿Qué características específicas hacen que sea la aplicación que necesita el PO?

0 votos

VPN Auto-Connect funciona con VPNs IKEv2. A continuación le explicamos cómo puede hacerlo: matt.coneybeare.me/ -servicio-en-tu-mac/

1voto

pierre-o Puntos 1

Estoy usando un enfoque diferente para mantener mi conexión VPN viva. Se trata de conseguir un launchd 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 la VPN cuando se reanuda desde el modo de suspensión).

crear un launchd archivo plist desde el terminal :

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

e introduzca 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>

Puede utilizar el siguiente comando para iniciar su demonio y probarlo:

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

De esta manera, se tiene un demonio que se ejecuta para todos los usuarios, la conexión se intenta sólo cuando la conexión a Internet está disponible. Además, la VPN se reconecta automáticamente cuando la conexión a Internet vuelve a estar disponible

Editar:

Este método me parece el más robusto, ya que permite hacer una conexión vpn automáticamente, antes de que un usuario se conecte (útil para los servidores).

Actualizaciones para Yosemite (OSX 10.10)

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

Se deprecia en Yosemite. Puede utilizar 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

0 votos

scutil --nc list no muestra mi conexión VPN, que se ve y se puede conectar a través de la configuración de red.

0 votos

@philpirozhkov Esto no funcionará con las VPN IKEv2. Aquí es cómo usted puede hacer eso: matt.coneybeare.me/ -servicio-en-tu-mac/

0voto

talkingnews Puntos 42

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X