Ekran VPN w Androidzie pokazuje jeden wiersz z nazwą, ikoną klucza i być może przełącznikiem stałego połączenia. Rzadko pokazuje punkt końcowy, politykę tras, serwery DNS lub dane logowania, które umożliwiają połączenie, ponieważ w tunelu opartym na aplikacji należą one do aplikacji. Praktyczną konsekwencją jest pytanie z runbooka, a nie filozoficzne: przed edycją pobranego pliku lub szukaniem centralnego magazynu profili sprawdź, który komponent jest właścicielem ustawienia, które chcesz zmienić.

Najpierw ustal typ połączenia

Na tym samym ekranie ustawień są co najmniej trzy układy. Aplikacja może użyć VpnService, aby zbudować wirtualny interfejs i posiadać protokół oraz prywatną konfigurację, w tym lokalną aplikację filtrującą bez zdalnego wyjścia. Android może też zapewnić profil IKEv2 platformy przez Ikev2VpnProfile, dostępny od API 30, gdzie platforma przechowuje większą część profilu. A aplikacja dostawcy może pokazać własną listę serwerów i złożyć ustawienia wewnętrznie.

adb shell dumpsys connectivity | grep -i -A12 "VPN"
adb shell cmd connectivity list-owners 2>/dev/null || true

Pierwsze polecenie pokazuje aktywną sieć VPN i właściwości jej łącza, czyli stan zastosowany. Jeśli wiersz wymienia pakiet, który znasz, zacznij od widoku profilu tej aplikacji, a nie od ekranu systemowego.

Zapisz właściciela i zakres profilu

Zapisz cztery fakty, zanim cokolwiek zmienisz: pakiet właściciela, czy połączenie znajduje się w profilu osobistym czy służbowym, nazwę profilu lub połączenia tak, jak pokazuje ją aplikacja, oraz kto nim zarządza. Właściciel urządzenia może udostępnić VPN profilu służbowego, którego użytkownik profilu osobistego nie może edytować, a ta sama aplikacja zainstalowana dwa razy daje dwóch niezależnych właścicieli.

Ten krok zapobiega najczęściej traconej godzinie, czyli edycji profilu, który nie jest tym połączonym. Aplikacje często trzymają kilka profili, a aktywny jest właściwością aplikacji, nie wiersza Androida.

Porównaj stan żądany, otrzymany i zastosowany

To trzy różne etapy, a rozbieżność między nimi mówi, który komponent naprawić.

StageWhere to lookWhat it proves
RequestedThe app's profile editor or imported fileWhat the owner intends to use
ReceivedSanitized app log of server-supplied optionsWhat the peer actually pushed
AppliedLink properties and routes after connectWhat the device is really using

Etap zastosowany to jedyny, który możesz obserwować bez zaufania do czyjegokolwiek logu. Porównaj serwery DNS i trasy we właściwościach aktywnego łącza z tymi, które deklaruje profil; jeśli się różnią, serwer coś przesłał lub aplikacja zastosowała politykę, której się nie spodziewałeś.

adb shell ip addr show tun0
adb shell ip route show table all | head -40

Nazwy interfejsów różnią się między aplikacjami, więc najpierw wylistuj interfejsy i odczytaj ten, który pojawił się po połączeniu tunelu. Trasa obecna w edytorze aplikacji, ale nieobecna tutaj, nigdy nie została zastosowana; trasa obecna tutaj, ale nieobecna w edytorze, przyszła skądinąd.

Edytuj artefakt, który właściciel naprawdę czyta

W przypadku zaimportowanego profilu OpenVPN aplikacja zwykle trzyma własną kopię. Późniejsza edycja pierwotnie pobranego pliku nie zmienia następnego połączenia; użyj udokumentowanego edytora aplikacji albo zaimportuj ponownie i potwierdź, który profil jest teraz aktywny. To różnica między zmianą pliku a zmianą konfiguracji.

Aplikacje dostawców często składają ustawienia z listy serwerów zamiast zapisywać plik edytowalny przez użytkownika. Brak przycisku eksportu nie jest dowodem, że VPN jest fałszywy, a wyeksportowany plik może pominąć klucze powiązane z urządzeniem lub materiał rejestracyjny potrzebny innemu urządzeniu. Traktuj eksport i import jako osobne operacje z własnymi warunkami.

Napisz notatkę wsparcia bez ujawniania sekretów

Przydatna notatka podaje dokładną aplikację i profil, ustawienie, które wygląda źle, oraz dowody z każdego etapu. Na przykład: ten profil otrzymuje od serwera prywatny adres DNS, ale docelowa aplikacja służbowa nie potrafi rozwiązać swojej usługi, a zastosowane właściwości łącza pokazują ten resolver, podczas gdy edytor profilu pokazuje inny.

Trzymaj dane logowania poza notatką. Rootowanie urządzenia w celu przeszukania prywatnego magazynu aplikacji nie jest potrzebne do ustalenia właściciela, a zgadywana ścieżka katalogu danych nie jest obsługiwanym interfejsem. Jeśli odpowiedź wymaga bajtów, które widzi tylko aplikacja, poproś właściciela o eksport diagnostyczny, zamiast go improwizować.

Gdy praca jest gotowa, zamknij pętlę: potwierdź nazwę aktywnego profilu, ponownie odczytaj stan zastosowany i raz rozłącz się, aby sprawdzić, czy zmiana przetrwa ponowne połączenie. Ustawienie, które istnieje tylko w edytorze, nie zostało wdrożone.

Powiązane artykuły