Conexão automática de VPN

39

Estou usando o Ubuntu 13.04 com Gnome e recentemente configurei uma VPN (aberta). Existe alguma maneira de habilitá-lo por padrão? Cada vez que inicializo ou até perco minha conexão, tenho que habilitar a VPN manualmente. Existe uma opção que está faltando?

Paul Woitaschek
fonte

Respostas:

66

Por meio do indicador do Network Manager nm-applet (o applet da bandeja de rede GNOME ou Unity instalado por padrão), você pode configurar o NetworkManager para conectar-se automaticamente a uma VPN quando uma rede estiver conectada.

  1. Clique no miniaplicativo da bandeja de rede e clique em "Editar conexões ..." ou execute nm-connection-editor.
  2. Selecione uma conexão de rede e clique em "Editar ..."
  3. Marque a opção "Conectar-se automaticamente à VPN ao usar esta conexão" e selecione a VPN desejada na lista suspensa.
  4. Salve .

captura de tela nm-connection-editor


Quando ativado, há um bug no NetworkManager que pode quebrar o "automaticamente conectar a essa rede" função. ( Editar : este bug foi marcado como "correção lançada" no Ubuntu 16.04). Se o NetworkManager tentar se conectar automaticamente e falhar, você verá uma linha como a seguinte em /var/log/syslog:

<error> [1401130450.367538] [nm-vpn-connection.c:1374] get_secrets_cb(): Failed to request VPN secrets #2: (6) No agents were available for this request.

Parece que o NetworkManager falha ao obter a senha de VPN do usuário gnome-keyring-daemon. Uma solução alternativa é permitir que o NetworkManager armazene a senha em texto sem formatação no arquivo de configuração /etc/NetworkManager/system-connections/. Para fazer isso:

  1. Abra um terminal.
  2. sudoedit /etc/NetworkManager/system-connections/<VPN>, onde <VPN>está o arquivo de configuração da sua VPN (o nome do arquivo geralmente é o nome que você atribuiu à sua VPN).
  3. Mude a linha password-flags=1parapassword-flags=0
  4. Salvar e sair.

O NetworkManager agora armazenará a própria senha da VPN (consulte man nm-settingspara obter detalhes) e a conexão automática da rede funcionará novamente.

Vincent Yu
fonte
5
Isso não existe no gerenciador de rede gnome.
Paul Woitaschek
4
Ao abrir, nm-connection-editorvocê pode encontrar isso ao editar uma conexão na guia geral .
Lode 25/10
11
Isso faz com que a conexão em si não se conecte automaticamente para mim. Existe alguma solução para isso?
Tamás Barta
@Barta Isso é um bug no NetworkManager. Eu adicionei uma solução alternativa à minha resposta.
Vincent Yu
8

Dê uma olhada no vpnautoconnect.

O vpnautoconnect é um daemon que permite que você se reconecte automaticamente (na inicialização também) a um VPN criado com o gerenciador de rede. Ele pode se reconectar muito rapidamente e monitorar a largura de banda.

Para mais informações e para fazer o download, visite o site .

Tente isto também:

use o recurso AUTOSTART em /etc/default/openvpn

Ou

Descobrir o UUID da sua conexão VPN.

nmcli con list | grep -i vpn

O UUID é a segunda coluna com letras, números e traços.

Inicie a conexão em um terminal. Basta pressionar Ctrl+ Alt+ Tno teclado para abrir o Terminal. Quando abrir, execute o (s) comando (s) abaixo:

nmcli con up uuid <put you UUID here>

Defina isso para executar na inicialização.

Vá para Dash, digite e escolha Startup Applications, clique em Add e adicione o comando nmcli acima (com o UUID). Clique em "Adicionar". No nome, digite o nome que você deseja usar e, em Comando, coloque toda a linha nmcli acima. Clique em "Adicionar" novamente. Agora, reinicie e tente.

Fonte: SourceForge

Mitch
fonte
Eu instalei e configurei, reiniciei meu computador, mas ele não funciona.
Paul Woitaschek
Eu adicionei mais algumas informações na minha resposta.
Mitch
Existe alguma documentação disponível para vpnautoconnect? O site deles é uma página de projeto abandonada do SourceForge e o pacote não fornece páginas de manual. Difícil parece promissor.
Tamás Barta
Parece que não consigo encontrar nenhum, mas continuarei procurando.
Mitch
A lista de ações foi renomeada para ser exibida em 15.04 ou 15.10
Croll
2

Eu recomendaria verificar o script neste artigo :

#!/bin/bash

# YourVPN here is the name of desired vpn connection to monitor
# edit this line:
##################
VPNNAME=YourVPNUUID
# enter desired time between checks here (in seconds)
SLEEPTIME=15
##################

nice=0

for (( ; ; )); do

# creating infinite loop

tested=$(nmcli con status uuid $VPNNAME | grep -c UUID)
#possible results:
# 0 - no connection - need to start
# 1 - working connection, continue.

case $tested in
"0")
echo "Not connected - starting"

#increase nice counter
nice=$[nice+1]

#if "nice start" fails for 3 times
if [ $nice -ge 3 ];
then
#TRY to knock hard way, resetting the network-manager (sometimes it happens in my kubuntu 12.04).
      echo "HARD RESTART!"
      nmcli nm enable false
      nmcli nm enable true
      sleep 5
      nmcli con up uuid $VPNNAME
      nice=0
else
#not yet 3 falures - try starting normal way
      echo "trying to enable."
      nmcli con up uuid $VPNNAME
fi

;;

"1")
echo "VPN seems to work" 

;;
esac

sleep $SLEEPTIME

done

Para descobrir o valor de YourVPNUUID$ VPNNAME, execute o seguinte;

nmcli con list | grep -i vpn
rhoover
fonte
2

O vpnautoconnect não funcionou para mim no 12.04 LTS, e eu não pareço ser o único.

Eu pesquisei um pouco e combinei alguns códigos existentes para criar meu primeiro script bash. Ele verifica se uma determinada conexão VPN está ativa e se conectará se não estiver. Se estiver conectado, ele dormirá por um tempo determinado, por exemplo, 1 minuto e repita o processo indefinidamente.

#! /bin/bash

while true
do
   connection="Auto Ethernet"
   vpn_connection="My VPN connection"
   run_interval="60"

   active_connection=$(nmcli dev status | grep "${connection}")
   active_vpn=$(nmcli dev status | grep "${vpn_connection}")

   if [ "${active_connection}" -a ! "${active_vpn}" ];
   then
      nmcli con up id "${vpn_connection}"
   fi

   sleep $run_interval
done

Instruções:

  1. Crie um arquivo de texto em branco chamado, por exemplo, vpn-auto-connector.sh (salvei-o na minha pasta pessoal. Clique com o botão direito do mouse no arquivo e escolha Propriedades-> Permissões e marque "Permitir a execução do arquivo como programa". (Talvez seja necessário armazenar o arquivo em outro lugar e / ou altere as permissões de leitura / gravação / exibição também se o seu computador tiver vários usuários.)

  2. Copie o código acima para o arquivo que você criou. Substitua os valores das três variáveis ​​a seguir:

    connection = "Auto Ethernet"

    vpn_connection = "Minha conexão VPN"

    run_interval = "60"

    Eles podem ser encontrados abrindo o gerenciador de rede. No meu caso, connection = "Auto Ethernet" é minha conexão com fio ativa (não foi testada com conexão sem fio) e vpn_connection = "Minha conexão VPN" é o nome da minha conexão VPN. run_interval = "60" é o intervalo de tempo em segundos para quando repetir o script.

  3. Abra Aplicativos-> Ferramentas do Sistema-> Preferências-> Aplicativos de Inicialização. Adicione um nome adequado, por exemplo, "VPN Auto Connector" e, para o comando, escolha o arquivo .sh que você salvou anteriormente. Agora, o script bash será executado na inicialização e continuará verificando se a conexão VPN está ativa. Você pode tentar desconectando a conexão VPN e ela deve ser ativada automaticamente novamente.

PinkMistGenerator
fonte
Muito obrigado. Este script é fácil de entender.
Evan Hu
0

O Vpnautoconnect funciona bem no Ubuntu 12.04, 13.04 e 13.10 (acho que no 13.10 a opção "conectar automaticamente" no Network-Manager foi corrigida e funciona agora)

Portanto, se você tiver problemas para instalá-lo ou fazê-lo funcionar, ou não encontrar a opção "openvpn" no menu suspenso do Network-Manager para criar uma conexão vpn aberta, siga este tuto, que fornece tudo as etapas, muito claras e fáceis de aplicar.

Dê uma olhada AQUI

E deixe-me saber :-)

Pouchette
fonte
0

Aqui está um script muito robusto e confiável que irá:

  • Verifique se você está conectado a qualquer VPN
  • Caso contrário, conecte-se à VPN ativa mais recente

Isso é especialmente útil se você se conectar rotineiramente a VPNs diferentes, pois não precisa especificar uma única conexão VPN para se reconectar.

#!/bin/bash

nmcli --mode multiline --fields uuid,vpn connection status | grep -qc "^VPN:.*yes" 1>/dev/null 2>&1

if [ $? -ne 0 ]; then
        last_vpn_uuid=`nmcli --mode tabular --fields uuid,type,timestamp connection list | grep -E "\s+vpn\s+" | sort -k3 -nr | head -n1 | awk '{ print $1 }'`

        nmcli connection up uuid "$last_vpn_uuid"
fi
Hóspede
fonte
Isso é realmente interessante, mas gera vários erros: $ nmcli -version ferramenta nmcli, versão 0.9.10.0 $ lsb_release -a Nenhum módulo LSB está disponível. Distribuidor ID: Ubuntu Descrição: Ubuntu 15.04 lançamento: 15.04 Codename: vívida
gare
0

Estou no Ubuntu 14.04 LTS em várias máquinas. Devido ao fato, eu tenho alguns pré-requisitos especiais:

  1. Não quero salvar a senha no gerenciador de senhas
  2. Estou usando um convidado do VirtualBox que perde a VPN na reconexão da rede
  3. O diálogo de senha é aberto várias vezes ao reconectar
  4. Estou usando um servidor VPN de backup (failover)
  5. Usando um arquivo de configuração para meus uuids

Estou trabalhando com este script muito comprovado e muito confiável:

No entanto, existem algumas advertências sobre o applet do gerenciador de rede que eu poderia resolver temporariamente (consulte a seção Solução de problemas deste artigo).

O vpnautoconnect não funciona para mim.

apos
fonte
0

Responder por @vincentYo parece simples, mas eu não consegui fazê-lo, então fiz como abaixo.

step1: crie um script de shell e adicione o comando vpn

vim auto_vpn.sh

#!/bin/sh vpnc --enable-1des

passo 2: abra um arquivo sudoer e diga ao kernel para não pedir senha para este arquivo.

sudo vim / etc / sudoers

a maioria das coisas dentro deste arquivo será comentada, basta adicionar como abaixo

nome de usuário ALL = (root) NOPASSWD: your_shell_script.sh

exemplo:

sharath ALL = (root) NOPASSWD: /home/sharath/workspace/work/src/auto_vpn.sh

step3: configure um trabalho cron, que acionará esse script de shell, abaixo do trabalho cron será executado a cada minuto (bcz, minha internet continua ligada e desligada, então a cada minuto)

* * * * * sudo /home/sharath/workspace/work/src/auto_vpn.sh

Estou usando isso por muitos dias, funcionando bem no ubuntu 16.04 LTS ..Chears !!

Sharath BJ
fonte