VPN вимикається, коли гасне екран: який життєвий цикл?
Заблокований екран може призупинити клієнт, дозволити зіставленню спливти або вбити сесію застосунку. Один контрольований тест розділяє їх до будь-якої зміни налаштувань.
Передача зупиняється тієї ж миті, коли екран тьмяніє, а значок з’являється за кілька секунд. Три різні речі створюють цю картину: процес клієнта обмежується, шлях простоює й втрачає своє зіставлення, або застосунок втрачає сесію, якої тунель так і не помітив. Кожна має власні докази, і кожне виправлення належить іншому шару. Порядок нижче розділяє їх одним контрольованим тестом замість перебору всіх налаштувань.
Три збої, які виглядають однаково
Обмежений фоновий процес перестає надсилати keepalive, і протилежна сторона зрештою оголошує тунель мертвим. Неактивне зіставлення на шляху може спливти, поки пристрій спить, тож зворотний трафік так і не доходить до клієнта, який ще цілком живий. Застосунок може втратити власне з’єднання, поки тунель стоїть, що дає діалог помилки зі здоровим значком VPN позаду. З погляду користувача всі три читаються як вимкнення VPN під час вимкнення екрана.
Різниця важлива, бо засоби лікування на практиці суперечать одне одному. Виняток клієнта з обмежень енергозбереження виправляє перший випадок і нічого не робить для зіставлення, що спливло. Подовження keepalive виправляє другий і марнує батарею в третьому, де від початку нічого мережевого не було неправильно.
Порівняйте активний і неактивний стан у контрольованих умовах
Тримайте все сталим: той самий пристрій, та сама мережа, той самий кінцевий вузол, той самий застосунок. Заблокуйте екран на короткий фіксований інтервал і запишіть три спостереження: чи повідомляє клієнт про від’єднання, чи працює новий запит після розблокування і чи відновилася наявна передача. Потім повторіть із працюючим keepalive або періодичним запитом і порівняйте два прогони. Одна змінена змінна між двома прогонами варта більше, ніж тиждень анекдотичних звітів.
Час належить до запису. Обрив через дев’яносто секунд пахне зіставленням або інтервалом keepalive, тоді як обрив у момент блокування вказує на призупинення процесу. Запишіть і тригер, і інтервал, бо наступній спробі потрібно з чим порівнювати.
Прочитайте фонову політику платформи
В Android життєвий цикл служби VPN є частиною платформи, а always-on і block-without-VPN — окремі перемикачі з окремими ефектами. Клієнт, який не є always-on, може бути зупинений, коли система забирає ресурси, і жодне налаштування в застосунку цього не змінює. iOS застосовує власні фонові обмеження до постачальника тунелю, і задокументована поведінка відрізняється від демона робочого столу, який просто продовжує працювати. Читайте документацію платформи для відповідного компонента, а не загальний посібник з оптимізації батареї.
Керовані пристрої додають ще один шар. Політика може перекрити особисте налаштування, тож зміна, яка виглядає робочою, відкочується під час наступного оновлення політики. Використовуйте підтримуваний організацією процес винятку, якщо вимога справжня, і запишіть, чому виняток існує.
Що робить пристрій після пробудження
Автоматичне перепідключення — не те саме, що блокування трафіку під час проміжку. Перевірте обидва: чи повертається тунель і чи вийшов незахищеним застосунок, який намагався надіслати дані під час проміжку. Клієнт, який перепідключається за дві секунди, але в першу пропускає DNS-запит, має неправильну політику відмов для робочого пристрою. Тестуйте нешкідливими запитами й призначенням, яке ви контролюєте.
Відновлення застосунку — третє питання. Тунель, що повернувся, не виправляє SSH-сесію, час якої минув, і користувачі часто повідомляють про цю втрату сесії як про збій VPN. Тримайте разом у звіті тригер, збірку клієнта й точний час, бо це поєднання відділяє передбачуваний життєвий цикл вимкнення екрана від сервера, що відмовляє незалежно від пристрою.