Obtendo VPN para reconectar automaticamente na queda de conexão -- acos campo com vpn camp apple Relacionado O problema

Getting VPN to auto-reconnect on connection drop


14
vote

problema

português

Eu uso a VPN integrada no Mac OS X 10.7.3. É ipsec, fwiw. De tempos em tempos, ele desconecta (provavelmente um problema com meu servidor corporativo). Existe uma maneira de se reconectar automaticamente? Às vezes eu não percebo por um tempo, o que é meio chato.

english

I use the built-in VPN on Mac OS X 10.7.3. It's IPSec, FWIW. From time to time, it disconnects (probably an issue with my corporate server). Is there a way to get it to automatically reconnect? Sometimes I don't notice for a while, which is kinda annoying.

     

Lista de respostas

10
 
vote
vote
Melhor resposta
 

Você pode usar o seguinte applescript , salvá-lo como um aplicativo e configurá-lo para ser um agente (sem dock ícone).

Este script configurará uma conexão VPN quando não houver nenhum. Portanto, também deve se reconectar logo após sua conexão cair. Você pode alterar o intervalo para verificar sua conexão VPN, é 120 segundos no 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    

Eu expliquei como configurar isso em esta resposta .

 

You could use the following AppleScript, save it as an application and set it to be a agent (no dock icon).

This script will setup a VPN connection when there is none. Therefore, it should also reconnect shortly after your connection drops. You can change the interval to check your VPN connection, it's 120 seconds in the 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 

I've explained how to set this up in this answer.

 
 
 
 
9
 
vote

Eu fiz algumas alterações para a resposta fornecida, porque se algo vale a pena fazer, vale a pena fazer o chão. Eu queria me reconectar se a VPN foi descartada, mas não se reconectar se a VPN foi intencionalmente desconectada. A solução que eu inventei foi eficaz e inelegante.

Primeiro eu adicionei ganchos à inicialização e desligamento do PPPD para acompanhar o estado VPN desejado. Esses arquivos devem ser de propriedade da raiz e ter permissões de leitura / execução do mundo ( 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 o OS X 10.9.5 e abaixo

  #!/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 e acima

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

Então, modificando o AppleScript acima, fiquei capaz de verificar a variável de status '/ var / run / run / reconnect_vpn' para determinar se deve trazer o backup do 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, altere a linha set myConnection to the service "VPN" para qualquer que seja sua VPN chamada. Além disso, na inicialização, o arquivo 'reconnect_vpn' não existe, então eu adicionei um booleano (startonlogin) para servir como padrão quando o arquivo não pôde ser encontrado. Eu gosto de começar imediatamente, mas se você não mudar, em falso.

Eu tenho a sensação de que, se você é o tipo de pessoa é este particular sobre o comportamento da VPN, então você também é o tipo de pessoa que gosta de se desfazer até encontrar uma solução e, portanto, esta resposta não tem audiência. Mas apenas no caso, aqui é. Espero que ajude alguém.

 

I made some changes to the provided answer, because if something is worth doing it's worth doing into the ground. I wanted to reconnect if the VPN was dropped, but NOT reconnect if the VPN was intentionally disconnected. The solution I came up with was both effective and inelegant.

First I added hooks to the pppd startup and shutdown to keep track of the desired VPN state. These files should be owned by root, and have world read/execute permissions (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: for OS X 10.9.5 and below

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

/etc/ppp/ip-down: for OS X 10.10 and above

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

Then by modifying the AppleScript above, I was able to check the '/var/run/reconnect_vpn' status variable to determine whether to bring the VPN back up:

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 

As before, change the line set myConnection to the service "VPN" to whatever your VPN is called. Also, on startup the 'reconnect_vpn' file doesn't exist, so I added a boolean (startOnLogin) to serve as the default when the file could not be found. I like to start immediately, but if you don't then change it to false.

I have a feeling that if you're the kind of person is this particular about VPN behavior, then you're also the kind of person who likes fumbling around until you find a solution and therefore this answer has no audience. But just in case, here it is. Hope it helps somebody.

 
 
 
 
4
 
vote
.

Há um aplicativo que chamou VPN Auto-Connect (Link Mac App Store). É de US $ 0,99.

Uma vez iniciado, vive em sua barra de menu; Quando você usá-lo para ativar o VPN "ON", ele monitorará um perfil de conexão VPN configurado no painel de preferência de rede do OS X e garantirá que você sempre permaneça conectado a ele. VPN Auto-Connect's Menu-Bar ícone fornece uma lista de todas as conexões VPN que você definiu e permite escolher qual deles sempre se conectar.

 

There's an app that does it called VPN Auto-Connect (Mac App Store link). It's $0.99.

Once started, it lives in your menu bar; when you use it to turn VPN "on", it will monitor a VPN connection profile you set up in OS X's Network preference pane and ensure you always remain connected to it. VPN Auto-Connect's menu-bar icon provides a list of all the VPN connections you've defined and lets you choose which one to always connect to.

 
 
   
   
0
 
vote

Uma nova opção é Monitor VPN disponível na AppStore. Ele permite mais personalização, como login automático, ciclismo através de conexões VPN, etc. pelo menos OS X 10.9 Mavericks requeridos.

 

A new option is VPN Monitor available on the AppStore. It allows for more customization, like auto-login, cycling through VPN connections, etc. At least OS X 10.9 Mavericks required.

 
 
0
 
vote

Script Reconectar automaticamente Qualquer serviço VPN .

Eu estava usando rjarvis2010 's solução mas eu não era bem feliz com isso.

Eu tenho muitos serviços VPN diferentes que eu conecto, então eu queria um script que reconectaria automaticamente qualquer VPN que eu estava 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 fazer isso funcionar para você, você precisa substituir

  • Uni com qualquer nome do seu local é

Quando estiver pronto, salve-o como um aplicativo e coloque-o em seus itens de login e você é bom para ir.

Além disso, e isso é importante, você precisa configurar os ganchos PPP conforme descrito em rjarvis2010 's solução

Além disso, eu recomendo que você não tente conectar várias vpns simultaneamente. Para parar este script, você pode precisar forçar a desistir através do monitor de atividades (como os loops de repetição não permitirem que ele receba entrada externa às vezes).

 

Script auto-reconnect any dropped VPN service.

I had been using rjarvis2010's solution but I wasn't quite happy with it.

I have many different VPN services I connect to, so I wanted a script that would automatically reconnect any VPN I was connected to.

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 

To make it work for you, you need to replace

  • Uni with whatever your location's name is

Once you're done, save it as an application and place it in your Login Items and you're good to go.

Also, and this is important, you need to set up the PPP hooks as described in rjarvis2010's solution

Also, I would recommend you don't try this connecting multiple VPNs simultaneously. To stop this script you might need to force quit it through the activity monitor (as the repeat loops don't allow it to receive external input at times).

 
 
0
 
vote

Estou usando uma abordagem diferente para manter minha conexão VPN viva. Isso envolve a obtenção de um doemão muito simples ABCDEFGHIJKLMBCDefGHIJKLMN2 Daemon Executando que permite a manutenção da conexão VPN sem qualquer usuário conectado (isso também evita pop-ups de desconexão VPN ao retomar do modo de suspensão).

Criar um launchd arquivo plist do terminal:

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

e insira seguir conteúdo:

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

Você pode usar o seguinte comando para iniciar seu daemon e teste:

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

Desta forma, você tem um daemon em execução para todos os usuários, tentativa de conexão somente quando a conexão com a Internet estiver disponível. Além disso, a VPN é reconectada automaticamente quando a conexão com a Internet está de volta ...

editar:

Eu acho esse método o mais robusto, pois permite que uma conexão VPN seja feita automaticamente, antes que um usuário efetua login (útil para servidores).

Atualizações para Yosemite (OSX 10.10)

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

é depreciado em yosemite. Você pode usar o seguinte

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

também

  networksetup -connectpppoeservice MyVPN    

não funciona mais em yosemite. Você pode usar isso em vez

  Uni0   
 

I'm using different approach to keep my VPN connection alive. This involves getting a very simple launchd daemon running which allows maintaining VPN connection without any user logged in (this also avoid VPN disconnection popups when resuming from sleep mode).

create a launchd plist file from terminal :

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

and enter following content :

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

You can use following command to start your daemon and test:

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

This way, you have a daemon running for all users, connection attempted only when internet connection is available. Also, VPN is reconnected automatically when internet connection is backxe2x80xa6

Edit:

I find this method the most robust as it allows a vpn connect to be made automatically, before a user logs in (useful for servers).

Updates for Yosemite (OSX 10.10)

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

Is depreciated in Yosemite. You can use the following instead

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

Also

networksetup -connectpppoeservice MyVPN 

No longer works in Yosemite. You can use this instead

scutil --nc start MyVPN 
 
 
 
 
0
 
vote

Eu vi que existem algumas respostas aqui que usam ganchos de login, aqueles são privados em versões mais recentes do OS X em favor do agente de lançamento e lançam daemons.

Eu criei um script e lançamento do agente. O agente chama um script de shell a cada 30 segundos e tenta ping um endereço IP que é estático na rede VPN. Se não puder ping que IP permite sua conexão VPN.

Se você fez isso através de um aplicativo de script Apple, o ícone do aplicativo sempre estará no seu dock. Eu prefiro ter isso funcionando automaticamente em segundo plano.

Clone o projeto abaixo e siga as instruções no Readme. O resultado final é um pacote instalador que colocará um arquivo de plist de plist de agente de lançamento em / biblioteca / lançamentos / e um script shell em / biblioteca / suporte a aplicação / Melonsmasher /.

Certifique-se de editar o script shell (Auto-VPN) com o nome da conexão VPN e um endereço IP que está na rede VPN. Você pode alterar o intervalo de execução no arquivo de plist (com.melonsmasher.autovpn.plist).

https://github.com/melonsmasher/osx-autovpn

 

I saw that there are a few answers on here that use login hooks, those are deprecated in newer versions of OS X in favor of Launch Agent and Launch Daemons.

I created a script and launch agent. The agent calls a shell script every 30 seconds and tries to ping an IP address that is static on the vpn network. If it cannot ping that IP it enables your vpn connection.

If you did this through an Apple Script App, the app icon will always be in your dock. I prefer to have this running automatically in the background.

Clone the project below and follow the directions in the readme. The end result is an installer package that will place a launch agent plist file in /Library/LaunchAgents/ and a shell script in /Library/Application Support/melonsmasher/.

Be sure to edit the shell script(auto-vpn) with your VPN connection name and an IP address that is on the VPN network. You can change the run interval in the plist file(com.melonsmasher.autovpn.plist).

https://github.com/MelonSmasher/OSX-AutoVPN

 
 
-2
 
vote

A beleza dos applscripts é que você pode fazer quase qualquer coisa com ela e é livre, a desvantagem é que eles geralmente não são muito responsivos (pesquisadores em um intervalo de tempo fixo) e a falta de recursos apenas apps nativos do Mac OS X podem ter. Um bom e novo VPN Auto Reconectar o aplicativo é "VPN Monitor" na App Store, ele se reconecta instantaneamente no momento em que uma conexão VPN cai, é capaz de se reconectar a um serviço VPN diferente, se o serviço preferencial estiver inativo, conecta-se no Start-up, Acompanhe o seu tempo de inatividade e usa um mínimo de recursos do sistema para ser executado em segundo plano como um aplicativo de status da barra. Monitor VPN

 

The beauty of AppleScripts is that you can do almost anything with it and it's free, the downside is that they are usually not very responsive (polling at a fixed time interval) and lack features only native MAC OS X apps can have. A nice and new VPN auto reconnect app is "VPN Monitor" in the app store, it reconnects instantly the moment a VPN connection drops, is able to reconnect to a different VPN service if the preferred service is down, connects at start-up, keeps track of your downtime and uses a minimum of system resources to run in the background as a statusbar application. VPN Monitor

 
 
 
 

Perguntas relacionadas

2  VPN quebra airdrop, sidecar etc. - qualquer ideia de como configurar a VPN para ativá-los?  ( Vpn breaks airdrop sidecar etc any idea how to set up vpn to enable them ) 
Meu local de trabalho usa a Cisco Anyconnect VPN (mas eu tenho visto os mesmos problemas com outros VPNs também, por exemplo, aqui ) e parece quebrar o arred...

1  Acesso à rede - Sonicwall VPN Opções  ( Network access sonicwall vpn options ) 
O cliente VPN interno conecta ao Sonicwall? ...

1  O Homekit Remote Access ainda funciona se eu adicionar uma VPN à minha Apple TV?  ( Will homekit remote access still work if i add a vpn to my apple tv ) 
Atualmente, tenho uma grande configuração de casa de casa em minha casa que funciona perfeitamente mesmo quando estou fora de casa. Eu entendo que o HomeKit f...

2  Melhore o desempenho de transferência de arquivos sobre VPN  ( Improve file transfer performance over vpn ) 
Eu tenho duas máquinas Apple: um servidor e um cliente. Ambos estão executando as mais novas construções da MacOS Sierra 10.12.6. A máquina "Servidor" está ex...

1  IKEV2 VPN Não está funcionando Após atualizar para MacOS Catalina - Autenticação do usuário falhou com as configurações de autenticação de nome de usuário  ( Ikev2 vpn not working after updating to macos catalina user authentication fai ) 
Eu tinha uma conexão VPN IKEV2 configurada com Macos Mojave que funcionou perfeitamente. Após a atualização para Catalina, não consigo me conectar à VPN com...

0  Bonjour Sleep Proxy / Wowlan / Wol  ( Bonjour sleep proxy wowlan wol ) 
Então eu tive uma questão interessante que acho que sei o que poderia ter acontecido, mas não tenho certeza se é realmente possível. Eu tenho 2 Mac correndo ...

6  Como apenas rotear o tráfego do Office sobre a VPN enquanto tendo a rota padrão para outro tráfego?  ( How to only route office traffic over the vpn while having default route for oth ) 
Eu tenho uma VPN para o meu escritório e gostaria de encaminhar apenas o tráfego do escritório sobre a VPN, mantendo minha rota padrão para outro tráfego. E...

1  Como bloquear tudo, exceto minha conexão com a VPN?  ( How to block everything except my connection to the vpn ) 
Estou tentando fazer murus bloquear tudo, exceto minha conexão com o servidor VPN. Não quero que meu Mac faça chamadas de saída para quaisquer portas, a men...

14  Obtendo VPN para reconectar automaticamente na queda de conexão  ( Getting vpn to auto reconnect on connection drop ) 
Eu uso a VPN integrada no Mac OS X 10.7.3. É ipsec, fwiw. De tempos em tempos, ele desconecta (provavelmente um problema com meu servidor corporativo). Existe...

2  Não é possível acessar a Internet depois de instalar o NordVPN  ( Cant access internet after installing nordvpn ) 
Assim que eu instalar o aplicativo NORDVPN da App Store no MacOS Mojave, a conexão com a Internet morre. Não consigo usar o meu navegador ou qualquer aplicati...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.