Błąd podczas próby połączenia z VPN podczas uruchamiania

13

To pytanie zostało zaktualizowane. Zobacz koniec tego postu.

Próbuję skonfigurować komputer Mythbuntu, aby łączył się z usługą VPN podczas uruchamiania. Mam nadzieję, że komputer Mythbuntu zawsze będzie korzystał z VPN dla wszystkich swoich połączeń internetowych.

I znalazłem skrypt , który podobno to zrobić, a wygląda to tak:

#!/bin/bash
while [ "true" ]
do
    VPNCON=$(nmcli con status)
    if [[ $VPNCON != "*MyVPNConnectionName*" ]]; then
        echo "Disconnected, trying to reconnect..."
        (sleep 1s && nmcli con up uuid df648abc-d8f7-4ce4-bdd6-3e12cdf0f494)
    else
        echo "Already connected !"
    fi
    sleep 30
done

Po uruchomieniu tego skryptu na moim komputerze pojawia się następujący błąd:

$ /home/mythbuntu/VPN_start.sh
Disconnected, trying to reconnect...
Error: Connection activation failed: Not authorized to control networking.

Pomyślałem, że może to być problem z uprawnieniami, więc spróbowałem uruchomić go z sudo:

$ sudo /home/mythbuntu/VPN_start.sh
[sudo] password for mythbuntu: 
Disconnected, trying to reconnect...
Active connection state: unknown
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/1
state: VPN connecting (need authentication) (2)
Error: Connection activation failed: no valid VPN secrets.

W jaki sposób mogę uruchomić ten skrypt bezbłędnie, aby można go było uruchomić podczas rozruchu lub logowania, aby mieć pewność, że zawsze łączę się przez VPN.

Jeśli ktoś ma lepszy skrypt lub metodę, wystarczyłoby to również jako odpowiedź.


Oto zawartość mojego pliku / etc / NetworkManager / system-connection / MyVPN (niektóre szczegóły zostały zastąpione znakami x dla zachowania prywatności):

[connection]
id=MyVPN
uuid=xxxxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxxxxx
type=vpn

[vpn]
service-type=org.xxxxxxxxxxxxxx.xxxxxxxxxxxxxxx.openvpn
username=xxxxxxxxxx
comp-lzo=yes
remote=us-xxxxxx.xxxxxxx.com
connection-type=password
password-flags=0
ca=/etc/openvpn/xxxxxxx.crt

[vpn-secrets]
password=xxxxxxxxxxx

[ipv4]
method=auto
never-default=true

Chcę też dodać, że kiedy włączam VPN za pomocą apletu w prawym górnym rogu panelu Xfce, nie łączy się to z żadnym problemem. Wydaje mi się, że problemem nie jest nieprawidłowa autoryzacja, ale konfiguracja przy próbie zrobienia tego z wiersza poleceń.

Aktualizacja:

Nie jestem do końca pewien, co się zmieniło - być może coś w aktualizacji do 12.10 - ale teraz mogę uruchomić moją usługę VPN z wiersza poleceń. Jednak to polecenie działa tylko raz, gdy uruchamiam komputer po raz pierwszy, a także musi zostać uruchomione sudo.

mythbuntu@mythbuntu:~$ nmcli con up id "Private Internet Access SSL"
Error: Connection activation failed: Not authorized to control networking.
mythbuntu@mythbuntu:~$ sudo nmcli con up id "Private Internet Access SSL"
[sudo] password for mythbuntu: 
mythbuntu@mythbuntu:~$

Ponieważ muszę go użyć sudodo uruchomienia tego, nie mogę uruchomić go automatycznie podczas uruchamiania.

Jak go zdobyć, aby móc uruchomić VPN bez uprawnień superużytkownika?

Indagator
źródło

Odpowiedzi:

8

Problem polega na tym, że twoje hasło w breloku nie jest dostępne.

Źródło

Wspomniane rozwiązanie polega na otwarciu pliku / etc / NetworkManager / system-connection / ConnectionName i ustawieniu

password-flags=0

i dodaj poniższe wiersze do pliku

 [vpn-secrets]
 password=YourPassword

Następnie uruchom ponownie menedżera sieci, aby odebrać zmianę:

 sudo restart network-manager

Aby uzyskać więcej informacji, zapoznaj się ze źródłem

devav2
źródło
Dziękuję za te pomocne informacje. Jedną z /etc/NetworkManager/system-connections/ConnectionNamerzeczy, która mnie utknęła, jest to, że nie miałem pliku, więc kiedy mówi się „edytuj pod [VPN]”, nie jestem pewien, jak sobie z tym poradzić. Czy mogę po prostu utworzyć plik?
PYTAJĄCY
tak / etc / NetworkManager / system-connections / <nazwa-vvnp-połączenia> i zmień password-flagsformę z 1 na 0. Użyj, nmcli conaby wyświetlić listę połączeń.
devav2
Okej, teraz to rozumiem. Zdałem sobie sprawę, że popełniam błąd, znajdując odpowiedni plik. Jednak teraz wprowadziłem wszystkie sugerowane zmiany, niestety nadal pojawia się ten sam Not authorized to control networkingbłąd.
PYTAJĄCY
Spróbuj ponownie otworzyć edytor połączeń NetworkManager i ponownie wprowadź hasła lub tajemnice VPN.
devav2
Otworzyłem Network Managera i ponownie wprowadziłem hasło (było puste po otwarciu interfejsu). Nie widziałem nic innego, co dotyczyłoby „tajemnic”. Zapisałem, a następnie ponowiłem skrypt. Nadal ten sam komunikat o błędzie.
PYTAJĄCY
2

Aby automatycznie uruchomić VPN przy uruchomieniu

Zakładając, że masz działające pliki poświadczeń, powinieneś być w stanie użyć dispatcher.dskryptu, tak jak pierwotnie musiałeś uruchomić VPN. Zmodyfikowałem nieco twój skrypt, aby działał z 2 połączeniami (router bezprzewodowy w domu i połączenie przewodowe w pracy). Powodem tego jest to, że chcę, aby uruchomiła VPN, jeśli nie zostanie uruchomiona, gdy jedno z moich wymaganych połączeń internetowych jest aktywne. W moim przykładzie skonfigurowałem je z domyślnymi nazwami, ale powinieneś je zmienić, aby pasowały do ​​własnych nazw.

Umieść to w pliku /etc/NetworkManager/dispatcher.d/vpn-upi wykonaj za pomocąchmod +x

#! /bin/bash

REQUIRED_CONNECTION1_NAME="linksys"
REQUIRED_CONNECTION2_NAME="Wired connection 1"
VPN_CONNECTION_NAME="My VPN"


activ_con=$(nmcli con status | grep "${REQUIRED_CONNECTION1_NAME}\|${REQUIRED_CONNECTION2_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

Aby skonfigurować certyfikaty klienta w NetworkManager

Jeśli używasz certyfikatu klienta z hasłem do uwierzytelnienia w sieci VPN, jest to trochę nieudokumentowane.

Po przejrzeniu specyfikacji ustawień NetworkManager 0.9 nie byłem w stanie określić, w jaki sposób określić certyfikat VPN w pliku konfiguracyjnym. Otworzyłem seahorsei znalazłem swój „ tajny VPN ” (hasło certyfikatu).

Został wymieniony jako coś w rodzaju „ Tajnego klucza certyfikatu VPN dla My VPN / org.freedesktop.NetworkManager.openvpn / vpn ”. Kliknięcie zakładki szczegółów dało mi wskazówkę co do setting-keynazwy:

setting-name: vpn
setting-key: cert-pass
connection-uuid: 0badcafe-f00d-dead-beef-feedfacef00d

Aby automatycznie uruchomić VPN jako root na Ubuntu 12.04 (Precise Pangolin) za pomocą NetworkManager 0.9.4.0:

Otwórz /etc/NetworkManager/system-connections/My VPNi dodaj cert-passklucz VPN, aby plik wyglądał następująco:

[connection]
id=My VPN
uuid=0badcafe-f00d-dead-beef-feedfacef00d
type=vpn
timestamp=1234567890

[vpn]
service-type=org.freedesktop.NetworkManager.openvpn
key=/home/<your-user>/path/to/certs/your.secure.key
ca=/home/<your-user>/path/to/certs/your.vpnca.crt
connection-type=tls
cert=/home/<your-user>/path/to/certs/your.crt
remote=your.vpn-server.com
cert-pass-flags=0
[vpn-secrets]
cert-pass=your-vpn-pass

[ipv4]
method=auto
never-default=true
TrinitronX
źródło
Dziękuję za tę odpowiedź. Mój system-connectionsróżni się jednak od twojego, więc nie jestem pewien, czy zastosuję zmiany. Nie mam keylub timestamp, a mój typ połączenia to passwordnie tls. Dodałem mój plik do mojego pytania.
PYTAJĄCY
Jeśli używasz connection-type=password, prawdopodobnie powinieneś używać password-flags=0i password=YourPasswordpod [vpn-secrets]nagłówkiem, jak sugeruje devav2.
TrinitronX
Jednak wyświetlany błąd sugeruje, że użytkownik, z którego korzystasz, VPN_start.shnie ma uprawnień do zarządzania siecią. Jeśli chcesz zarządzać połączeniami VPN jako użytkownik inny niż root, który nie ma uprawnień, może być konieczne dodanie niektórych zasad do /etc/dbus-1/system.d/org.freedesktop.NetworkManager.confpliku.
TrinitronX
Gdyby to była tylko kwestia uprawnień, czy skrypt nie działałby, gdybym go uruchomił sudo? Jak zauważono w moim pytaniu, nie działa, gdy go uruchamiam sudo.
PYTAJĄCY
Słuszna uwaga! Nie jestem pewien, dlaczego wyświetla się ten błąd, jeśli używasz sudo. Nie byłem w stanie samodzielnie przetestować twojego typu VPN, ponieważ mój router nie wydaje się być łatwy do skonfigurowania. Jeśli połączenie VPN działa poprawnie po uruchomieniu za pomocą apletu NetworkManager, nie wiem, co jeszcze sprawdzić.
TrinitronX