Что такое правила маршрутизации в Happ и зачем они нужны
Правила маршрутизации в Happ — это набор условий, которые определяют, куда направлять каждый интернет-запрос: через VPN-сервер (proxy), напрямую (direct) или блокировать (block). Без правил весь трафик шел бы через туннель, что замедляло бы доступ к локальным ресурсам и вызывало проблемы с банками и госуслугами, которые часто блокируют подключения из-за рубежа.
В Happ правила организованы в профили маршрутизации. Профиль — это готовый JSON-файл, содержащий списки доменов, IP-адресов, гео-базы и настройки DNS. Приложение поставляется с предустановленными геофайлами, поэтому базовые профили работают сразу после установки. Однако для тонкой настройки — например, чтобы вывести из туннеля только нужные сервисы или заблокировать рекламу — потребуется создать или импортировать собственный профиль.
Понимание правил маршрутизации позволяет решить три типичные задачи: ускорить доступ к российским сайтам, обеспечить стабильную работу банковских приложений и игр, а также скрыть часть трафика от провайдера. В этой статье мы разберем, как устроены профили, какие параметры в них входят и как избежать распространенных ошибок.
Как устроены профили маршрутизации: базовая структура
Профиль маршрутизации в Happ — это JSON-объект с несколькими ключевыми секциями. Рассмотрим их на примере типового профиля.
Основные настройки:
Name— имя профиля, отображаемое в приложении.GlobalProxy— булево значение:trueозначает, что весь трафик по умолчанию идет через прокси,false— напрямую. Это определяет «выход» по умолчанию, если ни одно правило не сработало.RouteOrder— порядок проверки правил (например,block-proxy-direct).LastUpdated— метка времени Unix, управляющая обновлением геофайлов.
Конфигурация DNS:
RemoteDNSTypeиRemoteDNSDomain— протокол и адрес удаленного DNS-сервера (для запросов через прокси). По умолчанию используется DoH Cloudflare (https://cloudflare-dns.com/dns-query).DomesticDNSTypeиDomesticDNSDomain— локальный DNS для прямых запросов (например, DoU с IP 77.88.8.8).DnsHosts— ручные соответствия «домен: IP», работающие как hosts-файл.FakeDNS— подмена реальных IP виртуальными, чтобы все запросы шли через Xray.
Правила маршрутизации:
DirectSites/DirectIp— списки доменов и IP, которые идут напрямую.ProxySites/ProxyIp— списки для туннелирования.BlockSites/BlockIp— заблокированные ресурсы (реклама, трекеры).
Продвинутые параметры:
DomainStrategy— как Xray сопоставляет домены с IP-правилами (AsIs, IPIfNonMatch, IPOnDemand).UseChunkFiles— оптимизация геофайлов для экономии памяти (важно для iOS).
Все эти параметры можно редактировать вручную или импортировать готовый профиль через ссылку happ://routing/add/{base64}.
Геофайлы GeoIP и GeoSite: что это и как они работают
Геофайлы — это внешние базы данных, которые содержат списки IP-адресов (GeoIP) и доменов (GeoSite), сгруппированных по категориям. Например, geoip:ru включает все IP-адреса, зарегистрированные в России, а geosite:category-bank-ru — домены российских банков.
В Happ используются файлы geoip.dat и geosite.dat, по умолчанию загружаемые из репозитория Loyalsoldier (https://github.com/Loyalsoldier/v2ray-rules-dat). Приложение скачивает их автоматически при первом запуске или при обновлении профиля, если изменилась дата LastUpdated.
Важные особенности:
- Если геофайлы не загрузились, правила с условиями
geosite:*иgeoip:*просто не сработают — трафик пойдет по умолчанию. - Приложение использует менеджер загрузки, который останавливает процесс, если загрузка не завершается за 3 минуты. При этом на главном экране появляется ошибка, а рядом с проблемным профилем — красный восклицательный знак.
- Для экономии памяти (особенно на iOS) можно включить
UseChunkFiles— тогда из геофайлов вырезаются только нужные секции, и ядро получает урезанные версии.
Обновление геофайлов происходит автоматически при изменении LastUpdated в профиле. Если вы хотите принудительно перекачать базы, достаточно обновить профиль с новой датой.
Порядок проверки правил: почему он критичен
Правила маршрутизации проверяются строго сверху вниз, и применяется первое подошедшее правило. Это значит, что порядок может полностью менять поведение: если правило «всё через прокси» стоит выше исключений, исключения никогда не сработают.
Типовой рабочий порядок выглядит так:
- Локальные адреса (geoip:private) — напрямую.
- Ваши исключения (банки, госуслуги, локальные сервисы) — напрямую.
- Реклама и трекеры — блокировать (если нужно).
- Всё остальное — через прокси.
В Happ порядок задается параметром RouteOrder. Например, значение block-proxy-direct означает: сначала проверяются блокировки, затем прокси-правила, и только потом direct. Если ни одно правило не подошло, трафик направляется в основной выход — proxy (если GlobalProxy: true) или direct (если false).
Типичная ошибка: пользователь добавляет исключение для банка, но оно не работает, потому что выше стоит правило geosite:ru (все российские домены через прокси). Решение — переместить исключение выше или использовать более специфичное правило.
Чтобы проверить, какое правило сработало, можно открыть сайт и посмотреть его IP: если он совпадает с IP сервера — трафик идет через туннель, если с вашим реальным — напрямую.
Готовые профили маршрутизации: сценарии использования
Happ предлагает несколько готовых профилей, которые покрывают большинство типовых сценариев. Рассмотрим их на основе популярных сборок.
P1 «Россия напрямую» — самый безопасный вариант для повседневного использования. Российские домены (.ru, .su, .рф), банки, госуслуги, маркетплейсы (Ozon, Wildberries, Яндекс, VK) идут напрямую, а всё остальное (YouTube, Telegram) — через туннель. Это позволяет избежать капчи и блокировок со стороны российских сервисов.
P2 «Россия и игры» — дополняет первый профиль прямым доступом для игровых сервисов (Steam, Epic Games, Riot, Twitch) и обновлений Windows/Apple. Пинг в играх остается низким, а закачка патчей не упирается в скорость VPN-сервера. Дополнительно блокируется реклама и телеметрия Windows.
P3 «Только банки и госуслуги» — обратный подход: из туннеля выведены только банки, госуслуги и домашняя сеть. Весь остальной трафик, включая .ru-сайты, идет через прокси. Подходит для максимальной приватности, но может вызвать проблемы с некоторыми российскими сервисами.
P4 «Точный список блокировок» — использует реальные списки РКН, направляя в туннель только то, что действительно заблокировано. Сервисы, которые пускают только из России, остаются напрямую. Базы тяжелее (~5 МБ), но профиль работает даже на iPhone.
Эти профили можно установить одной кнопкой через ссылку, которая открывает Happ и показывает диалог импорта. JSON-код каждого профиля доступен для просмотра перед установкой.
Как создать собственный профиль маршрутизации
Если готовых профилей недостаточно, можно создать свой. Для этого нужно сформировать JSON-профиль и передать его в Happ через специальную ссылку.
Способы добавления профиля:
- Ссылка
happ://routing/add/{base64}— добавляет профиль в список, но не активирует его (первый добавленный становится активным после загрузки геофайлов). - Ссылка
happ://routing/onadd/{base64}— добавляет и сразу активирует профиль. - Ссылка
happ://routing/off— отключает маршрутизацию. - Профиль может прийти вместе с подпиской (в HTTP-заголовке
routingили в теле подписки).
Где взять base64: нужно преобразовать JSON-профиль в base64-строку. Это можно сделать онлайн или через консольные утилиты.
Пример минимального профиля:
{
"Name": "Мой профиль",
"GlobalProxy": "true",
"RouteOrder": "block-proxy-direct",
"RemoteDNSType": "DoH",
"RemoteDNSDomain": "https://cloudflare-dns.com/dns-query",
"RemoteDNSIP": "1.1.1.1",
"DomesticDNSType": "DoU",
"DomesticDNSIP": "77.88.8.8",
"Geoipurl": "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.dat",
"Geositeurl": "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat",
"DirectSites": ["geosite:private", "geosite:category-bank-ru"],
"DirectIp": ["geoip:private", "10.0.0.0/8"],
"ProxySites": [],
"BlockSites": ["geosite:category-ads"],
"DomainStrategy": "IPIfNonMatch",
"FakeDNS": "false"
}Важно: для JSON-подписок (Restricted Mode) действуют ограничения: профиль маршрутизации может быть только один, он приходит только вместе с подпиской, и пользователь не может его изменить или отключить. Это защита от рассинхронизации настроек.
Настройка DNS в профилях: Remote и Domestic
DNS-запросы в Happ разделяются на два потока: удаленные (Remote) для ресурсов, идущих через прокси, и локальные (Domestic) для прямых подключений. Это позволяет ускорить отклик и избежать утечек.
Remote DNS используется для доменов, которые туннелируются. По умолчанию это DoH Cloudflare (https://cloudflare-dns.com/dns-query с IP 1.1.1.1). Вы можете указать любой DoH-сервер, например Google (https://dns.google/dns-query с IP 8.8.8.8).
Domestic DNS — для прямых запросов. Часто используют DoU (DNS over UDP) с IP российского провайдера, например 77.88.8.8 (Яндекс). Это снижает задержку для локальных ресурсов.
Параметр DnsHosts позволяет задать ручные соответствия «домен: IP», что полезно для обхода проблем с резолвингом. Например, можно принудительно указать IP для Cloudflare, чтобы избежать блокировок.
FakeDNS — подмена реальных IP виртуальными адресами. Это гарантирует, что все запросы направляются только в Xray, исключая перехват системным DNS. Рекомендуется включать для повышения приватности, но может вызвать проблемы с некоторыми приложениями.
Важно: если вы используете JSON-подписку, поля Remote DNS переименованы в Tunnel DNS и используются локально для настройки системного туннеля, не инжектируясь в JSON-файл провайдера.
Ограничения и особенности: Restricted Mode, iOS, обновления
Happ имеет несколько важных ограничений, которые стоит учитывать.
Restricted Mode для JSON-подписок:
- У JSON-подписки может быть только 0 или 1 профиль маршрутизации.
- Профиль нельзя добавить вручную, скопировать или импортировать — он приходит только вместе с подпиской.
- Пользователь не может отключить или изменить профиль: главный тогл маршрутизации заблокирован, изменение имени, ссылок и геофайлов невозможно.
iOS и память:
- На iOS есть ограничение памяти (50 МБ), поэтому рекомендуется включать
UseChunkFiles— это вырезает из геофайлов ненужные секции и передает ядру урезанные версии. - Нарезка выполняется при сохранении профиля, после загрузки геофайлов и после выхода из редактора правил.
Обновление профилей:
- Если профиль с таким же именем уже существует, его данные обновляются.
- Обновление происходит в фоне: пока скачиваются новые геофайлы, ядро продолжает работать со старыми правилами, что обеспечивает бесперебойную работу.
- После успешной загрузки происходит атомарная подмена: новый набор правил становится текущим, а старый удаляется.
Каскадное удаление: при удалении подписки из приложения удаляются все привязанные профили и кэшированные геофайлы.
Ошибки загрузки: если геофайлы не загрузились за 3 минуты, процесс останавливается, появляется сообщение об ошибке и красный восклицательный знак. Ошибка исчезает после удаления проблемного профиля.
Частые ошибки при настройке правил и как их избежать
Даже опытные пользователи допускают ошибки при настройке маршрутизации. Разберем самые распространенные.
1. Неправильный порядок правил. Если правило «всё через прокси» стоит выше исключений, исключения не работают. Решение — всегда размещать локальные адреса и исключения в начале списка.
2. Опечатки в доменах. domain:example.com не совпадает с example.org. Проверяйте написание и используйте full: для точного совпадения, если нужно.
3. Забыли про геофайлы. Если правила с geosite:* не срабатывают, проверьте, загрузились ли базы. Ошибка может быть из-за блокировки GitHub или проблем с сетью.
4. Конфликт с JSON-подпиской. Если вы используете JSON-конфигурацию, помните, что нарезка секций осуществляется на основе профиля маршрутизации, а не JSON-конфигурации. Убедитесь, что в профиле созданы те же теги, что и в JSON.
5. Игнорирование DomainStrategy. По умолчанию IPIfNonMatch — сначала проверяются доменные правила, затем, если не нашлось, делается DNS-запрос и проверка по IP. Если у вас много IP-правил, стратегия IPOnDemand может замедлить работу.
6. Не проверяете результат. После изменения правил обязательно проверьте, какой IP видит сайт. Если оба сайта (прямой и прокси) показывают один IP — правило не применилось.
7. Путаница между direct и block. direct пропускает трафик мимо туннеля, block — не пропускает вообще. Блокировку используют для рекламы, а не для «лишних» сайтов.
Как проверить, что правила работают корректно
После настройки профиля важно убедиться, что маршрутизация работает так, как задумано. Есть несколько простых способов.
Проверка IP-адреса:
- Откройте сайт, который должен идти напрямую (например, 2ip.ru), и посмотрите ваш IP. Он должен совпадать с реальным адресом вашего провайдера.
- Откройте сайт, который должен идти через прокси (например, ifconfig.me), и проверьте IP — он должен быть адресом VPN-сервера.
- Если оба показывают один и тот же IP, правило не применилось: проверьте порядок и опечатки.
Проверка DNS-утечек:
- Используйте сервисы типа dnsleaktest.com, чтобы убедиться, что DNS-запросы не уходят мимо туннеля.
- Включите FakeDNS, чтобы исключить перехват системным DNS.
Проверка блокировок:
- Попробуйте открыть сайт, который должен быть заблокирован (например, рекламный ресурс). Если он открывается — правило block не сработало.
Логи приложения:
- В Happ есть раздел логов, где видно, какое правило сработало для каждого запроса. Это самый точный способ диагностики.
Совет: если приложение ведет себя странно, подставьте заведомо рабочую ссылку-подписку. Если поведение изменилось — проблема в подписке, а не в приложении.
Вопросы и ответы
Что такое профиль маршрутизации в Happ?
Профиль маршрутизации — это набор правил, определяющих, куда направлять трафик: через VPN-сервер (proxy), напрямую (direct) или блокировать (block). Профиль содержит списки доменов, IP-адресов, гео-базы и настройки DNS. В Happ профиль привязан к конкретной подписке, а не к приложению целиком (начиная с версии 4.0).
Как добавить свой профиль маршрутизации в Happ?
Профиль можно добавить через специальную ссылку happ://routing/add/{base64}, где base64 — это закодированный JSON-профиль. Ссылка happ://routing/onadd/{base64} добавляет и сразу активирует профиль. Также профиль может прийти вместе с подпиской (в HTTP-заголовке routing или в теле подписки). Для JSON-подписок действует Restricted Mode: профиль нельзя добавить вручную, он приходит только от провайдера.
Почему мои исключения для банков не работают?
Скорее всего, правило «всё через прокси» стоит выше исключений в списке RouteOrder. Правила проверяются сверху вниз, и первое подошедшее применяется. Переместите исключения (например, geosite:category-bank-ru) в начало списка, перед общими правилами. Также проверьте, что геофайлы загружены и в домене нет опечаток.
Что делать, если геофайлы не загружаются?
Если загрузка геофайлов не завершается за 3 минуты, процесс останавливается, и появляется ошибка. Проверьте доступность GitHub (откуда скачиваются базы по умолчанию) и попробуйте обновить профиль с новой датой LastUpdated. Также можно вручную указать альтернативные URL для Geoipurl и Geositeurl в профиле.
В чем разница между direct и block в правилах?
direct пропускает трафик мимо туннеля — соединение устанавливается напрямую с вашего устройства. block полностью запрещает соединение — сайт не откроется. Блокировку используют для рекламы, трекеров и нежелательных ресурсов, а direct — для сервисов, которые должны работать без VPN (банки, госуслуги).
Как проверить, что трафик идет через прокси или напрямую?
Откройте сайт, который должен идти напрямую (например, 2ip.ru), и посмотрите ваш IP — он должен быть реальным. Затем откройте сайт, который должен идти через прокси (например, ifconfig.me), и проверьте IP — он должен быть адресом VPN-сервера. Если оба показывают один IP, правило не применилось. Также можно посмотреть логи приложения, где видно, какое правило сработало.
Можно ли использовать Happ на iOS с профилями маршрутизации?
Да, на iOS профили доступны, но есть ограничения: часть правил (по приложениям) неприменима, и рекомендуется включать UseChunkFiles для экономии памяти (лимит 50 МБ). Готовые профили типа «Россия напрямую» работают на iPhone. Также на iOS недоступен режим по приложениям, только доменные и IP-правила.