Happ правила маршрутизации: полное руководство по настройке VPN-профилей

Разбираем, как работают правила маршрутизации в Happ: профили, геофайлы, DNS, порядок проверки, готовые сценарии и частые ошибки. Настройте VPN правильно.

Что такое правила маршрутизации в 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 в профиле. Если вы хотите принудительно перекачать базы, достаточно обновить профиль с новой датой.

Порядок проверки правил: почему он критичен

Правила маршрутизации проверяются строго сверху вниз, и применяется первое подошедшее правило. Это значит, что порядок может полностью менять поведение: если правило «всё через прокси» стоит выше исключений, исключения никогда не сработают.

Типовой рабочий порядок выглядит так:

  1. Локальные адреса (geoip:private) — напрямую.
  2. Ваши исключения (банки, госуслуги, локальные сервисы) — напрямую.
  3. Реклама и трекеры — блокировать (если нужно).
  4. Всё остальное — через прокси.

В 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-правила.