VPN zawiesza się na Connecting w trybie samolotowym: znajdź łącze w górę
Klient, który w trybie samolotowym zostaje na Connecting, może po prostu nie mieć łącza w górę. Oddziel stan radia, skojarzenie, logowanie do portalu i politykę blokowania.
Telefon pokazuje ikonę samolotu, klient VPN stoi na Connecting od dwóch minut, a profil jest poprawny. Godzinę temu działał w tym samym budynku. Nic się nie zepsuło: VPN to połączenie przenoszone przez inną sieć, a tryb samolotowy właśnie usunął sieć, która je przenosiła. Klient próbuje dalej, bo tak robi bez łącza w górę.
Mylące jest to, że symbol samolotu nie mówi, czy Wi-Fi jest dostępne, a Connecting nie mówi, czy klient się uwierzytelnia, czy tylko czeka. Oddziel te dwa odczyty, a diagnoza zajmie minutę.
Symbol samolotu nie jest raportem radiowym
Na obsługiwanych urządzeniach z Androidem Wi-Fi i Bluetooth mogą pozostać włączone w trybie samolotowym, a urządzenie pamięta wybór z poprzedniego razu. Wskazówki Google dotyczące trybu samolotowego na Pixelu opisują dokładnie takie zachowanie. Ikona może więc znaczyć tylko tyle, że sieć komórkowa jest wyłączona, i nic więcej.
Sprawdź rzeczywisty stan, a nie glif. adb shell settings get global airplane_mode_on zwraca 0 lub 1 dla samego trybu, a adb shell dumpsys connectivity wymienia sieci, które urządzenie ma teraz, wraz z ich statusem walidacji. Te dwa wyniki razem odpowiadają na pytanie, na które ikona nie potrafi.
Jeśli Wi-Fi jest wyłączone albo włączone, ale nie jest z niczym skojarzone, nie ma drogi do punktu końcowego VPN i żadna liczba ponownych połączeń jej nie stworzy. To ten przypadek warto wykluczyć najpierw, bo to jedyny, w którym właściwe rozwiązanie leży poza aplikacją VPN.
Co naprawdę oznacza Connecting
Klient może trzymać zapisany profil, wyświetlać jego nazwę i kręcić wskaźnikiem, nie kontaktując się z niczym. Konfiguracja jest lokalna. Zbudowanie tunelu wymaga osiągalnego serwera, ukończonego handshake'u i interfejsu do routingu. Tylko ostatnia część potrzebuje działającej sieci, dlatego pierwsze dwie mogą wyglądać na udane przy wyłączonym radiu.
Wskaźnik pasuje więc do co najmniej trzech różnych sytuacji: brak łącza w górę, łącze w górę, które nie dociera do punktu końcowego, oraz łącze, które dociera, ale uwierzytelnianie zawodzi. Na ekranie wyglądają identycznie, a w logu całkiem inaczej. Dlatego pierwszym użytecznym artefaktem w każdym z tych przypadków jest log, a nie kolejna próba.
Dokumentacja VPN samego Androida wyznacza tę samą granicę między nawiązaniem połączenia a osobnymi politykami zawsze włączone i blokowania. To rozdzielenie jest powodem, dla którego telefon może wyglądać na chroniony, będąc offline, i mimo to nie mieć tunelu.
Cztery stany, które warto rozróżniać
Poniższe cztery stany to te, które warto nazwać, bo ekran pokazuje je identycznie.
| State | What you will see | What to do |
|---|---|---|
| Airplane mode, Wi-Fi off | No networks in dumpsys, VPN retries forever | Turn Wi-Fi on, or accept that the tunnel cannot exist |
| Wi-Fi on, not associated | Interface exists, no default network | Join the access point |
| Associated, not validated | Network listed, captive-portal flag set | Complete the portal sign-in, then reconnect |
| Validated, tunnel down | Internet works, VPN fails or blocks | Debug the tunnel, not the radio |
Trzeci wiersz łapie większość ludzi w hotelach i na lotniskach. Skojarzenie to nie wpuszczenie: portal, który nie przepuścił telefonu, chętnie przyjmie hasło Wi-Fi, a potem odmówi przepuszczenia ruchu do punktu końcowego VPN. Zalogowanie się najpierw przez przeglądarkę, przy wyłączonym tunelu, to zwykle jedyna droga.
Dlaczego blokowanie pogarsza obraz
Jeśli zawsze włączony VPN i blokowanie połączeń bez VPN są włączone jednocześnie, każda objęta aplikacja jest blokowana, gdy tunel nie stoi. To funkcja, która działa, a nie drugi błąd. Objaw zmienia się z awarii jednej aplikacji na awarię wszystkiego, co czyta się jak znacznie większy problem.
Wyjaśnia to też sekwencję, którą ludzie czytają błędnie: tryb samolotowy włączony, brak łącza w górę, aplikacje zablokowane, VPN mówi connecting. Blokada była polityką robiącą swoją robotę. Wyłączenie polityki, by przetestować łącze, usuwa ochronę, której zapewne chciałeś, i niczego nie uczy.
Sprawdź raczej zakres. Które aplikacje są objęte, które wyłączone i czy profil jest na użytkownika, czy na całe urządzenie. Zadanie, które uruchamia aplikację VPN, gdy tylko pojawi się Wi-Fi, jest wyzwalaczem, nie gwarancją, że przed jego uruchomieniem nie wyszedł żaden pakiet.
Kolejność diagnostyczna, która kończy zgadywanie
Pracuj od dołu do góry. Potwierdź tryb, potwierdź, że sieć istnieje, że jest zweryfikowana, że dociera do czegoś poza lokalną podsiecią, i dopiero wtedy patrz na klienta. adb shell ping -c 3 1.1.1.1 to zgrubny test, ale oddziela brakującą drogę od drogi, która istnieje, gdy tunel jest niezadowolony.
Jeśli ping zawodzi, gdy sieć jest na liście, problem leży powyżej VPN i żadne ustawienie klienta go nie naprawi. Jeśli ping się udaje, a tunel nadal się nie nawiązuje, przechwyć w tym momencie log klienta: błąd odróżni przekroczenie czasu od odrzucenia uwierzytelnienia, a te dwa nie mają nic wspólnego.
Zakończ, przywracając zamierzony stan: Wi-Fi dozwolone w trybie samolotowym, jeśli to twoja normalna konfiguracja, portal ukończony i polityka blokowania znów włączona. Potem połącz się raz i potwierdź, że tunel podnosi się sam, bo konfiguracja, która działa tylko po ręcznych próbach, zawiedzie ponownie przy następnym starcie.