Архитектура Happ: интерфейс, Xray-core и профили
- Автор
- Екатерина Лебедева, редактор раздела knowledge base
- Проверил:
- Артём Волков
- Проверено:
- Опубликовано:
- , обновлено
- Версия гайда:
- 1.0
Коротко
Happ состоит из интерфейса, ядра Xray-core и — на компьютерах — фоновой службы. Интерфейс собирает настройки сервера и профиль маршрутизации, передаёт их ядру, а ядро уже устанавливает соединение и обрабатывает трафик в режиме TUN или через системный прокси.
Интерфейс Happ на каждой платформе написан по-своему — нативно на Swift и Kotlin для мобильных устройств и Android TV, на Qt 6 для Windows, macOS DMG и Linux, но во всех случаях он лишь собирает параметры сервера, подписки и маршрутизации. Сами протоколы, TLS, Reality и маршрутизацию по правилам выполняет ядро Xray-core, унаследовавшее часть протоколов от более раннего проекта V2Ray. На компьютерах между интерфейсом и системной сетью стоит ещё и фоновая служба, которая поднимает туннель и переживает перезапуск интерфейса. Профиль маршрутизации и список серверов подписки — надстройка над ядром: они решают, что ему передать, а не как оно работает внутри.
Из чего состоит приложение
Внутри Happ можно выделить несколько слоёв, и у каждого своя задача:
| Компонент | Роль | Платформенная особенность |
|---|---|---|
| Интерфейс | Список серверов, подписки, пинг, настройки | Нативный (Swift, Kotlin) на мобильных, Android TV и macOS из App Store; на Qt 6 — на Windows, macOS DMG и Linux |
| Xray-core | Протоколы, TLS, Reality, обработка пакетов | Одно и то же ядро на всех платформах |
| Фоновая служба | Держит туннель на уровне системы | Только Windows, macOS DMG, Linux |
| Менеджер geo-файлов | Скачивает и обновляет geoip.dat и geosite.dat | Общий для всех платформ, детали — на странице GEO-файлы |
| Профиль маршрутизации | Правила: что напрямую, что через прокси, что заблокировать | Своя изолированная копия у каждой подписки |
Интерфейс не реализует протоколы сам — он собирает параметры сервера (адрес, UUID, тип транспорта, слой защиты) и передаёт их Xray-core, а результат подключения — пинг, статус, ошибку — показывает пользователю.
Путь трафика: от интерфейса до сервера
Когда сервер выбран и нажата кнопка подключения, происходит примерно следующее:
- Интерфейс собирает конфигурацию сервера и активный профиль маршрутизации в формат, понятный ядру.
- Ядро поднимает исходящее соединение по нужному протоколу — VLESS, VMess, Trojan, Shadowsocks, SOCKS5 или Hysteria2.
- Трафик устройства попадает в ядро одним из двух способов: через TUN-интерфейс (виртуальная сетевая карта, принимает весь трафик) или через системный прокси (только для приложений, которые его используют).
- Ядро разбирает первые пакеты соединения — sniffing, — чтобы определить протокол и домен ещё до применения правил маршрутизации.
- Профиль маршрутизации решает, идёт ли этот трафик напрямую, через прокси или блокируется.
Режим TUN на компьютерах может работать поверх системного сетевого стека или через пользовательский стек — второй вариант меньше конфликтует с правилами файрвола и другими сетевыми утилитами ценой небольшой просадки скорости. Отдельно ядро умеет объединять несколько логических соединений в одно физическое через Mux — это снижает задержки на установку соединения, но не увеличивает пропускную способность канала.
Как подписка и профиль ложатся поверх ядра
Подписка и профиль маршрутизации — это не часть протокола, а надстройка интерфейса Happ над ядром. Подписка обновляет список серверов и служебные параметры вроде названия и остатка трафика — подробности на странице формат подписки.
Профиль маршрутизации отдельно управляет тем, какой трафик получает ядро и куда его направить: он не трогает сам протокол подключения. Если конфигурация приходит в виде готового JSON, ядро получает её без изменений от Happ, а правила интерфейса к ней не применяются — это разобрано на странице JSON-конфигурации.
Особенности по платформам
На Windows, macOS DMG и Linux фоновая служба переживает закрытие окна приложения, поэтому именно на этих системах встречается ошибка неожиданной остановки службы — интерфейс без неё не может поднять туннель.
На мобильных платформах и Android TV фоновой службы в таком виде нет: систему туннеля контролирует само приложение через системные API VPN. Apple TV — самый ограниченный случай: там нет классической маршрутизации по правилам, а есть только упрощённый список Direct, который можно включать и редактировать. Android TV, напротив, использует то же приложение и то же ядро, что и обычный Android, только с адаптированным под пульт интерфейсом.
Главное
- Интерфейс Happ и ядро Xray-core — разные слои: интерфейс собирает настройки, а протоколы и TLS обрабатывает ядро.
- На Windows, macOS DMG и Linux поверх ядра работает фоновая служба, которая держит туннель и переживает закрытие окна приложения.
- Xray-core умеет передавать трафик через TUN-интерфейс всего устройства или через системный прокси только для отдельных программ.
- Профиль маршрутизации не меняет протокол подключения — он лишь решает, какой трафик идёт напрямую, через прокси или блокируется.
- Xray-core исторически продолжает часть протоколов проекта V2Ray, в котором появился VMess, но развивается отдельно от него.
Частые вопросы
Правда ли, что Happ — это просто оболочка над Xray-core?
По сути да, но оболочка немаленькая. Xray-core отвечает за протоколы, TLS, Reality и обработку пакетов, а интерфейс Happ добавляет то, чего в самом ядре нет: хранение нескольких серверов и подписок, экран пинга, профили маршрутизации с понятными переключателями и фоновую службу на компьютерах. Без интерфейса пользователю пришлось бы редактировать JSON-конфигурацию ядра вручную; с ним это делается через ссылки, QR-коды и подписки.
Зачем на компьютерах есть отдельная фоновая служба?
Служба поднимает и держит туннель на уровне системы, пока работает компьютер, а не только пока открыто окно приложения. Это позволяет соединению не рваться при сворачивании окна и упрощает автозапуск при включении устройства. Если служба не запускается или падает, Happ показывает отдельное сообщение об этом и предлагает переустановку — так решается ошибка «Соединение было прервано из-за неожиданной остановки службы Happ».
В чём разница между режимом TUN и системным прокси в Happ?
TUN создаёт виртуальный сетевой интерфейс и принимает трафик всего устройства, включая программы, которые не умеют работать через прокси напрямую. Системный прокси, наоборот, действует только для приложений, которые читают системные настройки прокси, и не трогает остальной трафик. TUN обычно нужен, когда важно завернуть вообще всё с устройства, а системный прокси — когда хочется точечно направить через сервер только часть программ.
Что такое sniffing и зачем он ядру?
Sniffing — это разбор первых пакетов соединения, чтобы Xray-core понял протокол и домен назначения ещё до применения правил маршрутизации: без этого правила по доменам работали бы только для явно заданных адресов. Функция включена по умолчанию и работает внутри ядра, а не в интерфейсе Happ. В отдельных случаях она может влиять на определение медиаконтента в некоторых приложениях, но на само подключение не влияет.
Как связаны между собой профиль маршрутизации и подписка?
У каждой подписки в Happ — свой отдельный профиль маршрутизации со своим независимым жизненным циклом, а не одни правила на всё приложение. Изменение профиля вступает в силу не сразу, а при следующем переподключении. Если подписку удалить, вместе с ней каскадно удаляются и её профиль маршрутизации, и загруженные для него geo-файлы. Устройство профиля разобрано на странице «Профили маршрутизации».
Откуда в Xray-core протоколы вроде VMess?
VMess появился в более раннем проекте V2Ray, а Xray-core изначально был его ответвлением и продолжил поддерживать этот протокол ради совместимости. Позже в Xray-core добавили VLESS как более лёгкую замену VMess, а также Reality и XTLS Vision, которых в V2Ray никогда не было. Happ использует уже готовое ядро Xray-core, поэтому пользователю эта история важна не сама по себе, а как объяснение, почему протоколов в приложении несколько.
Упомянутые темы
Похожие материалы
- JSON-конфигурации в Happ: передача 1:1 в Xray-core
- История Happ: версии, платформы, магазины приложений
- Happ — клиент, а не VPN-сервис: в чём разница
- Happ на компьютере и телефоне
- TUN-режим
- Xray VPN: чем на самом деле является Xray-core
- V2Ray: что это и как связано с Xray-core в Happ
- Как включить TUN-режим
Разделы по теме
Источники
- Документация Happ — обращение 28 сентября 2026
- Документация Happ: маршрутизация — обращение 28 сентября 2026
- Документация Happ: управление приложением через подписку — обращение 28 сентября 2026
- Документация Xray-core — обращение 28 сентября 2026