Локальная политика · Qeli 0.8.1

Маршрутизация по приложениям

Как режимы all, include и exclude выбирают процессы на Windows, macOS и Android, а gateway и сетевые маршруты отдельно определяют назначения.

Ментальная модель

Приложение и назначение выбираются отдельно

apps_mode отвечает на вопрос «чей трафик?», а gateway, server push, include и exclude — «к каким адресам?». Per-app не превращает split-tunnel в full-tunnel автоматически.

ОсьКлючиРезультат
Приложениеapps_mode, appsКакие процессы допускаются в Qeli
Сетьgateway, include, exclude, pushКакие назначения выбранного приложения идут через Qeli
client.conf

all, include и exclude

apps_modeПоведениеПоле apps
allОбычный профиль устройства без классификации процессовНе используется
includeТолько перечисленные приложения могут идти через QeliНепустой список обязателен
excludeЧерез Qeli идут все приложения, кроме перечисленныхНепустой список обязателен
Пустой список не оставляйте. Неизвестный apps_mode отклоняется. Windows/macOS не запускают per-app без применимых идентификаторов; Android отказывает include, если не найдено ни одного установленного пакета, а для exclude без совпадений предупреждает, что через VPN пойдут все приложения.
Матрица 0.8.1

Что считается идентификатором приложения

ПлатформаИдентификаторКак применяется
WindowsПолный путь к .exeWinDivert сопоставляет TCP/UDP endpoint с PID и исполняемым файлом; DNS и фрагменты сохраняют принадлежность
macOS 13+Bundle/code-signing IDTransparent Proxy + DNS Proxy выбирают TCP/UDP/DNS и привязывают выбранные сокеты к qeli utun
AndroidИмя пакетаVpnService использует allowed/disallowed applications; отсутствующий пакет пропускается с записью в лог
iOS sourceBundle IDПараметры сохраняются, но произвольная per-app политика требует MDM и NEAppRule
Linux CLIСохраняет ключи INI, но не классифицирует приложения
Списки не переносимы между ОС. Путь C:\Program Files\…, bundle ID и Android package name обозначают приложение только на своей платформе.
macOS требует подписанную сборку. Per-app работает через system/network extensions с Developer ID entitlements. Ad-hoc и кросс-собранный архив эту функцию не активируют; публичному релизу также нужны notarization и stapling.
Три формата списка

Примеры client.conf по платформам

Windows · [qeli]
apps_mode = include
apps = C:\Program Files\Mozilla Firefox\firefox.exe, C:\Program Files\Signal\Signal.exe
macOS · [qeli]
apps_mode = include
apps = com.apple.Safari, org.mozilla.firefox
Android · [qeli]
apps_mode = exclude
apps = com.android.vending, com.google.android.youtube

В GUI безопаснее выбирать приложения встроенным picker: он записывает идентификатор в формате текущей платформы и снижает риск опечатки.

Матрица решений

Как apps_mode сочетается с gateway

gatewayВыбранное приложениеОстальные приложения
falseЧерез Qeli только к TUN-пулу, локальным include и pushed routes; публичные IPv4 идут напрямуюИспользуют системный маршрут
trueПубличный IPv4 также идёт через QeliИспользуют системный маршрут
В 0.8.0 per-app data plane поддерживает IPv4 и IPv6. Платформа должна объявить соответствующую capability; неподдерживаемое сочетание отклоняется fail-closed. На iOS применение per-app по-прежнему требует MDM NEAppRule.
Ограничения macOS: per-app не перехватывает ICMP и не применяет host-global kill_switch; выбранные TCP/UDP/DNS при этом остаются fail-closed внутри классификатора. Windows также удерживает выбранный трафик fail-closed при reconnect.
Локальная настройка

Используйте UI или INI, не полагайтесь на qeli://

В 0.8.0 apps_mode и apps остаются локальными полями и не входят в qeli://. Для воспроизводимой политики сохраняйте их в local client.conf или задавайте через GUI конкретного устройства.

INI round-trip сохраняет значения даже на клиентах, которые сами их не применяют. Это полезно для редактирования, но наличие ключей в файле не означает поддержку платформой.
Приёмочная проверка

Проверьте выбранное и невыбранное приложение

apps_mode = include|excludeрежим валиден, список не пуст
gateway = false|trueназначения соответствуют split/full модели
curl https://api.ipify.orgзапустите отдельно из выбранного и невыбранного приложения
DNS + TCP + UDPпроверьте не только браузерный TCP, но также DNS и UDP
Первоисточники

Платформенная реализация v0.8.1