Połączenie działało w czwartek, aktualizacja została uruchomiona w piątek, a w poniedziałek klient kręci się na “connecting” i poddaje się. Ten sam laptop, ten sam serwer, to samo konto, ten sam wcześniej udostępniony klucz. W profilu niczego nie edytowano, dlatego oczywiści podejrzani, hasło i firewall, marnują twój czas.

Zmieniła się lista transformacji, które twój komputer jest gotów zaproponować. Oba stosy IPsec używane w Ubuntu, strongSwan i Libreswan, usuwają algorytmy, których nie uważają już za bezpieczne, a plugin NetworkManager stojący przed nimi ma własną listę, która przesuwa się według innego harmonogramu. Serwer przypięty do 3DES, SHA1 i grupy Diffie-Hellman o długości 1024 bitów może w końcu nie usłyszeć niczego, co akceptuje.

Co aktualizacja naprawdę zmieniła

Propozycję IKEv1 zasilają dwie warstwy. Demon dostarcza skompilowany domyślny zestaw propozycji, a plugin L2TP albo się na nim opiera, albo podaje własną listę. Przed NetworkManager-l2tp 1.2.16 plugin opierał się na nim, więc twoja propozycja była tym, co zainstalowany demon uważał za rozsądne. Od 1.2.16 plugin wysyła udokumentowaną listę wzorowaną na klientach Windows i Apple, a ta lista jest szersza niż stara domyślna, ale nie zawiera już każdej starszej kombinacji na czele kolejki.

Ten podział wyjaśnia tryb awarii, który ludzie uważają za mylący: dwie maszyny na tym samym wydaniu Ubuntu mogą zachowywać się różnie, bo jedna ma pakiet dystrybucji, a druga ma backport, a wersja demona na obu wygląda w raporcie błędu identycznie. Sprawdź wersję pluginu, nie tylko wersję demona, zanim uznasz, że aktualizacja nie zmieniła nic istotnego.

W tym samym obszarze jest mniejsza pułapka. Dwa demony zapisują grupy Diffie-Hellman krzywej eliptycznej inaczej, jeden pisze ecp384, a drugi ecp_384. Wklej błędną pisownię do okna Advanced, a demon odrzuci ustawienie jako nieparsowalne, co w logu pojawia się jako problem negocjacji, a nie jako literówka w konfiguracji.

Przeczytaj awarię, zanim cokolwiek zmienisz

Zacznij od tego, który backend uruchamiasz, bo odpowiedź decyduje zarówno o składni, jak i o miejscu logu.

ipsec --version
nmcli connection show "Your VPN name" | grep -i ipsec

Potem przeczytaj samą wymianę. W strongSwan demon pisze do journala w bieżącym wydaniu, a w starszym do /var/log/syslog, i ciekawa jest propozycja, którą wysyła, a nie ostatnia linia. Szukasz sformułowania o braku pasującej propozycji, co jest problemem algorytmu; błędu uwierzytelniania, który wskazuje na klucz lub konto; albo zwykłego limitu czasu, który wskazuje na osiągalność.

Te trzy wyniki zbyt często traktuje się jako jeden objaw. Limit czasu z pustym logiem demona oznacza, że pakiety nie docierają. Odrzucenie propozycji oznacza, że dotarły i zostały odrzucone. Jeśli twój log milczy, podnieś poziom debugowania pluginu na jedną próbę, a potem go obniż, bo szczegółowe wyjście szybko zapełnia journal.

Faza 1 i faza 2 to osobne zakłady

IKEv1 negocjuje dwa razy. Tryb główny buduje asocjację bezpieczeństwa IKE z algorytmu szyfrowania, algorytmu integralności, grupy Diffie-Hellman i metody uwierzytelniania. Tryb szybki buduje następnie asocjację ESP, która będzie przenosić L2TP. Serwer może przyjąć pierwszą i odrzucić drugą, więc na wpół poprawny profil zawodzi później, niż oczekujesz, i wygląda jak inny błąd.

Phase 1: 3des-sha1-modp1024!
Phase 2: 3des-sha1!

Wykrzyknik to składnia strongSwan dla wpisu ścisłego: zaproponuj tę jedną kombinację i nic więcej. Bez niego wpis dołącza do listy zapasowej, co jest dobre, gdy partner jest nowoczesny, a przeciwskuteczne, gdy to urządzenie z jedną twardo zakodowaną polityką. Traktuj powyższą parę jako ilustrację formy, nie jako zalecenie dla czegokolwiek, co dziś budujesz.

Zmień jedno pole, potem powtórz test

W bieżącym pluginie najszybszym pierwszym testem jest całkowite wyczyszczenie obu pól propozycji i ponowne połączenie, bo dostarczona lista domyślna już zawiera typowe kombinacje Windows i Apple. W starszym pluginie ich wyczyszczenie oddaje kontrolę demonowi, który być może porzucił algorytm, na którym twój serwer obstaje, i awaria się pogarsza.

Jeśli czyszczenie nie pomaga, ustaw ścisłą parę, którą dokumentuje twój serwer, jedną fazę naraz. Zmień fazę 1, połącz się ponownie i przeczytaj log, zanim dotkniesz fazy 2. Gdy kombinacja wreszcie działa, zapisz ją obok modelu serwera i wersji pluginu, bo wartości domyślne znów się przesuną i to właśnie ta notatka zamienia następną aktualizację w pięciominutowe sprawdzenie.

Powiązane artykuły