Happ: permission denied на VPN-профиль
Кто именно отказывает и почему
VPN-профиль — системный объект, а не файл внутри приложения. Клиент лишь просит систему создать его от своего имени, и последнее слово всегда за системой. Отказ означает, что запрос отклонён на уровне ОС: либо пользователь однажды сказал «нет», либо действует политика, либо слот профиля занят другим приложением.
Отличить этот случай от прочих просто по моменту сбоя. Отказ приходит до всякой сетевой активности: подписка не читается, узлы не запрашиваются, счётчик трафика остаётся нулевым. Если же клиент успел показать список серверов и упал на подключении, причина другая.
Обратите внимание и на повторяемость. Системный отказ стабилен: он приходит каждый раз, в любой сети, на любом узле. Плавающие сбои, которые то есть, то нет, к разрешениям почти никогда не относятся — там стоит смотреть сеть или сервер.
Ещё один надёжный признак — смена устройства ничего не меняет в подписке. Если на планшете тот же доступ поднимается без вопросов, а на телефоне приходит отказ, значит доступ рабочий, а телефон чем-то ограничен. Это сужает поиск до настроек одного устройства и избавляет от лишних действий с профилем.
Android: согласие, второй клиент и рабочий профиль
На Android активным может быть только один VPN-профиль. Если раньше на телефоне стоял другой клиент и он держит своё подключение, Happ не сможет занять место. Удалите старое приложение целиком либо снимите у него признак постоянного подключения в системных настройках сети.
Второй пункт — само согласие. Диалог с запросом показывается один раз, и отказ запоминается. Сброс делается через настройки приложения: очистите его данные и разрешения, после чего запрос появится заново. Заодно убедитесь, что у Happ нет ограничений на работу в фоне.
Третий пункт — рабочий профиль. Если телефон подключён к корпоративной системе управления, администратор может запрещать сторонние VPN политикой. Признак характерный: отказ приходит мгновенно и без всякого диалога, а в настройках сети видно управляемую конфигурацию, которую нельзя удалить.
- Проверить в настройках сети, нет ли другого активного VPN-профиля
- Удалить прежний VPN-клиент или снять у него постоянное подключение
- Очистить данные и разрешения Happ, чтобы вернуть системный запрос
- Разрешить приложению работу в фоне без ограничений батареи
- Проверить, не управляется ли устройство рабочей политикой
iPhone и iPad: где спрятан запрет
На iPhone разрешение выдаётся при первом подключении и хранится как конфигурация VPN в системных настройках. Если запрос когда-то отклонили, повторного диалога не будет — нужно удалить старую конфигурацию Happ в разделе VPN и запустить подключение заново, чтобы система спросила ещё раз.
Вторая причина специфична для iOS: ограничения в экранном времени. Раздел с контентом и приватностью умеет запрещать изменение настроек VPN, и тогда любое приложение получает отказ. Проверьте, не включён ли запрет — часто его ставят родители или он остаётся после настройки устройства ребёнку.
Третья — установленный профиль управления. Устройства из корпоративного парка или бывшие в MDM хранят конфигурацию, которая перекрывает пользовательские настройки. Удаление такого профиля возможно только с разрешения администратора, и без этого сторонний клиент подключить не получится.
На компьютере отказ выглядит иначе
На настольных системах вместо VPN-профиля в дело идут права процесса и виртуальный адаптер. Отказ там читается как невозможность создать интерфейс, и разбирается по другой схеме — она описана в материале про ошибку TUN.
Ещё один сценарий с компьютера — антивирус или защита сети, которая блокирует установку драйвера и создание подключения. Временное отключение такой защиты во время установки клиента показывает, участвует ли она в проблеме.
На рабочем ноутбуке к этому добавляются политики домена: администратор может запрещать сторонние сетевые подключения на уровне системы, и обойти запрет пользовательскими настройками не получится. Признак тот же, что на телефоне с корпоративным управлением — отказ мгновенный и одинаковый при любых действиях.