Телефон показує значок літака, VPN-клієнт стоїть на Connecting уже дві хвилини, а профіль правильний. Годину тому все працювало в цій самій будівлі. Нічого не зламано: VPN — це з'єднання, яке переносить інша мережа, а авіарежим щойно прибрав мережу, яка його переносила. Клієнт продовжує повторювати спроби, бо без висхідного каналу він робить саме це.

Бентежить те, що значок літака не повідомляє, чи доступний Wi-Fi, а Connecting не повідомляє, чи клієнт проходить автентифікацію, чи просто чекає. Розділіть ці два показання, і діагностика займе хвилину.

Значок літака — не звіт про радіо

На підтримуваних пристроях Android Wi-Fi і Bluetooth можуть залишатися ввімкненими в авіарежимі, і пристрій пам'ятає ваш минулий вибір. Інструкція Google щодо авіарежиму на Pixel описує саме таку поведінку. Отже, значок може означати лише те, що стільникова мережа вимкнена, і нічого більше.

Перевіряйте фактичний стан, а не гліф. adb shell settings get global airplane_mode_on повертає 0 або 1 для самого режиму, а adb shell dumpsys connectivity перелічує мережі, які пристрій має зараз, разом зі статусом перевірки. Ці два виводи разом відповідають на питання, на яке значок відповісти не може.

Якщо Wi-Fi вимкнено або ввімкнено, але ні з чим не пов'язано, шляху до кінцевої точки VPN немає, і жодна кількість перепідключень його не створить. Саме цей випадок варто виключити першим, бо це єдиний випадок, коли правильне рішення лежить поза застосунком VPN.

Що насправді означає Connecting

Клієнт може тримати збережений профіль, показувати його ім'я та крутити індикатор, ні до чого не звертаючись. Конфігурація локальна. Для побудови тунелю потрібні доступний сервер, завершене рукостискання та інтерфейс для маршрутизації. Лише останній частині потрібна працездатна мережа, тому перші дві можуть виглядати успішними при вимкненому радіо.

Тож індикатор відповідає щонайменше трьом різним ситуаціям: висхідного каналу немає взагалі, канал не досягає кінцевої точки, і канал досягає її, але автентифікація не проходить. На екрані вони виглядають однаково, а в журналі — зовсім по-різному. Тому перший корисний артефакт у всіх цих випадках — журнал, а не ще одна спроба.

Власна документація Android про VPN проводить ту саму межу між встановленням з'єднання та окремими політиками «завжди ввімкнено» і блокування. Саме це розділення пояснює, чому телефон може виглядати захищеним в офлайні і при цьому не мати тунелю.

Чотири стани, які варто розрізняти

Чотири стани нижче — це ті, які варто назвати, бо екран показує їх однаково.

StateWhat you will seeWhat to do
Airplane mode, Wi-Fi offNo networks in dumpsys, VPN retries foreverTurn Wi-Fi on, or accept that the tunnel cannot exist
Wi-Fi on, not associatedInterface exists, no default networkJoin the access point
Associated, not validatedNetwork listed, captive-portal flag setComplete the portal sign-in, then reconnect
Validated, tunnel downInternet works, VPN fails or blocksDebug the tunnel, not the radio

Третій рядок ловить більшість людей у готелях і аеропортах. Асоціація — ще не допуск: портал, який не пропустив телефон, охоче прийме пароль Wi-Fi і потім відмовиться пропускати трафік до кінцевої точки VPN. Спочатку ввійти через браузер, поки тунель вимкнений, зазвичай єдиний шлях.

Чому блокування робить картину гіршою

Якщо постійно ввімкнений VPN і блокування з'єднань без VPN активні одночасно, кожен охоплений застосунок блокується щоразу, коли тунель не піднято. Це працююча функція, а не друга несправність. Симптом змінюється з відмови одного застосунку на відмову всього, що читається як значно більша проблема.

Це також пояснює послідовність, яку люди читають неправильно: авіарежим увімкнено, висхідного каналу немає, застосунки заблоковані, VPN каже connecting. Блокування було політикою, яка робила свою роботу. Вимкнення політики заради перевірки каналу прибирає захист, який ви, найімовірніше, хотіли, і нічого не вчить.

Натомість перевірте охоплення. Які застосунки охоплені, які виключені та чи профіль на користувача, чи на весь пристрій. Задача, яка запускає застосунок VPN, щойно з'являється Wi-Fi, — це тригер, а не гарантія, що до її запуску не вийшов жоден пакет.

Порядок діагностики, який припиняє здогади

Працюйте знизу вгору. Підтвердьте режим, підтвердьте, що мережа існує, що вона перевірена, що вона досягає чогось за межами локальної підмережі, і лише потім дивіться на клієнта. adb shell ping -c 3 1.1.1.1 — груба перевірка, але вона відділяє відсутній шлях від шляху, який існує, поки тунель незадоволений.

Якщо ping не проходить, поки мережа в списку, проблема вище VPN, і жодне налаштування клієнта її не виправить. Якщо ping проходить, а тунель усе одно не встановлюється, зніміть журнал клієнта в цей момент: помилка відрізнить вичерпання часу від відмови автентифікації, а ці дві речі не мають нічого спільного.

Завершіть відновленням потрібного стану: Wi-Fi дозволено в авіарежимі, якщо це ваше звичне налаштування, портал пройдено, політику блокування знову ввімкнено. Потім один раз перепідключіться і переконайтеся, що тунель піднімається сам, бо конфігурація, яка працює лише після ручних спроб, знову відмовить під час наступного завантаження.

Схожі статті