Łączysz się, pojawia się interfejs tunelu, a jednego potrzebnego prefiksu po prostu nie ma w tabeli. Następnym krokiem jest zwykle szukanie skryptu, który go dodaje. To szukanie prowadzi do odpowiedzi, które wklejają pomocnika OpenVPN do profilu, a połowa tych odpowiedzi pogarsza sytuację zamiast ją poprawiać, ponieważ brakująca trasa ma trzech możliwych właścicieli i tylko jeden z nich to brakujący skrypt.

Zdecyduj, który właściciel odpowiada, zanim cokolwiek napiszesz.

Trzej właściciele, jeden brakujący prefiks

Prefiksu może nie być, bo nikt go nie dostarczył, bo profil go odrzucił albo bo został zainstalowany w miejscu, w które nie patrzysz. To różne usterki i mają różne poprawki.

Pierwszą najłatwiej sprawdzić: czy serwer albo wtyczka kiedykolwiek zaproponowały trasę? Backend, który nigdy nie otrzymał prefiksu, nie może go zainstalować, a skrypt pomocniczy nie może wymyślić osiągalności, której partner nigdy nie opisał. Druga to polityka profilu, która może tłumić trasy, które połączenie wzięłoby w innym razie. Trzecia to tabela albo reguła, która może trzymać trasę w miejscu, którego domyślne wyszukiwanie nigdy nie sprawdza.

Czwartym właścicielem jesteś ty, później: skrypt, który dodaje trasę przy połączeniu, ale nie usuwa jej przy rozłączeniu. To tworzy prefiks, który przeżywa tunel, wskazuje na martwy interfejs i myli następną osobę debugującą maszynę.

Przeczytaj profil, zanim cokolwiek dodasz

Zacznij od właściwości zapisanego połączenia. Czytaj je bez wylewania sekretów, a jeśli nazwa profilu jest niejednoznaczna, użyj UUID.

nmcli -f vpn.service-type,ipv4.never-default,ipv4.ignore-auto-routes,ipv4.route-table,ipv4.routes connection show office

vpn.service-type mówi ci, który backend posiada połączenie, i to ma znaczenie, bo dane wtyczki są specyficzne dla backendu. Klucz akceptowany przez jedną wtyczkę nie jest obsługiwaną instrukcją dla innej, więc fragment skopiowany z dokumentacji innego klienta nie jest dowodem na nic.

ipv4.ignore-auto-routes i ipv4.never-default odpowiadają na różne pytania. Pierwszy może odrzucać trasy, które połączenie wzięłoby automatycznie, a drugi kontroluje, czy profil może stać się trasą domyślną. Profil, który ignoruje trasy automatyczne i nie opiera się na niczym innym, połączy się czysto i prawie nic nie zainstaluje.

ip -4 rule show
ip -4 route show table all

Te dwie komendy rozstrzygają trzecią możliwość. Szukaj swojego prefiksu w każdej tabeli, nie tylko w main, i sprawdź, czy reguła polityki nie wysyła odpowiedniego wyszukiwania gdzie indziej. Jeśli prefiks jest w innej tabeli i nic go nie sprawdza, nie masz brakującej trasy; masz wyszukiwanie, które nigdy do niego nie dociera.

Czego skrypt nie naprawi

Dodanie skryptu pomocniczego daje vpn.data w NetworkManagerze program do uruchomienia. To realny mechanizm i jest to zły mechanizm dla większości takich przypadków, ponieważ skrypt dostaje kontrolę po tym, jak polityka samego profilu już zdecydowała, co przyjąć.

script-security OpenVPN to kolejne powracające nieporozumienie. To ustawienie OpenVPN, które określa, jakie skrypty klient może uruchamiać i co może umieścić w ich środowisku; poziom 3 pozwala przekazywać dane uwierzytelniające przez środowisko, co jest decyzją o obchodzeniu się z sekretami, a nie poprawką routingu. Wklejenie go do profilu, którego backendem nie jest OpenVPN, albo podniesienie go, gdy żaden skrypt go nie potrzebuje, dodaje ekspozycję bez dodawania trasy.

Potem jest odruch restartu. Restart usługi NetworkManager zrywa i odbudowuje każde zarządzane połączenie, w tym to, przez które jesteś połączony, jeśli pracujesz zdalnie. To działanie zakłócające, a nie nieszkodliwa diagnostyka, i na serwerze może być różnicą między sesją, która przetrwa, a taką, która nie przetrwa.

Decyzja, po kolei

Zadaj trzy pytania po kolei. Czy partner dostarczył prefiks, co pokaże log backendu albo jego własne wyjście statusu? Jeśli tak, czy profil jest skonfigurowany tak, aby przyjmować i instalować trasy, czy je tłumi? Jeśli trasa gdzieś istnieje, czy ścieżka wyszukiwania jest właściwa dla ruchu, który testujesz?

Dopiero gdy pierwsza odpowiedź brzmi tak, druga tak, a trzecia jest poprawna, skrypt uzupełniający staje się obronny, i nawet wtedy powinieneś zapytać, czy backend obsługuje trasę natywnie. Dokumentacja ustawień VPN opisuje service-type i słownik danych specyficzny dla wtyczki, i właśnie tam należy zacząć, zanim założy się, że klucz istnieje.

Po zatwierdzonej poprawce połącz się ponownie i przetestuj cel po adresie, a potem po nazwie, następnie rozłącz się i połącz ponownie, aby potwierdzić, że stan jest powtarzalny. Jeden właściciel, jedna tabela i trasa, która znika razem z tunelem, to wynik, który warto mieć.

Powiązane artykuły