Jak automatycznie połączyć się z VPN za pomocą Network-Managera

18

Mam działające połączenie VPN. Teraz chcę, aby to połączenie VPN aktywowało się automatycznie, gdy jestem w określonej sieci bezprzewodowej. Czy istnieje nieinwazyjny sposób graficzny za pomocą apletu menedżera sieci? Jeśli dobrze pamiętam, to działało przez chwilę i już nie.

Udostępniłem omawiane połączenie bezprzewodowe dla wszystkich użytkowników za to, że nie musieli wpisywać hasła za każdym razem.

Używany program CLI to vpnc z włączoną funkcją Hybrid-Auth (kompatybilny z klientem cisco VPN) z PPA sroeckera

EDYCJA: Mogę już „wypróbować odpowiedzi (z powodu eduroam) i ponieważ żadna odpowiedź nie wydaje się zyskać większości głosów, po prostu zostawię ją bez odpowiedzi, dopóki nie zostanie głosowana, to zaakceptuję.

turbo
źródło
jak sobie z tym radzisz?
rlemon
Nie potrzebowałem tego od dłuższego czasu. Może przyjdzie w kwietniu na nowy uniwersytet.
turbo
Duplikat Possibel? askubuntu.com/questions/86365
fossfreedom
@fossfreedom nie jest duplikatem dokładnie dlatego, że moje pytanie dotyczy raczej vpnc niż openconnect.
turbo
Napisałem krótki post blokowy na temat blokowania połączenia internetowego, chyba że sieć VPN jest uruchomiona: mentat.za.net/blog/2015/01/24/vpn-only-internet
Stefan van der Walt

Odpowiedzi:

18

Rozwiązanie sugerowane przez con-f-usepowinno działać, ale nie działa z powodu długotrwałego błędu:

https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/280571

Istnieją jednak obejścia. W najnowszych wersjach NetworkManager istnieje narzędzie wiersza poleceń nmcli, które można edytować i zapisywać jako /etc/NetworkManager/dispatcher.d/vpn-up:

#! /bin/bash

REQUIRED_CONNECTION_NAME="<name-of-connection>"
VPN_CONNECTION_NAME="<name-of-vpn-connection>"


activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION_NAME}")
activ_vpn=$(nmcli con status | grep "${VPN_CONNECTION_NAME}")
if [ "${activ_con}" -a ! "${activ_vpn}" ];
then
    nmcli con up id "${VPN_CONNECTION_NAME}"
fi

[Nie testowałem tego - możesz testować i edytować zgodnie z wynikami]

Zobacz: https://wiki.archlinux.org/index.php/NetworkManager#Use_dispatcher_to_connect_to_a_vpn_after_a_network-connection_is_established ma więcej informacji.

Hugo Heden
źródło
zwróć uwagę, że w 13.04 musiałem umieścić ten skrypt w /etc/network/if-up.d i naprawić / etc / NetworkManager / system-connections / connection-name zgodnie z askubuntu.com/questions/198136/... aby uniknąć „Nie ważny
kod tajny
Hack Arch Arch faktycznie działa! Próbowałem skryptu na arch wiki 11 lipca 2013 roku i modyfikacja go z „nmcli ...” na „su [użytkownik] -c„ nmcli ... ”” nie działa! postępuj zgodnie z instrukcjami jak na wiki i nie zapomnij okrzyki chmod + x;)!
Błąd wspomniany przez Hugo Eden ( bugs.launchpad.net/ubuntu/+source/network-manager/+bug/280571 ) został naprawiony powyżej 5 miesięcy temu. Nadal jednak doświadczam tego w Precyzyjnym ... Co daje?
iGadżet
Nie działało to dla mnie, więc postanowiłem to sprawdzić /var/log/syslogi zobaczyłem następujący błąd: Mar 4 13:49:51 oleg-HP nm-dispatcher.action: Cannot execute /etc/NetworkManager/dispatcher.d/vpn-up ': nie może być wykonywany przez właściciela. Rozwiązaniem byłobysudo chmod 755 /etc/NetworkManager/dispatcher.d/vpn-up
Oleg Belousov
8

W Ubuntu Trusty 14.04 VPN sklep auto connect w GUI na indywidualnych zapisanych ustawieniach Wi-Fi. Ustawienia systemowe - Sieć - sprawdź zainteresowane Wi-Fi lub Lan - Ustawienia (karta Ogólne) - wybierz „Automatyczne połączenie z VPN ...”

Dr.Osd
źródło
3

Jeśli dobrze pamiętam, to działało przez chwilę i już nie.

  • Może to być oczywiste, ale czasami o tym nie myślę. Czy próbowałeś ponownej instalacji:

    sudo apt-get purge network-manager-vpn sudo apt-get purge network-manager-vpnc Następnie: wprowadź opis zdjęcia tutaj

Teraz chcę, aby to połączenie VPN aktywowało się automatycznie, gdy jestem w określonej sieci bezprzewodowej.

  • Istnieje sposób, aby ukryć wiadomości typu „nie można połączyć”, gdy użytkownicy znajdują się w niewłaściwej sieci, ale nie pamiętają, jak poszło. Nie widzę innego sposobu automatycznego łączenia się w sposób graficzny. Być może będziesz musiał napisać skrypt wykonujący połączenie, gdy we wspomnianej sieci WLAN.

Mam nadzieję, że to pomogło.

dezorientować
źródło
Nadal nie przyszedłem do testowania tego. Oznaczę odpowiedź, kiedy to zrobię. Obietnica.
turbo
z mojego doświadczenia to nie działa. Uważam, że jest to błąd w NetworkManager
Conor Rynne,
3
Tak, to jest zepsute, nawet w Precyzji. Nie łączy się automatycznie
O_o
Tak - zepsute. Nie działa (Ubunutu 12.04).
user48956
3

Mogę potwierdzić, że następujące rozwiązanie działa dla mnie. Używam Ubuntu 14.04 LTS.

Poszedłem do ikony zamykania, a następnie ustawień systemowych.

Po otwarciu ekranu ustawień przeszedłem do „Sieci” i sieci Wi-Fi, z którą byłem połączony. Z jednej strony nazwy sieci znajduje się mała strzałka.

Zrzut ekranu ustawień w języku arabskim

Kliknij tę ikonę, aby wyświetlić opcję „Ustawienia” lub „Opcje” (lub coś podobnego):

Kliknij ustawienia

Kiedy otworzy się następne okno, po prostu przejdź do zakładki „Ogólne” i powinieneś zobaczyć opcję, która daje opcję automatycznego połączenia z VPN. Wybierz VPN, z którym chcesz się połączyć po podłączeniu do tego WiFi i boom! Za każdym razem, gdy łączysz się z tą siecią, Ubuntu również łączy Cię z tą siecią VPN. :)

Dla mnie to działa. Mam nadzieję, że zadziała to także dla wszystkich innych. Nie wymaga edytora tekstu, edytora kodu ani niczego innego.

Muhammad bin Yusrat
źródło
0

Użyj następującego skryptu Python Gist # 1547663 .

Pierwszy parametr skryptu to nazwa połączenia VPN w NetworkManager, a drugi to oddzielone przecinkami nazwy sieci, które należy zignorować (np. Używanie połączenia VPN w domu jest bezużyteczne).

Przykład instalacji i uruchomienia w czasie uruchamiania:

git clone git://gist.github.com/1547663.git /home/user/autovpn/
echo "python /home/user/autovpn/autovpn.py 'myvpn' 'Auto homenetwork,Auto worknetwork' > /var/log/autovpn.log&" > /etc/rc.local
/etc/rc.local

Teraz, jeśli podłączysz się do sieci (Wi-Fi lub Ethernet), spróbuje również skonfigurować połączenie VPN.

iElectric
źródło
1
Myślę, że to podejście jest mniej eleganckie, ponieważ proces działający w tle jest aktywny przez cały czas, podczas gdy może być sterowany zdarzeniami, jak w odpowiedzi @hugoheden.
gertvdijk
Robi więcej niż jego odpowiedź: obsługuje również ponowne łączenie VPN i przypadki, w których użytkownik ręcznie wyłącza połączenie VPN (co oznacza, że ​​nie powinien próbować ponownie łączyć VPN w takim przypadku)
iElectric
0

Nie potrzebujesz już żadnych skryptów dyspozytorskich! W 14.04 (Trusty Tahr) po ustawieniu opcji autoconnect w GUI NetworkManager musisz wykonać następujące kroki.

Przechowuj vpn-secrets jawnie w pliku konfiguracyjnym dla połączenia VPN pod /etc/NetworkManager/system-connections/YourVPNConnectionName.

Możesz to osiągnąć, ustawiając IPSec secret-flags=0i Xauth password-flags=0w pliku konfiguracyjnym. Następnie przejdź do GUI NetworkManager i ponownie zapisz ustawienia połączenia VPN. Teraz sekcja o nazwie [vpn-secrets] powinna znajdować się w pliku konfiguracyjnym. Sprawdź to dwukrotnie i automatyczne połączenie powinno już działać!

abbrandl
źródło
0

Mimo że strona podręcznika podaje nmcli con statusjako poprawne polecenie, powyższe rozwiązanie dostarczone przez Hugo Hedenzwraca błąd"Error: Object 'status' is unknown, try 'nmcli help'"

Korzystam z nmcli 1.2.2 ( nmcli -v), przetestowałem i zmodyfikowałem następujące elementy /etc/NetworkManager/dispatcher.d/vpn-upi działało to jak urok.

#! /bin/bash

REQUIRED_CONNECTION_NAME="<name-of-connection>"
VPN_CONNECTION_NAME="<name-of-vpn-connection>"


default_conn=$(nmcli con show --active | grep "${REQUIRED_CONNECTION_NAME}")
vpn_conn=$(nmcli con show id | grep "${VPN_CONNECTION_NAME}")
if [ "${default_conn}" -a ! "${vpn_conn}" ];
then
    nmcli con up id "${VPN_CONNECTION_NAME}"
fi

Uwaga: Możesz użyć, nmcli con showaby zobaczyć wszystkie nazwy połączeń, ponieważ nie zawsze są one takie same, jak te wymienione w GUI połączeń sieciowych

jw00druff
źródło
OP pyta o Ubuntu.
fosslinux
Zarówno Kali, jak i Ubuntu są oparte na Debianie, więc często rozwiązanie jest takie samo. Właśnie poszedłem do przodu i przetestowałem to na instancji Ubuntu 15.10, a błąd nmcli był taki sam, jak wspomniałem powyżej. Rozwiązanie działało tak samo. Wersja nmcli zainstalowana na pudełku 15.10 to 1.0.4.
jw00druff
0

Jeśli wolisz terminale, możesz użyć nmcli, zrobiłem to za pomocą następujących poleceń:

Najpierw znajdź i otwórz połączenie VPN, które chcesz zaktualizować

➜  ~ nmcli c show --active |grep vpn
MyVPN           115ae594-aa91-4d13-8c92-421af245f935  vpn     wlp61s0         
➜  ~ nmcli c edit MyVPN

Spowoduje to otwarcie monitu nmcli, z tego miejsca możesz zapytać o wartości i ustawić je w następujący sposób:

===| nmcli interactive connection editor |===
...
nmcli> print connection.autoconnect
connection.autoconnect: no
nmcli> set connection.autoconnect yes
nmcli> save persistent
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? (yes/no) [yes] yes
Connection 'MyVPN' (115ae594-aa91-4d13-8c92-421af245f935) successfully updated.

I powinieneś skończyć!

Gustaf
źródło
0

Możesz dodać identyfikator UUID profilu VPN, używając pola „pomocnicze” w podstawowym połączeniu

Na przykład, /etc/NetworkManager/system-connections/Wired

[connection]
id=Wired
uuid=95ad54f8-9d72-3e65-a4a7-b106aa310eed
type=ethernet
secondaries=66ecf287-8b26-413b-86f2-caca7608bc67;

Odwołaj się do https://developer.gnome.org/NetworkManager/stable/nm-settings.html

Hai Nguyen
źródło