Błąd OpenVPN: nieznana opcja tls-remote lub keysize
Nowszy klient OpenVPN odrzuca stare wiersze profilu, takie jak tls-remote i keysize. Odczytaj nazwę opcji, zastąp sprawdzenie i nie wyłączaj weryfikacji.
Zaczyna się to zwykle od profilu, który działał latami, otwartego w nowszym kliencie, a kończy niepowodzeniem, zanim tunel w ogóle wystartuje. Terminal wypisuje coś w rodzaju Options error: Unrecognized option ... in client.ovpn:130: tls-remote, z numerem wersji w nawiasie na końcu. Czytaj to jako skargę parsera: plik zawiera dyrektywę, której ten klient już nie zna.
Ten jeden komunikat wyjaśnia, dlaczego ponowne generowanie kluczy, przepisywanie hasła czy sprawdzanie serwera nic nie dają. Błąd powstaje, gdy klient czyta własną konfigurację, zanim otworzy gniazdo. Pożyteczna praca polega na wskazaniu odrzuconej dyrektywy i zastąpieniu jej obecnym odpowiednikiem.
Przeczytaj wiersz z błędem, zanim cokolwiek zmienisz
Uruchom klienta samodzielnie, zamiast startować go z ikony w zasobniku, żeby komunikat był widoczny, a ścieżka profilu jednoznaczna. Otwórz plik we wskazanym wierszu i przyjrzyj się tokenowi, który nazwał klient. Numer wiersza to wiersz profilu, a nie wersja, co myli ludzi, bo ten sam numer pojawia się w nawiasie jako identyfikator wydania.
Stare generatory profili nie tworzyły jednej złej dyrektywy, lecz kilka. Napraw pierwszy błąd, uruchom klienta ponownie i spodziewaj się następnego. Ta kolejność jest normalna i nie oznacza, że zmiany pogorszyły sprawę.
Co się stało z keysize i tls-remote
keysize określał długość klucza szyfru w czasach, gdy profil jawnie wybierał szyfr. OpenVPN 2.4 wycofał tę opcję, a późniejsze klienty usunęły ją z tabeli opcji, więc parser odrzuca teraz ten wiersz, zamiast go ignorować. Współczesne negocjacje wyprowadzają długość klucza z wybranego szyfru, dlatego dyrektywa nie ma już czym sterować.
tls-remote usunięto w wersji 2.4. Porównywał certyfikat serwera z oczekiwaną nazwą, a jego następcą jest verify-x509-name, które surowiej traktuje sposób dopasowania nazwy. Stara dyrektywa zniknęła, więc profil, który ją zawiera, nigdy nie zostanie sparsowany przez aktualnego klienta.
Naprawiaj jedną dyrektywę na próbę. Jeśli profil podaje też szyfr, którego klient nie oferuje, da to inny błąd później, a połączenie obu zmian w jednej edycji uniemożliwia stwierdzenie, która zepsuła uzgadnianie. Po każdej zmianie połącz się ponownie i zachowaj treść błędu. Ten nawyk zostawia też działające wyjście awaryjne, jeśli zmiana pogorszy sprawę.
Przepisz sprawdzanie tożsamości serwera
Zamiennik przyjmuje oczekiwaną nazwę i tryb porównania. verify-x509-name vpn.example.edu name wymaga, aby podmiot certyfikatu był dokładnie równy tej wartości. Inne tryby dopasowują prefiks albo pełny ciąg podmiotu, a wybór złego trybu zamienia działający profil w czysty błąd weryfikacji.
Jeśli stary argument tls-remote był pełną nazwą common name serwera, dokładne porównanie name jest zwykle właściwe. Jeśli był to fragment, użyj trybu prefiksu, zamiast skracać oczekiwaną nazwę, bo krótsze dokładne dopasowanie nie zweryfikuje się. Gdy pierwotna wartość nie jest zapisana, zapytaj osobę obsługującą serwer o podmiot, który publikuje.
Nie wyciszaj sprawdzenia, żeby pozbyć się błędu. Usunięcie weryfikacji tożsamości serwera zamienia naprawialny problem profilu w niezweryfikowany tunel, a właśnie temu ryzyku dyrektywa miała zapobiegać.
Poprawiony profil, lokalna edycja albo starszy klient
Gdy serwer należy do kogoś innego, najczystszą drogą jest aktualny profil od tej osoby. Twoja kopia pochodzi ze starszego generatora, a ich eksport używa już bieżących dyrektyw. Jedno pobranie usuwa całą kategorię błędów i trzyma przyszłe zmiany w jednym miejscu.
Gdy masz oba końce, edytuj kopię i zachowaj oryginał. Zmień jedną dyrektywę, zapisz, połącz się i zapisz przetestowaną wersję klienta. Trzymaj krótką notatkę przy każdej zmianie, bo profil edytowany przez kilka sesji trudno zweryfikować z pamięci. Uruchamianie z wiersza poleceń na edytowanym pliku przyspiesza tę pętlę, bo błąd trafia prosto do terminala.
Przypięcie lub powrót do klienta sprzed 2.4 również sprawia, że komunikat znika, a przy urządzeniu, które nigdy nie zostanie zaktualizowane, może to być jedyne wykonalne obejście. Traktuj to jako tymczasowe: stary klient na aktualnym pulpicie oznacza zwykle starą bibliotekę i nieobsługiwaną konfigurację, czyli problem odłożony, a nie rozwiązany.
Gdy tunel wstanie, przeczytaj cały profil jeszcze raz. Profile, które miały jedną usuniętą dyrektywę, często mają drugą, a ta ujawnia się dopiero po zniknięciu pierwszej.