Симптом, по которому случай узнаётся сразу
Туннель держится, пока экран включён и приложение открыто. Заблокировали телефон, положили в карман, достали через двадцать минут — соединения нет, значок туннеля в строке состояния пропал, мессенджер молчал всё это время.
Это не сбой клиента и не проблема сервера. Это устройство выгрузило приложение из памяти, потому что посчитало его фоновую работу лишней. Для VPN-клиента выгрузка означает разрыв туннеля: соединение живёт ровно столько, сколько живёт процесс приложения.
На оболочке Huawei такое поведение включено по умолчанию и настраивается в трёх разных местах. Из-за этого жалоба «на хуавей не работает ни один ВПН» встречается чаще, чем на других устройствах: дело не в клиентах, а в общем для всех них ограничении.
Первый слой: запуск приложений
Главный переключатель называется «Запуск приложений». Путь через диспетчер: «Диспетчер телефона», затем «Запуск приложений», затем «Управление вручную» для нужной программы. В открывшемся окне три переключателя, и включить нужно все три: «Автозапуск», «Косвенный запуск» и «Работа в фоновом режиме».
На части аппаратов тот же список лежит в другом месте: Настройки, «Батарея», «Запуск приложений». Там сначала выключается общий пункт «Управлять всеми автоматически», и только после этого появляется возможность задать режим отдельному приложению.
Формулировку компания даёт для EMUI 9.0 и новее. Смысл всех трёх переключателей один: без них система считает, что приложение может быть выгружено в любой момент.
Второй слой: оптимизация батареи
Отдельно от «Запуска приложений» работает список оптимизации питания. Настройки, «Оптимизация батареи», переключить показ на «Все приложения», найти нужную программу и поставить ей запрет на оптимизацию.
Это разные механизмы, и первый не отменяет второй. Частая ошибка — настроить один список, убедиться, что стало лучше, и не тронуть второй. Тогда обрывы становятся реже, но не исчезают, и причину потом ищут в клиенте.
Третий слой: то, что не настраивается
На EMUI 9 и новее работает системный ограничитель фоновых процессов со своим белым списком. Пополнить этот список пользовательским приложением нельзя — интерфейса для этого не предусмотрено. Практически это значит, что после настройки двух первых слоёв стоит проверить результат, а не считать вопрос закрытым: на части устройств остаточные выгрузки сохраняются.
Проверка простая. Включите соединение, заблокируйте экран, подождите полчаса и посмотрите, живо ли оно. Если туннель поднимается заново сам при разблокировке — это выгрузка. Если он не поднимается и после разблокировки, дело не в фоне, а в самом соединении, и разбирать надо поведение туннеля после сна устройства.
Держать приложение закреплённым в списке недавних — приём, который на Huawei действительно помогает, но он лечит следствие. Настройка двух списков надёжнее, потому что переживает перезагрузку.