Profil VPN w Androidzie: znajdź właściciela przed edycją
Wiersz VPN w systemie ukrywa aplikację, do której należą punkt końcowy, trasy i klucze. Zidentyfikuj właściciela, a następnie porównaj stan żądany, otrzymany i zastosowany.
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ć.
| Stage | Where to look | What it proves |
|---|---|---|
| Requested | The app's profile editor or imported file | What the owner intends to use |
| Received | Sanitized app log of server-supplied options | What the peer actually pushed |
| Applied | Link properties and routes after connect | What 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.