Флажок выглядит как всё решение, но в Android это не так. Один и тот же отмеченный пакет означает «только это приложение использует VPN» при базе «только включение» и «это приложение обходит VPN» при базе, исключающей выбранные. Люди устанавливают клиент, находят список с подписью Разрешённые приложения, отмечают один нужный пакет и уходят с политикой, которая делает обратное. Смена клиента редко помогает; выбор базы до того, как вы тронете список, помогает.

База — это политика, а не флажок

В VpnService в Android клиент настраивает маршрутизацию по приложениям через addAllowedApplication или addDisallowedApplication. Первый ограничивает туннель перечисленными пакетами, второй пускает через туннель всё, кроме них. Клиенты оборачивают оба варианта в интерфейс, который может выглядеть почти одинаково, а некоторые подписывают раздел по списку, а не по режиму, поэтому один заголовок раздела не скажет, какая база активна.

Читайте переключатель режима над списком, а не заголовок. В оригинальном клиенте OpenVPN for Android у списка разрешённых приложений есть база «только включение» и база с исключением выбранных, а брендированная сборка может сформулировать обе иначе, сохранив то же поведение. Скриншот из другого клиента или из более старой версии того же самого не доказывает, в каком режиме вы находитесь.

What the client showsWhat a checked app gets
Allowed apps, include-only baselineThe app uses the tunnel; unchecked apps do not
Allowed apps, exclude-selected baselineThe app bypasses the tunnel; everything else uses it
No list configuredClient or profile default, commonly all apps

Эта таблица и есть весь миф. Отметка приложения — утверждение об одном пакете; база решает, звучит ли оно как «включить» или «исключить».

Сначала режим, потом пакет

Работайте в таком порядке, потому что выбор, сделанный при одной базе, может пережить смену режима и тихо перевернуть свой эффект:

  1. Определите настоящий пакет и то, личная это копия или копия рабочего профиля.
  2. Откройте настройки выбора приложений именно того профиля VPN, к которому подключаетесь.
  3. Задайте базу, смысл которой — «только выбранные приложения используют VPN».
  4. Включите нужный пакет, а несвязанные приложения оставьте вне набора.
  5. Переподключитесь, чтобы клиент перестроил интерфейс с новым списком.

Профиль важен не меньше пакета. У клиента может быть несколько профилей, и выбор по приложениям относится к тому, к которому вы действительно подключаетесь; правка профиля, которым вы никогда не пользуетесь, ничего не меняет. На управляемом устройстве рабочий профиль — отдельный пользователь со своей копией приложения и своей политикой, поэтому то, что личный экземпляр находится в туннеле, ничего не говорит о рабочем.

Переподключитесь, прежде чем судить о результате

VpnService читает списки приложений при установлении интерфейса туннеля. Работающий туннель не обязательно подхватывает правку списка, а клиенты различаются тем, перестраивают ли они его автоматически или ждут, пока вы отключитесь и подключитесь снова.

Если изменение будто ничего не делает, проверьте переподключение, прежде чем сомневаться в списке. Затем сделайте свежий запрос вместо перезагрузки уже открытой страницы: приложение, которое держит установленное соединение, — плохой объект проверки, и увиденный результат может относиться к старому интерфейсу.

Ваш сценарий может выйти за пределы приложения

Приложение может передать задачу браузеру для входа, просмотрщику документов или цели общего доступа. При базе «только включение» эти помощники оказываются вне туннеля, поэтому сценарий может отказать на полпути, даже если первое приложение настроено верно. Включайте помощника, только если сценарию он действительно нужен, и добавляйте его осознанно, а не обнаруживайте во время демонстрации.

Выбор по приложениям не заменяет и собственную политику маршрутов соединения. Профиль по-прежнему должен нести префиксы назначения и семейства адресов, которые использует приложение, а шлюз по-прежнему должен разрешать службу. Правильно внесённое в список приложение с недостижимым назначением выглядит так же, как неверно настроенный список.

Проверьте обе стороны, затем запишите политику

Проверьте один свежий запрос во включённом приложении и один в приложении, которое должно остаться снаружи. Сравните адрес выхода и доступ к частному ресурсу, затем повторите после переподключения. Если ваша организация использует политику Android, блокирующую соединения без VPN, исключённое приложение может быть заблокировано полностью вместо прямого выхода; это работает политика, а не неисправность, которую нужно обойти.

Запишите режим, имена пакетов вместе с профилем, какие приложения должны обходить туннель, какие семейства адресов он несёт и что должно происходить при падении туннеля. Если клиент не может чисто выразить сценарий, выберите более широкий утверждённый набор приложений или политику управляемого профиля вместо правки правил брандмауэра на уровне root, что не входит в поддерживаемый Android механизм для отдельных приложений.

Похожие статьи