Ten sam profil, dwie sesje: z pulpitu połączenie działa, a przez SSH zawiesza się na monicie, na który nic nie może odpowiedzieć. Nic nie jest zepsute i żadne ustawienie nie zginęło. NetworkManager pyta agenta sekretów o dane uwierzytelniające, a agent sekretów to składnik pulpitu, którego nie ma w sesji, której używasz.

Uruchom poniższą sekwencję, a tunel wstanie bez interfejsu graficznego, z zastrzeżeniem, że zapisanie sekretu zmienia to, kto może używać tego profilu.

Potwierdź diagnozę, zanim cokolwiek zmienisz

Różnica między aktywacją interakcyjną a nieinterakcyjną to cała diagnoza. Jeśli nmcli --ask connection up się udaje, a zwykła aktywacja zawiesza się, profil jest poprawny i brakuje źródła sekretu. To jedno porównanie oszczędza ci przepisywania działającej konfiguracji.

nmcli -f NAME,UUID,TYPE connection show
nmcli connection show "Office IPsec" | grep -i flags

Czytaj flagi, zamiast je zgadywać. Wartości oznaczające "zapytaj agenta" to właśnie to, czego szukasz, a dokładne nazwy kluczy różnią się między wtyczkami VPN, bo mieszkają w słowniku danych samej wtyczki. Profil FortiSSL i profil IPsec niekoniecznie używają tych samych nazw, więc pracuj na wyjściu własnego profilu.

Potwierdź też, że pakiet wtyczki dla tego protokołu jest zainstalowany. Brakująca wtyczka objawia się jako nieznany typ połączenia albo jako błąd aktywacji, który nic nie mówi o hasłach, a pogoń za sekretem w tym stanie marnuje tę samą godzinę dwa razy. Jedno zapytanie o pakiet jest tańsze niż całe popołudnie edycji plików kluczy.

Przenieś sekret do pliku klucza

Plik połączenia znajduje się pod /etc/NetworkManager/system-connections/. Sekrety nie są tam domyślnie przechowywane i właśnie o to chodzi we flagach, które przed chwilą przeczytałeś. Ustawienie flagi na zero mówi NetworkManagerowi, że wartość jest zapisana razem z profilem, a nie pobierana w momencie aktywacji.

[vpn]
password-flags=0

[vpn-secrets]
password=YOUR-VPN-PASSWORD

Dla profilu z dwoma sekretami wzorzec się powtarza: jedna flaga na sekret w sekcji [vpn], a wartości w [vpn-secrets]. Profil IPsec zwykle niesie wstępnie współdzielony klucz obok danych użytkownika, a wtyczka nazywa je inaczej niż zwykłe pole hasła, więc kopiuj nazwy kluczy z wyjścia vpn.data, a nie z wpisu na blogu, który używał innej wtyczki. Jedna błędna nazwa klucza daje profil, który się ładuje, a potem zawodzi na uwierzytelnianiu, co czyta się dokładnie jak złe hasło. Przed ponownym połączeniem porównaj swój plik z działającym profilem tej samej wtyczki.

Ujmij w cudzysłowy wartości zawierające spacje, cudzysłowy lub znak dolara. Wartość bez cudzysłowów ze znakiem $ zostanie odczytana dosłownie lub rozwinięta w zależności od tego, gdzie jest parsowana, a wynikający z tego błąd uwierzytelniania wygląda jak złe hasło.

Następnie popraw właściciela i tryb pliku. Te pliki kluczy czyta uprzywilejowana usługa, a plik, który mogą czytać inni użytkownicy, jest uznawany za niezaufany, co jest zwykłą przyczyną tego, że edytowany profil wydaje się ignorowany. Właściciel root, tryb 600, bez wyjątków.

Przeładuj, potem aktywuj

Plik jest czytany przy ładowaniu połączenia, więc sama edycja nie wystarcza. Przeładuj profile, a potem podnieś połączenie jawnie.

sudo nmcli connection reload
sudo nmcli connection up "Office IPsec"

Jeśli przeładowanie nie podejmie zmiany, robi to pełny restart usługi, i są doniesienia dokładnie o tym. Preferuj przeładowanie, gdy liczą się inne łącza, bo restart usługi zrywa każde zarządzane połączenie, a na zdalnym hoście może zakończyć twoją sesję, zanim podniesie się tunel, którego chciałeś.

Używaj UUID, gdy nazwy są niejednoznaczne. Maszyny z kilkoma profilami klientów gromadzą niemal-duplikaty, a aktywacja niewłaściwego daje błąd, który wygląda jak problem z danymi uwierzytelniającymi.

Gdy zapisany sekret nie jest problemem

Profil FortiSSL może zawieść nawet z poprawnie zapisanymi danymi, bo klient nigdy nie ufa certyfikatowi bramy. To ustawienie nie jest w głównym oknie; znajduje się za opcjami zaawansowanymi VPN, gdzie wpisuje się skrót zaufanego certyfikatu. Jeśli log wspomina certyfikat, a nie hasło, jesteś w tej gałęzi i żadna edycja [vpn-secrets] nie pomoże.

Należą tu jeszcze dwie kontrole. Potwierdź, że profil nie został zaimportowany z pliku, który wciąż wskazuje ścieżkę, której wtyczka nie może odczytać, i potwierdź, że profil jest tym aktywnym, a nie przestarzałym duplikatem. Oba dają błędy aktywacji, które czyta się jak błędy uwierzytelniania.

Zdecyduj, czy zapis jest akceptowalny

Zapisany PSK i hasło może odczytać wszystko, co działa jako root na tej maszynie. Na maszynie, którą kontrolujesz, to rozsądna wymiana za usługę bez interfejsu. Na współdzielonym hoście zasługuje to na rozmowę, bo profil zawiera teraz dane, które wcześniej chronił pęk kluczy pulpitu. Zapytaj, kto jeszcze może dotrzeć do roota na tym hoście, zanim zdecydujesz, a nie po wdrożeniu zmiany.

Jeśli polityka zabrania przechowywania sekretów VPN, nie osłabiaj profilu, żeby zadziałało zadanie cron. Uruchamiaj połączenie z sesji, która ma agenta, albo użyj innego mechanizmu automatyzacji.

Na koniec zapisz, które profile noszą sekrety, żeby nikt nie skopiował jednego na laptopa niepostrzeżenie. Komentarz nad sekcją sekretów z datą i powodem wystarczy i oszczędzi komuś później niezręcznego przeglądu.

Powiązane artykuły