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.

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


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


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.


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ê


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.