Riconnettersi automaticamente alla VPN al momento della disconnessione?


16

Sono un utente Ubuntu GNOME e mi chiedevo se c'è un modo per essere in grado di riconnettersi automaticamente a una VPN al momento della disconnessione . Sto usando il protocollo OpenVPN .

Ho controllato accuratamente Network Manager ma non sono riuscito a trovare tale opzione, solo per connettermi alla VPN quando connesso a un WiFi specifico.

Risposte:


20

A partire dal 18.10 (impossibile controllare nelle versioni precedenti) le connessioni VPN in NetworkManager hanno un'impostazione vpn.persistentche fa proprio questo: si riconnette a una VPN in caso di perdita della connessione fino a quando non ti disconnetti manualmente. È impostato di "no"default e sfortunatamente non è esposto né nelle Impostazioni di rete di Gnome né in nm-connection-editor.

Ma puoi impostarlo tramite una CLI come questa:

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

La connessione deve esistere prima di farlo, ovviamente


2
questo è quello che volevo. Grazie
mille

Poiché questa impostazione è disponibile, perché le impostazioni di rete non lo mostrano? E dove / come l'hai scoperto? Non c'è menzione di questo su developer.gnome.org/NetworkManager/stable/nmcli.html ma dato che l'esecuzione del comando sembra avere successo, immagino che funzioni ...
Al F

@alf Penso di aver trovato questa impostazione solo sfogliando nmcli nel terminale, ma è anche documentata su developer.gnome.org/NetworkManager/stable/… e nella pagina man di nm-settings
m0NKey bR4in

19

OpenVPN ha un meccanismo integrato per rilevare automaticamente i collegamenti non funzionanti e riconnettersi. In Network Manager vai su "Modifica connessioni", seleziona la tua connessione VPN e scegli "Modifica". Nella scheda "VPN" fai clic su "Avanzate ..." e vai alla scheda "Generale". Ci sono due opzioni pertinenti:

"Specifica intervallo di ping" indica a OpenVPN la frequenza con cui verificare se il collegamento è ancora attivo. "Specifica il ping di uscita o riavvio" indica il tempo di attesa prima che intervenga e quale azione intraprendere.

Esempio: le mie impostazioni sono "30 / ping-restart / 300". Ciò significa che OpenVPN verifica ogni 30 secondi se il collegamento è ancora attivo. Se il collegamento è inattivo per 300 secondi avvia un riavvio.

In questo modo non sono necessari script esterni ...


1
Questa dovrebbe essere la risposta accettata.
necbot,

5
Questo non è vero per Ubuntu 18.04 almeno. Ho un intervallo di ping e il riavvio del ping ma si disabiliterà comunque.
Visualizza nome

@SargeBorsch: la risposta di m0NKey bR4in sembra funzionare (impostazione vpn.persistentsu yes).
kontextify

1

Dopo aver scavato un po 'ho trovato questa risposta , l'ho testata (su Ubuntu GNOME 15.04) e finora sembra funzionare.

L'unica cosa che potrei aggiungere è che una volta creato il file di script non è necessariamente necessario salvarlo nella cartella / home. Puoi salvarlo ovunque, renderlo eseguibile e aggiungerlo all'elenco dei programmi di avvio.


0

Dopo aver affermato che si trattava di un SMOP (Simple Matter of Programming), ho scritto uno script bash che controlla "Link Down", quindi esegue uno script utente. Meno utilizzo della CPU, più reattivo del while true....sleep 30metodo. Vedi la mia risposta qui . Si tratta di "ruotare le connessioni WiFi", ma probabilmente funzionerà anche per te


0

questo script funzionerà il 16.04 dove nmcli con statusnon funziona più:

#!/bin/bash
CON="purple"
STATUS=`nmcli con show --active | grep purple | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
    nmcli con up $CON
fi

Un po 'più breve STATUS="$(nmcli con show -f name | grep purple)". Oppure puoi semplicemente verificare se la connessione effettiva è attiva facendonmcli con show --active id 'purple'
smac89

0

Penso che la risposta completa basata su altre risposte sia la seguente:

#!/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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.