Cron co dziesięć minut restartuje całkowicie zdrowy VPN, a to samo zadanie zostawia martwy działający przez tydzień. Oba błędy wynikają z traktowania „działa” jako jednego faktu, gdy tymczasem są to co najmniej cztery. Urządzenie może być administracyjnie włączone, poprawnie trasowane, w pełni zaszyfrowane i nadal nie przenosić nic użytecznego. Najpierw rozdziel obserwacje, a sprawdzenie niemal napisze się samo.

Flagi łącza opisują urządzenie, nie ścieżkę

Sprawdzenie, które wszyscy kopiują, szuka adresu sprzętowego z samych zer. Ten trik w niektórych sterownikach oddziela prawdziwy interfejs od zastępnika, a w pozostałych niczego nie dowodzi, bo urządzenie tun w ogóle nie ma adresu MAC do zgłoszenia. ip -brief link show tun0 zamiast tego podaje flagi: UP oznacza, że administrator włączył urządzenie, a LOWER_UP oznacza, że sterownik uznaje łącze za użyteczne. Czytane razem mówią, że urządzenie istnieje i nie jest administracyjnie wyłączone. Żadna z nich nie mówi, że pakiet ma gdzie pójść.

OpenVPN tworzy swoje urządzenie tun, zanim zostaną zainstalowane trasy, więc flagi mogą wyglądać idealnie, podczas gdy nic nie jest trasowane. Traktuj je jako warunek wstępny, nigdy jako odpowiedź.

Zapytaj, dokąd trafiłby pakiet

Wyszukiwanie trasy odpowiada na pytanie, na które flagi nie potrafią. ip route get 10.8.0.1 from 10.8.0.2 nazywa interfejs, adres źródłowy i tabelę, której użyłby kernel, a to jest dokładnie to, wobec czego trzeba sprawdzić tunel dzielony. Bez adresu źródłowego pytasz o coś innego, a przy trasowaniu politycznym odpowiedź może się różnić w zależności od źródła. To najtańszy uczciwy test, bo konsultuje te same reguły, których użyje twój ruch.

W przypadku WireGuarda dodaj uścisk dłoni. wg show wypisuje znacznik czasu ostatniego uścisku dłoni dla każdego peera, a znacznik, który przestał się przesuwać, oznacza, że peera nie ma, cokolwiek mówią flagi interfejsu. Skonfigurowany interfejs bez świeżego uścisku dłoni to jeden z najczęstszych fałszywych alarmów w domowym monitoringu.

Tabela 220 opowiada historię IPsec

strongSwan instaluje trasy dla wynegocjowanych selektorów w tabeli 220, gdy instalacja tras jest włączona. ip route list table 220 dlatego oddziela wynegocjowane od trasowanego: pusta tabela obok załadowanego połączenia oznacza, że SA IKE i CHILD wstały, ale żaden ruch nie jest do nich kierowany. Sprawdź ip xfrm state obok, ponieważ wymienia zainstalowane asocjacje bezpieczeństwa i ich punkty końcowe.

Polityka pułapki to przypadek, na który trzeba uważać. Czeka na interesujący ruch zamiast go trasować, więc tabela pozostaje pusta, dopóki coś nie uruchomi tunelu.

Stan menedżera i stan demona to różne listy

NetworkManager wymienia tylko połączenia, które posiada. nmcli -t -f NAME,TYPE connection show --active nic nie zwraca dla tunelu uruchomionego bezpośrednio przez wg-quick lub przez demona OpenVPN.

To rozróżnienie ma znaczenie, gdy skrypt musi zdecydować, którego z dwóch menedżerów zapytać. Wybierz tego, który naprawdę posiada tunel na tym hoście, i zignoruj milczenie drugiego. Jeśli istnieją oba, zdecyduj, który jest autorytatywny, i wyłącz drugi, bo dwaj menedżerowie przepisujący trasy na jednym interfejsie tworzą awarie, których nikt nie potrafi odtworzyć. Brakujący wpis to informacja o menedżerze, nie o tunelu.

Uzależnij następny krok od testu, którego potrzebuje

Odpytowanie portu UDP niczego nie dowodzi o gotowości, bo UDP nie ma uścisku dłoni i nc -u udaje się, gdy tylko pakiet wyjdzie. Sprawdź, co następny krok naprawdę zużywa: połączenie TCP do przekierowanego portu, żądanie do hosta wewnątrz tunelu, nazwę, która rozwiązuje się tylko tam. Ogranicz czekanie limitem czasu i liczbą prób, i głośno zawiedź, gdy się wyczerpią.

Hooki biją odpytywanie, gdy klient je oferuje. --up i --down skrypty OpenVPN uruchamiają się po zmianie stanu interfejsu, co całkowicie usuwa wyścig, ale działają z uprawnieniami, które demon zachował. Jeśli OpenVPN zszedł do nieuprzywilejowanego konta przez user i group, hook działa jako to konto. Restart usługi systemowej wymaga wtedy sudo, aby zezwolić dokładnie na to polecenie. Powierz ponawianie menedżerowi usług, a nie pętli cron: ograniczona polityka restartu z limitem uruchomień ujawnia zepsuty tunel, podczas gdy nieograniczona pętla ukrywa go bez końca.

Powiązane artykuły