Reconectar automaticamente à VPN ao desconectar?

16

Eu sou um usuário do Ubuntu GNOME e queria saber se existe uma maneira de conseguir reconectar automaticamente a uma VPN quando desconectada . Estou usando o protocolo OpenVPN .

Verifiquei cuidadosamente o Network Manager, mas não consegui encontrar essa opção, apenas para conectar-me à VPN quando conectado a um WiFi específico.

Patrik
fonte

Respostas:

20

A partir da 18.10 (não é possível fazer o check-in nas versões anteriores), as conexões VPN no NetworkManager têm uma configuração vpn.persistentque faz exatamente isso: reconecta-se a uma VPN com perda de conexão até você se desconectar manualmente. Ele está definido como "no"padrão e infelizmente não é exposto nem nas Configurações de rede do Gnome nem no editor de conexão nm.

Mas você pode configurá-lo através de uma CLI como esta:

nmcli connection modify <Your VPN connection name> vpn.persistent yes

A conexão deve existir antes de você fazer isso, é claro

m0NKey bR4in
fonte
2
era isso que eu queria. Graças um milhão
Wyatt8740
Como essa configuração está disponível, por que as configurações de rede não a mostram? E onde / como você descobriu? Não há menção a isso em developer.gnome.org/NetworkManager/stable/nmcli.html mas desde a execução do comando parece ter sucesso Eu acho que ele funciona ...
Al F
@alf Acho que encontrei essa configuração apenas cutucando nmcli no terminal, mas também está documentada em developer.gnome.org/NetworkManager/stable/… e na página do
manual
19

O OpenVPN possui um mecanismo interno para detectar automaticamente links mortos e reconectar. No Network Manager, vá em "Editar conexões", selecione sua conexão VPN e escolha "Editar". Na guia "VPN", clique em "Avançado ..." e vá para a guia "Geral". Lá você tem duas opções relevantes:

"Especificar intervalo de ping" informa ao OpenVPN com que freqüência verificar se o link ainda está ativo. "Especificar sair ou reiniciar o ping" indica quanto tempo esperar até que a ação seja executada e qual ação executar.

Exemplo: Minhas configurações são "30 / ping-restart / 300". Isso significa que o OpenVPN verifica a cada 30 segundos se o link ainda está ativo. Se o link estiver inativo por 300 segundos, ele será reiniciado.

Dessa forma, não há necessidade de scripts externos ...

OttoEisen
fonte
1
Essa deve ser a resposta aceita.
Necbot
5
Isso não é verdade para o Ubuntu 18.04, pelo menos. Eu tenho intervalo de ping e ping-restart, mas ele será desativado de qualquer maneira.
Exibir nome
@ SargeBorsch: a resposta de m0NKey bR4in parece funcionar (configurando vpn.persistentpara yes).
Kontextify
1

Depois de um pouco de pesquisa, encontrei esta resposta , testei-a (no Ubuntu GNOME 15.04) e até agora parece funcionar.

A única coisa que posso acrescentar é que, uma vez que o arquivo de script é criado, ele não precisa necessariamente ser salvo na sua pasta / home. Você pode salvá-lo em qualquer lugar, torná-lo executável e adicioná-lo à lista de programas de inicialização.

Patrik
fonte
0

Depois de afirmar que era um SMOP (Simple Matter of Programming), escrevi um script bash que monitora "Link Down" e depois executa um script de usuário. Menos uso da CPU, mais responsivo que o while true....sleep 30método. Veja minha resposta aqui . Trata-se de "rotacionar conexões WiFi", mas provavelmente também funcionará para você

waltinator
fonte
0

esse script funcionará no 16.04, onde nmcli con statusnão funcionará mais:

#!/bin/bash
CON="purple"
STATUS=`nmcli con show --active | grep purple | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
    nmcli con up $CON
fi
George
fonte
Um pouco mais curto STATUS="$(nmcli con show -f name | grep purple)". Ou você pode simplesmente verificar se a conexão real é ativo, fazendonmcli con show --active id 'purple'
smac89
0

Eu acho que a resposta completa com base em outras respostas é a seguinte:

#!/bin/bash +x
  while [ "true" ]
   do
        CON="Your-VPN-Name"
        STATUS=`nmcli con show --active | grep $CON | cut -f1 -d " "`
        if [ -z "$STATUS" ]; then
                echo "Disconnected, trying to reconnect..."
                (sleep 1s && nmcli con up $CON)
        else
                echo "Already connected !"
        fi
        sleep 30
   done
ali mohebbi
fonte