Czy twój wyłącznik bezpieczeństwa zablokuje aplikację, którą wyłączyłeś z tunelu?
Wykluczona aplikacja może celowo iść bezpośrednio, a chroniona musi przy awarii pozostać zamknięta. Najpierw opisz politykę dla każdej aplikacji, potem sprawdź, co klient rzeczywiście egzekwuje.
Wyłącznik bezpieczeństwa włączony, aplikacja celowo wyłączona z tunelu, a oba wymagania już sobie przeczą. Jedno mówi, że nic nie może wyjść poza tunelem, drugie mówi, że ten program musi iść bezpośrednio. Każdy klient rozwiązuje ten konflikt inaczej, a strona ustawień rzadko wyjaśnia, która reguła wygrywa. Opisz politykę dla każdej aplikacji, zanim zaufasz jakiejkolwiek etykiecie.
Dwie polityki, jedna maszyna
Wyłącznik bezpieczeństwa to obietnica dotycząca awarii: gdy tunel nie chroni ruchu, ruch się zatrzymuje. Tunel dzielony to obietnica dotycząca wyboru: te programy lub cele korzystają z tunelu, a tamte nie. Druga obietnica tworzy ruch, o którym pierwsza musi zdecydować. Żadna obietnica nie jest błędna; po prostu napisali je różni ludzie dla różnych zagrożeń.
Możliwe są trzy wyniki i tylko jeden jest tym, co zamierzało wdrożenie. Wykluczona aplikacja może pozostać bezpośrednia podczas awarii, co szanuje podział i łamie wyłącznik bezpieczeństwa. Może zostać zablokowana razem ze wszystkim innym, co szanuje wyłącznik i łamie podział. Albo może być blokowana tylko czasami, w zależności od tego, jak platforma ocenia regułę po zniknięciu interfejsu. To ostatni przypadek generuje zgłoszenia.
Najpierw lista aplikacji, potem reguła
Wymień programy, które muszą korzystać z tunelu, te, które muszą iść bezpośrednio, oraz nazwy lub cele, które nigdy nie mogą pojawić się na żadnej liście. Osobno uwzględnij zachowanie resolwera i stronę IPv6, ponieważ oba mogą podlegać innej polityce niż ruch stron.
Reguły dla aplikacji zwykle odpowiadają plikowi wykonywalnemu lub pakietowi, a nie profilowi w nim. Profil przeglądarki, okno prywatne i rozszerzenie nie mają własnej tożsamości sieciowej, więc dziedziczą to, co otrzymał proces. Proces pomocniczy uruchomiony przez tę przeglądarkę może wcale nie odziedziczyć tej samej reguły.
Potrzebne są dwie listy, nie jedna: co tunel musi nieść i co z żadnego powodu nie może podróżować poza nim. Aplikacja obecna na obu jest konfliktem wymagań, a nie szczegółem implementacji, i trzeba go rozstrzygnąć przed skonfigurowaniem klienta.
Co robi klient podczas awarii
Niektóre implementacje blokują wykluczone aplikacje podczas awarii i przywracają im dostęp po ponownym połączeniu. Inne zachowują ścieżkę bezpośrednią przez cały czas, co jest spójne z podziałem i słabsze jako właściwość bezpieczeństwa. Blokada na poziomie platformy może całkowicie nadpisać własny wybór klienta dla poszczególnych aplikacji. Ta różnica nie jest kosmetyczna, bo decyduje, czy wykluczona aplikacja jest wyjątkiem w polityce, czy dziurą.
Zawsze włączony VPN Androida z opcją blokowania połączeń bez VPN to najjaśniejszy przypadek, ponieważ blokadę egzekwuje platforma, a nie klient, i wykluczony pakiet jest blokowany razem ze wszystkim innym, gdy tunel jest wyłączony. Klient desktopowy, który stosuje wyjątki dla aplikacji we własnym sterowniku, zwykle zostawia wykluczony proces na interfejsie fizycznym, ponieważ nigdy nie był właścicielem ruchu tego procesu. Oba zachowania są obronne i tylko jedno odpowiada wymaganiu, że wykluczona aplikacja musi pozostać użyteczna. Zapytaj, który komponent egzekwuje regułę, zanim zinterpretujesz wynik.
Czytaj zachowanie systemu operacyjnego, który masz przed sobą, a nie ustawienie o tej samej nazwie gdzie indziej. Interfejsy egzekwowania się różnią, a jedno pole wyboru może na komputerze i w telefonie znaczyć zupełnie co innego. Wersja też ma znaczenie, bo sterowanie blokadą przenosiło się między ekranami w kolejnych wydaniach Androida, a lista wyjątków po stronie klienta to nie to samo sterowanie co blokada platformy.
Trzy momenty: tunel włączony, tunel wyłączony, ponowne połączenie
Używaj nieszkodliwych żądań w trzech momentach: gdy tunel działa, podczas interesującej cię awarii i po ponownym połączeniu. Jeden wynik przeglądarki nie może ustalić zachowania wykluczonej aplikacji.
curl -sS --max-time 8 https://api.ipify.org
curl -sS --max-time 8 --interface tun0 https://api.ipify.org
dig +short example.com
Adres wyjściowy pokazuje, którą ścieżką poszło, a jawny test interfejsu pokazuje, co się dzieje, gdy tunel jest jedynym dostępnym wyjściem. Zapisz oczekiwany wynik obok każdej linii, zanim uruchomisz którąkolwiek z nich, inaczej dane wyjściowe zostaną zinterpretowane po fakcie.
Jeśli wykluczona aplikacja traci połączenie, sprawdź pierwszeństwo polityk, zanim dodasz szerokie zezwolenie w zaporze, ponieważ ta poprawka niszczy różnicę, którą testowałeś. Jeśli pozostaje bezpośrednia, potwierdź, że to był udokumentowany wyjątek, a nie przypadkowy powrót. Przy ostrym wymaganiu dla całego urządzenia skróć listę wyjątków, aż będzie można ją sprawdzić ręcznie.