Что такое маршрутизация в Happ и зачем она нужна
Маршрутизация в Happ — это механизм, который определяет, какой трафик должен идти через VPN-сервер, а какой — напрямую, минуя прокси. Без настроенных правил всё соединение либо полностью уходит в туннель, либо работает напрямую, что не всегда удобно. Например, если вы находитесь в России и используете VPN для доступа к заблокированным ресурсам, банковские приложения и государственные сайты могут работать некорректно при подключении через зарубежный сервер. Правила роутинга позволяют оставить локальные сервисы на прямом соединении, а остальной трафик направить через прокси.
В Happ маршрутизация реализована через профили, которые содержат набор правил, списки доменов и IP-адресов, а также настройки DNS. Профили могут быть предустановлены, импортированы из подписки или созданы вручную. Основная цель — гибко управлять трафиком без необходимости вручную переключать VPN для каждого сайта или приложения.
Как устроены профили маршрутизации в Happ
Профиль маршрутизации — это JSON-структура, которая хранит все параметры, необходимые для обработки трафика. В Happ каждый профиль привязан к конкретной подписке, что обеспечивает изоляцию настроек между разными VPN-сервисами. Это означает, что если у вас несколько подписок, каждая может иметь свои правила, и они не будут конфликтовать.
Профиль по умолчанию содержит базовые настройки, которые используются, если какие-то параметры не указаны. Например, если в профиле не задан список доменов для прямого подключения, будет использоваться значение из профиля по умолчанию. Важно понимать, что изменения в профиле применяются не мгновенно: они записываются в базу данных, но вступают в силу только после перезапуска соединения (Reconnect). Это сделано для того, чтобы не разрывать активные сессии и не вызывать сбои.
При удалении подписки из приложения все связанные с ней профили маршрутизации и кэшированные геофайлы также удаляются, что предотвращает накопление устаревших данных.
Основные параметры профиля: GlobalProxy, DNS и списки
Ключевой параметр — GlobalProxy. Если он установлен в true, весь трафик по умолчанию направляется через прокси (первым в списке outbound ставится тег proxy). Если false, то используется прямое соединение (тег direct). Этот параметр также определяет, куда пойдёт трафик, если ни одно правило не сработало.
DNS-настройки разделены на два типа: Remote DNS (для запросов через прокси) и Domestic DNS (для запросов напрямую). Для каждого можно указать тип протокола (DoH, DoU), домен и IP-адрес. По умолчанию Remote DNS использует Cloudflare (1.1.1.1), а Domestic — Google (8.8.8.8). Также есть параметр dnsHosts, который работает как системный файл hosts, позволяя задавать ручные соответствия «домен: IP».
Списки маршрутизации включают три категории: directSites и directIp (ресурсы, которые должны открываться напрямую), proxySites и proxyIp (ресурсы, которые должны идти через прокси), а также blockSites и blockIp (заблокированные ресурсы, например реклама или трекеры). Эти списки используются для фильтрации трафика на основе доменов и IP-адресов.
Геофайлы GeoIP и Geosite: зачем они нужны
Геофайлы — это базы данных, которые содержат списки IP-адресов (GeoIP) и доменов (Geosite), сгруппированные по категориям. Happ использует файлы из проекта Loyalsoldier v2ray-rules-dat, которые регулярно обновляются. Эти файлы позволяют маршрутизировать трафик на основе географической принадлежности ресурсов. Например, можно настроить правило, чтобы все домены, относящиеся к России, шли напрямую, а всё остальное — через прокси.
Приложение поставляется с предустановленными геофайлами, но они могут устаревать. Обновление происходит автоматически при обновлении ядра или вручную через параметр lastUpdatedDate. Если в профиле указана дата, которая позже текущей, приложение принудительно скачает новые геофайлы. Это важно для поддержания актуальности списков, особенно если провайдер добавляет новые домены или IP-адреса.
Для экономии памяти на устройствах с ограниченными ресурсами (например, iOS с лимитом 50 МБ) используется функция useChunkFiles. Она позволяет вырезать из геофайлов только нужные секции и передавать ядру урезанные версии. Это предотвращает падение ядра при старте.
Порядок проверки правил и стратегия доменов
Правила маршрутизации проверяются последовательно, в порядке, заданном в параметре routeOrder. Приложение берёт первое правило из списка и проверяет, соответствует ли ему трафик. Если нет — переходит к следующему. Если ни одно правило не подошло, трафик направляется в основной выход (Proxy или Direct, в зависимости от GlobalProxy).
Стратегия доменов (domainStrategy) определяет, как Xray сопоставляет домены с IP-правилами. Есть три варианта:
AsIs— домен передаётся «как есть», без попытки резолва IP на этапе маршрутизации.IPIfNonMatch— сначала проверяются правила по домену, если совпадения нет, выполняется DNS-запрос и проверка по IP.IPOnDemand— домен всегда резолвится в IP перед проверкой правил.
Выбор стратегии влияет на скорость и точность маршрутизации. Например, IPIfNonMatch может быть медленнее, но точнее, так как позволяет обрабатывать случаи, когда домен не указан в списках, но его IP-адрес относится к нужной категории.
Как импортировать и активировать профиль маршрутизации
Профиль маршрутизации можно импортировать несколькими способами. Самый простой — использовать специальную ссылку вида happ://routing/add/{base64}, где {base64} — это закодированный JSON-профиль. Такие ссылки можно создавать на сайте routing.happ.su или получать от провайдера. Ссылка может быть передана через HTTP-заголовок routing или добавлена в тело подписки. При импорте профиль привязывается к подписке, с которой он пришёл, и начинается загрузка геофайлов.
После импорта профиль нужно активировать. Для этого откройте приложение Happ, перейдите в настройки (иконка шестерёнки), выберите раздел «Маршрутизация» и включите переключатель «Использовать роутинг». Убедитесь, что нужный профиль выбран (отмечен точкой). Если профиль импортирован с помощью ссылки happ://routing/onadd/{base64}, он активируется автоматически, даже если другие профили уже активны.
Важно: для JSON-подписок действует ограничение — профиль маршрутизации может быть только один, и он не может быть изменён или отключён вручную. Все настройки приходят от провайдера вместе с подпиской.
Обновление профилей и обработка ошибок загрузки
Когда происходит импорт профиля с уже существующим именем, запускается процесс обновления. Система переходит в состояние Update, начинает фоновую загрузку новых геофайлов, но при этом продолжает использовать старые правила до завершения загрузки. Это обеспечивает бесперебойную работу — пользователь не замечает обновления. После успешной загрузки происходит атомарная подмена: старые правила заменяются новыми, и состояние Default обновляется.
Если загрузка геофайлов не завершается в течение 3 минут, процесс останавливается, и на главном экране появляется сообщение об ошибке. Рядом с проблемным профилем в списке отображается красный восклицательный знак. Ошибка исчезает автоматически после удаления проблемного профиля или успешного завершения загрузки.
Чтобы избежать ошибок, убедитесь, что у вас стабильное интернет-соединение и достаточно места на устройстве. Также проверьте, что URL геофайлов доступны и не заблокированы.
Практические советы по настройке правил
При настройке маршрутизации важно помнить о порядке правил: общее правило («всё через прокси») должно стоять последним, иначе исключения не сработают. Например, если вы хотите, чтобы банковские сайты шли напрямую, а всё остальное через VPN, сначала добавьте правило для банков, а затем общее правило.
Не стоит создавать слишком длинные списки доменов — это усложняет поддержку и может привести к ошибкам. Оптимально держать 5–10 правил. Если сайт то открывается, то нет, скорее всего, у него несколько доменов, и часть из них не попала в правило. Добавьте все домены, которые видны в адресной строке при загрузке.
Помните, что правила хранятся локально и не переносятся между устройствами. Если вы используете несколько устройств, настройки придётся задавать заново на каждом. Для упрощения можно использовать конструктор правил на сайте routing.happ.su, который генерирует готовый JSON-профиль.
Ограничения и особенности для JSON-подписок
Для JSON-подписок действует режим Restricted Mode, который предотвращает рассинхронизацию настроек с метаданными провайдера. В этом режиме у подписки может быть только 0 или 1 профиль маршрутизации. Профиль нельзя добавить вручную, скопировать из другой подписки или импортировать из буфера обмена — он приходит только вместе с подпиской.
Пользователь не может отключить или изменить такой профиль: главный тумблер маршрутизации заблокирован, а изменение имени, ссылок и геофайлов невозможно. Поля Remote DNS в интерфейсе переименованы в Tunnel DNS и используются локально для настройки системного туннеля, не влияя на сам JSON-файл.
Если вы используете JSON-подписку, убедитесь, что в профиле маршрутизации созданы те же теги, что и в JSON-конфигурации, иначе нарезка геофайлов может работать некорректно.
Частые проблемы и способы их решения
Одна из частых проблем — правила не срабатывают. Сначала проверьте, активно ли само соединение: если доступ просрочен, не будет работать ничего. Попробуйте подключиться с заведомо рабочей ссылкой, чтобы убедиться, что приложение исправно.
Если сайт открывается через VPN, хотя должен идти напрямую, проверьте, что правило для него добавлено в список directSites и что оно стоит раньше общего правила. Также убедитесь, что профиль маршрутизации активирован и выбран.
Если возникают ошибки загрузки геофайлов, проверьте доступность URL и наличие свободного места. Иногда помогает удаление проблемного профиля и повторный импорт. Если проблема не решается, обратитесь в поддержку провайдера.
Вопросы и ответы
Как включить маршрутизацию в Happ?
Откройте приложение Happ, нажмите на иконку шестерёнки в левом верхнем углу, перейдите в раздел «Маршрутизация» (Routing Rules) и включите переключатель «Использовать роутинг» (Use routing). Убедитесь, что нужный профиль выбран (отмечен точкой). После этого трафик будет распределяться согласно правилам профиля.
Что делать, если правила маршрутизации не срабатывают?
Сначала проверьте, активно ли соединение: если доступ просрочен, правила не будут работать. Попробуйте подключиться с заведомо рабочей ссылкой. Затем убедитесь, что профиль маршрутизации активирован и выбран, а правила для нужных доменов добавлены в правильные списки (direct/proxy). Также проверьте порядок правил: общее правило должно быть последним.
Можно ли создать свой профиль маршрутизации вручную?
Да, для обычных подписок можно создать профиль вручную, используя JSON-структуру. Однако для JSON-подписок действует ограничение: профиль может быть только один, и он не может быть создан или изменён вручную — он приходит только от провайдера. Для создания профилей удобно использовать сайт routing.happ.su, где можно сгенерировать ссылку с нужными правилами.
Как обновить геофайлы GeoIP и Geosite?
Геофайлы обновляются автоматически при обновлении ядра приложения или при импорте профиля с более новой датой lastUpdatedDate. Также можно инициировать принудительное скачивание, если в профиле указана дата, которая позже текущей. Если загрузка не завершается в течение 3 минут, появится ошибка — проверьте интернет-соединение и доступность URL.
Влияет ли порядок правил на работу маршрутизации?
Да, порядок критически важен. Правила проверяются последовательно, и срабатывает первое подходящее. Поэтому общее правило («всё через прокси» или «всё напрямую») должно стоять последним, иначе исключения не будут работать. Например, если вы хотите, чтобы банк шёл напрямую, а остальное через VPN, сначала добавьте правило для банка, затем общее.
Можно ли перенести правила маршрутизации на другое устройство?
Нет, правила хранятся локально на каждом устройстве. Если вы используете несколько устройств, настройки придётся задавать заново на каждом. Для упрощения можно использовать конструктор правил на сайте routing.happ.su, который генерирует готовый JSON-профиль, и импортировать его на каждое устройство.
Что такое FakeDNS и зачем он нужен?
FakeDNS — это функция, которая подменяет реальный IP-адрес виртуальным. Это гарантирует, что все DNS-запросы направляются только в Xray, исключая их перехват системным DNS. Это позволяет обрабатывать запросы строго согласно конфигурации Xray, что повышает точность маршрутизации и защищает от утечек DNS.