Automatyczne ponowne połączenie z VPN po rozłączeniu?

16

Jestem użytkownikiem Ubuntu GNOME i zastanawiałem się, czy istnieje sposób, aby móc automatycznie połączyć się ponownie z VPN po rozłączeniu . Używam protokołu OpenVPN .

Dokładnie sprawdziłem Menedżera sieci, ale nie mogłem znaleźć takiej opcji, aby połączyć się z VPN po połączeniu z konkretną siecią Wi-Fi.

Patrik
źródło

Odpowiedzi:

20

Począwszy od 18.10 (nie można sprawdzić we wcześniejszych wersjach) połączenia VPN w NetworkManager mają ustawienie, vpn.persistentktóre robi to tylko: ponownie łączy się z VPN po utracie połączenia, aż do rozłączenia ręcznie. "no"Domyślnie jest ustawiony i niestety nie jest ujawniany ani w Gnome Network Settings, ani w nm-connection-editor.

Ale możesz ustawić to za pomocą interfejsu CLI:

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

Oczywiście połączenie musi istnieć, zanim to zrobisz

m0NKey bR4in
źródło
2
tego chciałem. Dzięki milion
Wyatt8740,
Ponieważ to ustawienie jest dostępne, dlaczego ustawienia sieciowe go nie pokazują? A gdzie / jak się dowiedziałeś? Nie ma wzmianki o tym na developer.gnome.org/NetworkManager/stable/nmcli.html, ale skoro uruchomienie polecenia wydaje się skuteczne, wydaje mi się, że działa ...
Al F
@alf Myślę, że znalazłem to ustawienie po prostu szturchając nmcli w terminalu, ale jest to również udokumentowane na developer.gnome.org/NetworkManager/stable/... oraz na stronie
podręcznika
19

OpenVPN ma wbudowany mechanizm automatycznego wykrywania martwych łączy i ponownego łączenia. W Menedżerze sieci przejdź do „Edytuj połączenia”, wybierz połączenie VPN i wybierz „Edytuj”. W zakładce „VPN” kliknij „Zaawansowane ...” i przejdź do zakładki „Ogólne”. Istnieją dwie odpowiednie opcje:

„Określ interwał pingowania” informuje OpenVPN, jak często sprawdzać, czy łącze nadal działa. „Określ ping wyjścia lub restartu” mówi mu, jak długo czekać, aż podejmie akcję i która akcja.

Przykład: Moje ustawienie to „30 / ping-restart / 300”. Oznacza to, że OpenVPN sprawdza co 30 sekund, czy łącze jest nadal aktywne. Jeśli łącze nie działa przez 300 sekund, inicjuje ponowne uruchomienie.

W ten sposób nie ma potrzeby stosowania zewnętrznych skryptów ...

OttoEisen
źródło
1
To powinna być zaakceptowana odpowiedź.
necbot 12.09.17
5
Nie dotyczy to przynajmniej Ubuntu 18.04. Mam interwał ping i ping-restart, ale i tak się wyłączy.
Wyświetlana nazwa:
@SargeBorsch: wydaje się, że odpowiedź m0NKey bR4in działa (ustawienie vpn.persistentna yes).
kontekstify
1

Po kilku kopaniach znalazłem tę odpowiedź , przetestowałem ją (na Ubuntu GNOME 15.04) i jak dotąd wydaje się działać.

Jedyne, co mogę dodać, to to, że po utworzeniu pliku skryptu niekoniecznie musi on zostać zapisany w folderze / home. Możesz go zapisać w dowolnym miejscu, ustawić jako wykonywalny i dodać do listy programów startowych.

Patrik
źródło
0

Po stwierdzeniu, że był to SMOP (Simple Matter of Programming), napisałem skrypt bash, który monitoruje „Link Down”, a następnie wykonuje skrypt użytkownika. Mniejsze zużycie procesora, większa szybkość reakcji niż while true....sleep 30metoda. Zobacz moją odpowiedź tutaj . Chodzi o „obracanie połączeń WiFi”, ale prawdopodobnie również dla ciebie zadziała

waltinator
źródło
0

ten skrypt będzie działał 16.04, gdzie nmcli con statusjuż nie działa:

#!/bin/bash
CON="purple"
STATUS=`nmcli con show --active | grep purple | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
    nmcli con up $CON
fi
Jerzy
źródło
Troszkę krótszy STATUS="$(nmcli con show -f name | grep purple)". Możesz też po prostu sprawdzić, czy rzeczywiste połączenie jest aktywne, wykonującnmcli con show --active id 'purple'
smac89
0

Myślę, że pełna odpowiedź oparta na innych odpowiedziach wygląda następująco:

#!/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
źródło