VPN Autoconnect

39

Używam Ubuntu 13.04 z Gnome, a ja niedawno skonfigurowałem (otwartą) sieć VPN. Czy jest jakiś sposób, aby włączyć to domyślnie? Za każdym razem, gdy uruchamiam lub nawet tracę połączenie, muszę ręcznie włączyć VPN. Czy brakuje mi opcji?

Paul Woitaschek
źródło

Odpowiedzi:

66

Za pomocą wskaźnika menedżera sieci nm-aplet (domyślnie zainstalowany aplet zasobnika sieciowego GNOME lub Unity), możesz skonfigurować NetworkManager tak, aby automatycznie łączył się z VPN po podłączeniu sieci.

  1. Kliknij aplet zasobnika sieciowego i kliknij „Edytuj połączenia ...” lub uruchom nm-connection-editor.
  2. Wybierz połączenie sieciowe i kliknij „Edytuj ...”
  3. Zaznacz „Automatycznie połącz z VPN podczas korzystania z tego połączenia” i wybierz żądaną VPN z listy rozwijanej.
  4. Zapisać.

Zrzut ekranu edytora połączeń nm


Gdy ta opcja jest włączona, w NetworkManager występuje błąd, który może przerwać funkcję „automatycznie łącz się z tą siecią”. ( Edycja : ten błąd został teraz oznaczony jako „poprawka wydana” w Ubuntu 16.04). Jeśli NetworkManager spróbuje automatycznie połączyć się i nie powiedzie się, zobaczysz następujący wiersz /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.

Wygląda na to, że NetworkManager nie może uzyskać hasła VPN użytkownika gnome-keyring-daemon. Jednym z obejść jest zezwolenie NetworkManagerowi na przechowywanie hasła w postaci zwykłego tekstu w pliku konfiguracyjnym /etc/NetworkManager/system-connections/. Aby to zrobić:

  1. Otwórz terminal.
  2. sudoedit /etc/NetworkManager/system-connections/<VPN>, gdzie <VPN>jest plik konfiguracyjny dla Twojej sieci VPN (nazwa pliku to zwykle nazwa przypisana do Twojej sieci VPN).
  3. Zmień linię password-flags=1napassword-flags=0
  4. Zapisz i wyjdź.

NetworkManager będzie teraz przechowywał samo hasło VPN (zobacz man nm-settingsszczegóły), a automatyczne połączenie sieciowe będzie działać ponownie.

Vincent Yu
źródło
5
To nie istnieje w menedżerze sieci gnome.
Paul Woitaschek
4
Podczas otwierania nm-connection-editormożna to znaleźć podczas edytowania połączenia na karcie ogólnej .
Lode,
1
To powoduje, że samo połączenie nie łączy się ze mną automatycznie. Czy jest na to jakieś rozwiązanie?
Tamás Barta,
@Barta To jest błąd w NetworkManager. Dodałem obejście do mojej odpowiedzi.
Vincent Yu
8

Spójrz na vpnautoconnect.

vpnautoconnect to demon, który pozwala na ponowne automatyczne połączenie (również podczas uruchamiania) tworzenia VPN z menedżerem sieci. Może bardzo szybko połączyć się ponownie i monitorować pasmo, Działa z połączeniem pptp i openvpn.

Aby uzyskać więcej informacji i pobrać, odwiedź stronę internetową .

Spróbuj również:

użyj funkcji AUTOSTART w /etc/default/openvpn

Lub

Sprawdź UUID swojego połączenia VPN.

nmcli con list | grep -i vpn

UUID to druga kolumna z literami, cyframi i myślnikami.

Rozpocznij połączenie w terminalu. Wystarczy nacisnąć Ctrl+ Alt+ Tna klawiaturze, aby otworzyć Terminal. Kiedy się otworzy, uruchom poniższe polecenia:

nmcli con up uuid <put you UUID here>

Ustaw tę opcję, aby działała przy uruchomieniu.

Przejdź do Dash, wpisz i wybierz Aplikacje startowe, kliknij Dodaj i dodaj powyższe polecenie nmcli (z UUID). Kliknij „Dodaj”. W nazwie wpisz dowolną nazwę, której chcesz użyć, aw wierszu polecenia umieść całą linię nmcli powyżej. Kliknij ponownie „Dodaj”. Teraz uruchom ponownie i spróbuj.

Źródło: SourceForge

Mitch
źródło
Zainstalowałem i skonfigurowałem, uruchomiłem ponownie komputer, ale nie działa.
Paul Woitaschek,
W odpowiedzi dodałem więcej informacji.
Mitch
Czy jest jakaś dokumentacja dostępna vpnautoconnect? Ich strona internetowa jest opuszczoną stroną projektu SourceForge, a pakiet nie zawiera stron podręcznika man. Trudne to brzmi obiecująco.
Tamás Barta,
Nie mogę znaleźć, ale będę szukał dalej.
Mitch
Zmieniono nazwę listy akcji, aby wyświetlała się w 15.04 lub 15.10
Croll
2

Polecam sprawdzenie skryptu w tym artykule :

#!/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

Aby dowiedzieć się o wartości YourVPNUUID$ VPNNAME, po prostu uruchom następujące polecenie;

nmcli con list | grep -i vpn
rhoover
źródło
2

vpnautoconnect nie działało dla mnie w 12.04 LTS i nie wydaje mi się być jedynym.

Trochę go przestudiowałem i połączyłem istniejący kod, by stworzyć mój pierwszy skrypt bash. Sprawdza, czy dane połączenie VPN jest aktywne i nawiąże połączenie, jeśli nie. Jeśli jest podłączony, będzie spał przez określony czas, np. 1 minutę, i powtórzy proces w nieskończoność.

#! /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

Instrukcje:

  1. Utwórz pusty plik tekstowy o nazwie np. Vpn-auto-connector.sh (Zapisałem go w folderze domowym. Kliknij plik prawym przyciskiem myszy i wybierz Właściwości-> Uprawnienia i zaznacz „Zezwalaj na uruchamianie pliku jako programu”. (Może być konieczne zapisanie pliku gdzie indziej i / lub zmienić uprawnienia do odczytu / zapisu / wykładu, jeśli komputer ma wielu użytkowników).

  2. Skopiuj kod z góry do utworzonego pliku. Zamień wartości następujących trzech zmiennych:

    connection = „Auto Ethernet”

    vpn_connection = "Moje połączenie VPN"

    run_interval = "60"

    Można je znaleźć, otwierając menedżera sieci. W moim przypadku połączenie = „Auto Ethernet” to moje aktywne połączenie przewodowe (nie testowałem z siecią bezprzewodową), a vpn_connection = „Moje połączenie VPN” to nazwa mojego połączenia VPN. run_interval = „60” to przedział czasu w sekundach określający, kiedy należy powtórzyć skrypt.

  3. Otwórz Aplikacje-> Narzędzia systemowe-> Preferencje-> Aplikacje startowe. Dodaj odpowiednią nazwę, np. „VPN Auto Connector”, a dla polecenia wybierz wcześniej zapisany plik .sh. Teraz skrypt bash będzie uruchamiany podczas uruchamiania i będzie sprawdzał, czy połączenie VPN jest aktywne. Możesz go wypróbować, rozłączając połączenie VPN i powinno ono zostać ponownie aktywowane automatycznie.

PinkMistGenerator
źródło
Wielkie dzięki. Ten skrypt jest łatwy do zrozumienia.
Evan Hu
0

Vpnautoconnect działa dobrze w Ubuntu 12.04, 13.04 i 13.10 (Myślę, że w 13.10 opcja „połącz automatycznie” w Menedżerze sieci została naprawiona i działa teraz)

Tak więc, jeśli masz problemy z instalacją lub uruchomieniem lub nie możesz znaleźć opcji „openvpn” w rozwijanym menu Network-Managera, aby utworzyć otwarte połączenie VPN, możesz postępować zgodnie z tym tuto, który daje Ci wszystko kroki, bardzo jasne i łatwe do zastosowania.

Spójrz TUTAJ

I daj mi znać :-)

Pouchette
źródło
0

Oto bardzo solidny i niezawodny skrypt, który:

  • Sprawdź, czy masz połączenie z jakąkolwiek siecią VPN
  • Jeśli nie, połącz się z najnowszą aktywną siecią VPN

Jest to szczególnie przydatne, jeśli rutynowo łączysz się z różnymi sieciami VPN, ponieważ nie musisz określać pojedynczego połączenia VPN, aby połączyć się ponownie.

#!/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
Gość
źródło
Jest to naprawdę interesujące, ale powoduje kilka błędów w: $ nmcli -wersja nmcli narzędzie, wersja 0.9.10.0 $ lsb_release -a Żadne moduły LSB nie są dostępne. Identyfikator dystrybutora: Ubuntu Opis: Ubuntu 15.04 Wydanie: 15.04 Nazwa kodowa: vivid
gare
0

Korzystam z Ubuntu 14.04 LTS na kilku komputerach. Ze względu na to, że mam specjalne wymagania wstępne:

  1. Nie chcę zapisywać hasła w menedżerze haseł
  2. Korzystam z gościa VirtualBox, który traci VPN po ponownym połączeniu z siecią
  3. Okno dialogowe hasła otwiera się wielokrotnie po ponownym połączeniu
  4. Używam zapasowego serwera VPN (przełączanie awaryjne)
  5. Używanie pliku konfiguracyjnego dla moich Uuids

Pracuję z tym sprawdzonym i niezawodnym skryptem:

Istnieją jednak pewne zastrzeżenia dotyczące apletu menedżera sieci, które mogłem tymczasowo rozwiązać (patrz sekcja Rozwiązywanie problemów w tym artykule).

vpnautoconnect nie działa dla mnie.

apos
źródło
0

odpowiedź @vincentYo wygląda prosto, ale nie mogłem tego zrobić, więc zrobiłem to jak poniżej.

krok 1: utwórz skrypt powłoki i dodaj polecenie VPN

vim auto_vpn.sh

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

krok 2: otwórz plik sudoer i powiedz kernelowi, aby nie pytał o hasło do tego pliku.

sudo vim / etc / sudoers

większość rzeczy w tym pliku zostanie skomentowana, wystarczy dodać jak poniżej

nazwa użytkownika ALL = (root) NOPASSWD: twoja_shell_script.sh

przykład:

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

krok 3: skonfiguruj zadanie crona, które uruchomi ten skrypt powłoki, poniżej zadania cron będzie uruchamiane co minutę (bcz mój internet ciągle się włącza i wyłącza, więc co minutę)

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

Używam tego od wielu dni, dobrze działa w Ubuntu 16.04 LTS .. Słyszy !!

Sharath BJ
źródło