Ktoś pyta, czy VPN działa, a trzy różne osoby mają na myśli trzy różne rzeczy. Operator ma na myśli to, że profil Office zakończył uwierzytelnianie. Harmonogram ma na myśli to, że prywatne API odpowie. Przegląd bezpieczeństwa ma na myśli to, że to konkretne żądanie wyszło chronioną ścieżką. Skrypt, który grepem przeszukuje tablicę tras w poszukiwaniu nazwy interfejsu, nie odpowiada wiarygodnie na żadne z nich.

Dlatego lista kontrolna zaczyna się, zanim uruchomi się jakiekolwiek polecenie: nazwij podmiot sprawdzenia. Wszystko potem to wybór interfejsu, który naprawdę może to zaraportować.

Nazwij podmiot przed poleceniem

Zapisz pytanie jako predykat z podmiotem. „Czy profil Office jest połączony” da się sprawdzić i ma właściciela, który może odpowiedzieć. „Czy to zadanie może dotrzeć do wewnętrznego API” to drugi predykat z innym trybem awarii. „Czy to żądanie korzysta z chronionej ścieżki” to trzeci i jedyny, który mówi o jednym przepływie, a nie o całej maszynie.

Mieszanie ich daje automatyzację, która pewnie kłamie. Zadanie, które sprawdza stan profilu, a potem zakłada, że API jest gotowe, zaalarmuje kogoś w niewłaściwej warstwie, a zadanie, które pinguje API i nazywa to dowodem tunelu, nie odróżni działającego VPN od laptopa, który przypadkiem jest w sieci biurowej.

Jeden profil: pytaj tego, kto go posiada

Dla natywnej usługi Macu kontrolki połączenia sieciowego w scutil raportują dokładnie to. Czytają stan nazwanej konfiguracji, zamiast wywnioskowywać cokolwiek z interfejsu.

scutil --nc list
scutil --nc status "Office VPN"

Nazwa profilu w tym poleceniu musi być prawdziwa, z wyniku listy, a nie zgadywana. To ścieżka tylko do odczytu dla natywnych usług i nie jest gwarancją, że klient innej firmy w ogóle się tam pojawi; dostawca, który zarządza własnym tunelem, potrzebuje własnego obsługiwanego interfejsu stanu. Sprawdź listę, zanim napiszesz wywołanie stanu, aby brakująca nazwa zawiodła widocznie, a nie po cichu nie dopasowała się do niczego.

W aplikacji Network Extension czytaj stan z obiektów menedżera i połączenia, a nie z systemu. Uważaj na zakres: wczytanie zapisanych konfiguracji zwraca tylko te utworzone przez aplikację wywołującą, więc pusty wynik oznacza „żadnej mojej”, a nie „brak VPN na tym Macu”. Odróżnij nieudane zapytanie od potwierdzonego stanu rozłączenia i traktuj stany przejściowe jako osobne wyniki, zamiast ponawiać połączenie, które już się nawiązuje.

Jedno zadanie: gotowość to osobny predykat

Jeśli pytanie brzmi, czy zadanie może ruszyć dalej, sprawdź jego rzeczywistą zależność po tym, jak właściciel połączenia zaraportuje zamierzony stan. Ograniczone sprawdzenie gotowości wobec prywatnego zasobu to właściwa forma: dowodzi tego, czego zadanie potrzebuje, i niczego więcej.

Nadal nie może dowieść, że każde żądanie na maszynie korzysta z tunelu, i nie należy tego raportować tak, jakby mogło. Podobnie zasób, który odpowiada przez zwykłą sieć, nie jest dowodem VPN, dlatego oba sprawdzenia pozostają osobne, nawet gdy oba się powiodą.

Gdy zadanie naprawdę wymaga chronionej ścieżki, to wymaganie potrzebuje własnego projektu egzekwowania w danym wdrożeniu: routingu, wyjątków podzielonego tunelu, reguły zapory lub wymagania na poziomie aplikacji. Dostępność punktu końcowego jest faktem o serwerze. Egzekwowanie jest faktem o konfiguracji klienta i jedno nie dowodzi drugiego.

Jeden przepływ: obejrzyj wybraną trasę

Dla jednego przepływu spójrz na cel, rodzinę adresów i kontekst źródła za pomocą diagnostyki routingu, która raportuje wybraną ścieżkę dla tego konkretnego celu. Ten wynik wymienia faktycznie użyte interfejs i adres źródłowy, co jest znacznie mocniejszym twierdzeniem niż wpis trasy domyślnej.

Szerokie sprawdzenia w przeglądarce odpowiadają na zupełnie inne pytanie. Wynik publicznego adresu IP opisuje, jak jedno żądanie wyglądało z punktu widzenia jednego serwera, i nic nie mówi o prywatnym DNS, wykluczonych aplikacjach czy drugim kontekście sieciowym używanym przez inny proces.

Zwróć wynik, którego wywołujący może użyć

Wybierz formę zwrotu dopasowaną do predykatu: nazwany stan profilu, werdykt gotowości zasobu albo jawną nieznaną wartość wraz z dowodami, które ją wytworzyły. Obok werdyktu zachowaj tożsamość konfiguracji i przyczynę niepowodzenia.

To właśnie ostatni nawyk decyduje o różnicy między automatyzacją, która pomaga, a automatyzacją, która ukrywa problemy. „Office VPN: rozłączono, ostatnia próba nie powiodła się na uwierzytelnianiu” mówi operatorowi, gdzie patrzeć. „VPN padł” zaprasza do reinstalacji, a „interfejs znaleziony” zaprasza do fałszywego wszystko w porządku.

Dokumentacja Network Extension o wczytywaniu zapisanych konfiguracji tunelu to miejsce, w którym potwierdzisz zakres aplikacji wywołującej, zanim cokolwiek na tym zbudujesz.

Powiązane artykuły