Happ VPN

Архитектура 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, а результат подключения — пинг, статус, ошибку — показывает пользователю.

Путь трафика: от интерфейса до сервера

Когда сервер выбран и нажата кнопка подключения, происходит примерно следующее:

  1. Интерфейс собирает конфигурацию сервера и активный профиль маршрутизации в формат, понятный ядру.
  2. Ядро поднимает исходящее соединение по нужному протоколу — VLESS, VMess, Trojan, Shadowsocks, SOCKS5 или Hysteria2.
  3. Трафик устройства попадает в ядро одним из двух способов: через TUN-интерфейс (виртуальная сетевая карта, принимает весь трафик) или через системный прокси (только для приложений, которые его используют).
  4. Ядро разбирает первые пакеты соединения — sniffing, — чтобы определить протокол и домен ещё до применения правил маршрутизации.
  5. Профиль маршрутизации решает, идёт ли этот трафик напрямую, через прокси или блокируется.

Режим 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, поэтому пользователю эта история важна не сама по себе, а как объяснение, почему протоколов в приложении несколько.

Упомянутые темы

Разделы по теме

Источники

  1. Документация Happ — обращение 28 сентября 2026
  2. Документация Happ: маршрутизация — обращение 28 сентября 2026
  3. Документация Happ: управление приложением через подписку — обращение 28 сентября 2026
  4. Документация Xray-core — обращение 28 сентября 2026