Windows
sing-box → SOCKS5 → xray-core → XHTTP
Для остальных протоколов xray не запускается — sing-box работает напрямую.
Раздел для разработчиков, которые будут поддерживать и дорабатывать клиент. Здесь по порядку: как трафик проходит через приложение, что происходит при подключении и кто за что отвечает.
Каждая платформа использует свой набор компонентов. Трафик идёт по цепочке сверху вниз — от приложения пользователя до интернета.
sing-box → SOCKS5 → xray-core → XHTTP
Порядок операций важен: защита от утечек включается только после того, как туннель и маршруты готовы. Если шаг падает — соединение не открывается (fail-closed).
Интерфейс отправляет команду connect фоновой службе по именованному каналу (named pipe).
Служба запускает sing-box. Если профиль использует XHTTP — дополнительно поднимает xray-core как локальный мост.
sing-box создаёт виртуальный адаптер WinTun и прописывает маршруты согласно выбранному режиму.
Включается блокировка на уровне системы (WFP) — только сейчас, когда туннель уже поднят.
Трафик идёт через VPN. Смена сервера — перезапуск движка «на месте», без остановки службы.
Пользователь подтверждает разрешение VPN, запускается foreground-сервис Android.
Сервис создаёт TUN-интерфейс и исключает из туннеля приложения по правилам split tunnel.
Через libXray поднимается xray с конфигом выбранного сервера.
tun2socks направляет пакеты из TUN в локальный SOCKS-вход xray.
Трафик идёт через VPN. Смена сервера — перезапуск «на месте» внутри того же сервиса.
Чтобы быстро сориентироваться в коде: основные части клиента и их зона ответственности.
| Компонент | Роль |
|---|---|
| UI WPF | интерфейс, команды службе по named pipe |
| Служба Service | управляет VPN в фоне с правами системы |
| sing-box | маршрутизация, сетевой стек, владеет TUN |
| xray-core | мост только для транспорта XHTTP |
| WinTun | виртуальный сетевой адаптер |
| Kill Switch WFP | блокировка трафика при обрыве |
| Компонент | Роль |
|---|---|
| UI Compose | интерфейс на Kotlin + Jetpack Compose |
| VpnService | системный VPN Android, владеет TUN |
| xray-core libXray | протоколы и шифрование |
| tun2socks | связывает TUN с локальным входом xray |
Подробнее об авторизации, подписках и форматах — в разделе Разработчикам.
Режимы совпадают по смыслу на обеих платформах, но реализованы по-разному — нативными средствами каждой ОС.
Весь трафик идёт через VPN.
Российские ресурсы — напрямую, остальное — через VPN.
Локальные ресурсы — напрямую, остальное — через VPN.
Отдельные приложения можно исключить из туннеля по имени или пути процесса (process name / process path) — это правила маршрутизации sing-box.
Весь трафик идёт через VPN.
Российские сервисы — напрямую, зарубежные — через VPN.
Напрямую — только выбранный список (РФ и локальные), всё остальное идёт через VPN.
Отдельные приложения исключаются из туннеля через Android VPN API — per-app маршрутизация на уровне системы.
Для режимов Bypass RU и Whitelist Android по запросу скачивает базы geoip/geosite (~1 МБ) — кнопкой в разделе «Маршрутизация». Без них режим работает как Full Tunnel.