Маршрутизация в Happ: как настроить исключения для банков, игр и блокировок

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

Что такое маршрутизация и зачем она нужна

Маршрутизация в VPN-клиенте определяет, какой трафик пойдёт через туннель, а какой — напрямую с вашего IP-адреса. Без неё все запросы уходят на прокси-сервер, что создаёт две проблемы: российские сервисы (банки, госуслуги, маркетплейсы) видят иностранный адрес и начинают требовать подтверждений, капчу или вовсе блокируют доступ; а локальные устройства — принтер, роутер, NAS — становятся недоступны, потому что трафик к ним тоже пытается уйти через туннель.

В Happ маршрутизация реализована через профили — наборы правил, которые можно импортировать одной ссылкой или создать вручную. Профиль содержит списки сайтов и IP-адресов для прямого подключения, проксирования и блокировки, а также настройки DNS и стратегию обработки доменов. Это позволяет гибко управлять тем, что остаётся видимым с вашего домашнего адреса, а что уходит в туннель.

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

Как устроены профили маршрутизации в Happ

Профиль маршрутизации — это JSON-объект, который содержит несколько ключевых блоков. Основные параметры: Name — имя профиля, GlobalProxy — флаг, определяющий, идёт ли весь трафик по умолчанию через прокси (true) или напрямую (false). Если GlobalProxy установлен в true, то при отсутствии подходящего правила трафик уходит в туннель; если false — напрямую.

Списки правил делятся на три категории: DirectSites и DirectIp — ресурсы, которые должны открываться напрямую; ProxySites и ProxyIp — ресурсы, которые нужно туннелировать; BlockSites и BlockIp — запрещённые ресурсы (реклама, трекеры). Каждый элемент списка может быть доменом (domain:example.com), гео-тегом (geosite:category-bank-ru) или IP-подсетью (geoip:ru, 10.0.0.0/8).

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

Готовые профили: пять сценариев под разные задачи

Вместо ручного составления правил можно использовать готовые профили, которые распространяются по ссылкам вида happ://routing/add/{base64}. Они покрывают основные сценарии использования.

P1 «Россия напрямую» — самый сбалансированный вариант для большинства пользователей. Российские сайты (зоны .ru, .su, .рф, .moscow, .tatar), банки, госуслуги, маркетплейсы (Ozon, Wildberries, Яндекс, VK) идут напрямую, всё остальное — через туннель. База лёгкая (около 0,5 МБ), работает даже на слабых устройствах.

P2 «Россия и игры» — добавляет к первому профилю прямой путь для игровых сервисов (Steam, Epic Games, Riot, Faceit, Twitch) и системных обновлений Windows и Apple. Это сохраняет низкий пинг в матчах и не даёт уведомлениям отваливаться. Дополнительно блокируется реклама, трекеры и телеметрия Windows.

P3 «Только банки и госуслуги» — максимальная приватность: из туннеля выведены только банки, госуслуги и домашняя сеть. Весь остальной трафик, включая обычные .ru-сайты, идёт через прокси. Подходит, если прямой путь нужен только для критически важных сервисов.

P4 «Точный список блокировок» — использует реальные списки РКН: в туннель уходит только то, что действительно заблокировано, даже если это .ru-домен. Сервисы, которые пускают только из России, остаются напрямую. База тяжелее (около 4,7 МБ), но всё равно в разы меньше полных списков.

P5 «Всё через туннель» — профиль-возврат, который отключает все исключения, кроме домашней сети. Полезен, если после чужих правил что-то поехало и нужно начать с чистого листа.

Ручная настройка: создание собственного профиля

Если готовые профили не подходят, можно создать свой. В интерфейсе Happ есть редактор правил, где вы добавляете домены и IP-адреса в категории Direct, Proxy и Block. Но более гибкий способ — импортировать JSON-профиль через ссылку или файл.

Структура профиля включает обязательные поля: Name, GlobalProxy, RouteOrder, настройки DNS, списки правил и DomainStrategy. Пример минимального профиля:

{
  "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",
  "DirectSites": ["geosite:private", "domain:example.com"],
  "DirectIp": ["geoip:private", "10.0.0.0/8"],
  "ProxySites": [],
  "ProxyIp": [],
  "BlockSites": [],
  "BlockIp": [],
  "DomainStrategy": "IPIfNonMatch",
  "FakeDNS": "false",
  "UseChunkFiles": "true"
}

При импорте профиль привязывается к подписке, из которой пришла ссылка. Если профиль с таким именем уже существует, он перезаписывается. Изменения применяются только после перезапуска соединения (Reconnect).

Настройки DNS: разделение на локальные и удалённые запросы

DNS-конфигурация в профиле разделяет запросы на два потока: Domestic (локальный DNS) для ресурсов, которые идут напрямую, и Remote (удалённый DNS) для проксируемых. Это оптимизирует скорость отклика и учитывает географию.

Remote DNS используется для запросов proxy-ресурсов и идёт через прокси-сервер. По умолчанию это Cloudflare DoH (https://cloudflare-dns.com/dns-query с IP 1.1.1.1). Domestic DNS — для direct-ресурсов, обычно это DNS-сервер провайдера или публичный (например, Яндекс DNS 77.88.8.8).

Параметр DnsHosts позволяет задать ручные соответствия «домен: IP» — работает как системный файл hosts. Это полезно, чтобы зафиксировать IP для DNS-сервера и избежать проблем с его поиском.

Опция FakeDNS подменяет реальные IP-адреса виртуальными, гарантируя, что все запросы направляются только в Xray и обрабатываются строго по конфигурации. Это исключает перехват системным DNS и повышает приватность.

Гео-базы GeoIP и Geosite: что это и как обновляются

Профили маршрутизации используют гео-базы — файлы geoip.dat и geosite.dat, которые содержат списки IP-адресов и доменов, сгруппированных по категориям. Например, geosite:category-bank-ru — список российских банков, geoip:ru — все IP-адреса, принадлежащие России.

Приложение поставляется с предустановленными геофайлами, поэтому работает сразу после установки. Актуальность поддерживается обновлением ядра. При импорте профиля с указанными URL гео-баз происходит их загрузка. Если поле LastUpdated заполнено, приложение принудительно скачает геофайлы, даже если URL совпадают со стандартными.

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

Для экономии памяти на iOS (лимит 50 МБ) используется опция UseChunkFiles: из геофайлов вырезаются только нужные секции, и ядру передаются урезанные версии. Это предотвращает падение ядра на старте.

Порядок применения правил и стратегия доменов

Порядок проверки правил задаётся параметром RouteOrder. По умолчанию используется block-proxy-direct: сначала проверяются блокировки, затем прокси-списки, и только потом direct. Это означает, что если домен попал и в block, и в direct, он будет заблокирован.

DomainStrategy определяет, как Xray сопоставляет домены с IP-правилами. Вариант AsIs — домен передаётся дальше без резолва, правила по IP не проверяются. IPIfNonMatch — сначала проверка по домену, если правило не найдено, выполняется DNS-запрос и проверка по IP. IPOnDemand — домен всегда резолвится в IP перед проверкой правил.

Рекомендуется использовать IPIfNonMatch, так как он балансирует между скоростью и точностью. IPOnDemand может замедлить работу из-за лишних DNS-запросов, а AsIs не сработает для правил, основанных на IP.

Важно помнить: если ни одно правило не подошло, трафик направляется в основной выход — Proxy, если GlobalProxy включён, или Direct, если выключен.

Импорт и экспорт профилей: ссылки, файлы и ограничения

Профили можно передавать через ссылки вида happ://routing/add/{base64} (добавляет профиль) и happ://routing/onadd/{base64} (добавляет и сразу активирует). Также возможен импорт из файла или буфера обмена.

Для JSON-подписок действует Restricted Mode: у такой подписки может быть строго 0 или 1 профиль маршрутизации, и он приходит только вместе с подпиской от провайдера. Ручное создание, копирование или изменение такого профиля заблокировано — пользователь не может отключить его или поменять параметры.

Экспорт профиля доступен через кнопку «Поделиться» или «Экспорт» в разделе маршрутизации. Это удобно для переноса настроек на другое устройство или для передачи коллеге.

При импорте профиля из ссылки, переданной в HTTP-заголовке или теле подписки, профиль автоматически привязывается к этой подписке. Если профиль с таким именем уже существует, он перезаписывается.

Частые ошибки и способы их устранения

Самая распространённая ошибка — установка профиля без работающего подключения. Профиль маршрутизации не выдаёт доступ, он только распределяет трафик. Сначала нужно активировать подписку и убедиться, что соединение работает, затем импортировать профиль.

Вторая ошибка — несоответствие тегов в JSON-конфигурации и профиле маршрутизации. Если вы используете JSON-подписку, убедитесь, что в профиле созданы те же теги outbound, что и в конфигурации. Иначе трафик может уйти не туда.

Третья ошибка — забыли перезапустить соединение после изменения настроек. Изменения записываются в БД, но применяются только после Reconnect. Если профиль не работает, проверьте, переподключились ли вы.

Если загрузка геофайлов не завершается в течение 3 минут, процесс останавливается, и на главном экране появляется сообщение об ошибке. Рядом с проблемным профилем отображается красный восклицательный знак. Ошибка исчезает после удаления проблемного профиля или успешной загрузки.

Если после импорта чужого профиля что-то поехало, используйте профиль «Всё через туннель» для возврата к исходному состоянию.

Практические рекомендации по выбору профиля

Для большинства пользователей оптимален профиль «Россия напрямую»: он решает проблему с капчами в банках и госуслугах, сохраняя остальной трафик в туннеле. Если вы активно играете в онлайн-игры или пользуетесь Steam, выбирайте «Россия и игры» — прямой путь для игровых сервисов снижает пинг.

Если вы цените приватность и хотите минимизировать прямой трафик, подойдёт «Только банки и госуслуги». Но учтите, что Ozon, Яндекс и другие российские сервисы могут начать требовать подтверждений — в этом случае переключитесь на первый профиль.

Профиль «Точный список блокировок» стоит выбирать, если вам важно, чтобы в туннель уходило только реально заблокированное, а остальное работало напрямую. Он использует более тяжёлые базы, но всё равно работает на iPhone.

Перед установкой любого профиля убедитесь, что у вас есть работающая подписка. Если доступ не работает, никакие настройки не помогут — сначала решите проблему с подключением.

Вопросы и ответы

Что делать, если после установки профиля банк снова требует подтверждение?

Скорее всего, профиль не включает нужные правила для вашего банка. Проверьте, какой профиль установлен: если это «Только банки и госуслуги», но банк не входит в список, переключитесь на «Россия напрямую» — он содержит более широкий набор банковских доменов. Также убедитесь, что вы перезапустили соединение после импорта профиля (Reconnect). Если проблема остаётся, проверьте, что профиль привязан к правильной подписке — в Happ 4.x профиль привязывается к конкретной подписке, а не ко всему приложению.

Можно ли использовать несколько профилей маршрутизации одновременно?

Нет, одновременно активен только один профиль для каждой подписки. Вы можете хранить несколько профилей и переключаться между ними, но в каждый момент времени применяется только один. При импорте нового профиля с тем же именем он перезаписывает существующий. Для JSON-подписок действует ограничение: может быть только 0 или 1 профиль, и он приходит от провайдера — вручную добавить или изменить его нельзя.

Как проверить, что правило маршрутизации действительно работает?

Самый простой способ — открыть сайт, который должен идти напрямую (например, госуслуги), и проверить свой IP-адрес: он должен быть вашим домашним. Для сайтов, которые должны идти через туннель, IP будет адресом прокси-сервера. Также можно посмотреть логи приложения или использовать команду curl --interface на компьютере. Если правило не срабатывает, проверьте порядок RouteOrder — блокировки проверяются первыми, затем прокси, потом direct.

Что такое FakeDNS и когда его включать?

FakeDNS подменяет реальные IP-адреса виртуальными, чтобы все DNS-запросы направлялись только в Xray и обрабатывались строго по конфигурации. Это исключает перехват системным DNS и повышает приватность. Включать его стоит, если вы замечаете утечки DNS или хотите максимальной конфиденциальности. Однако в некоторых случаях FakeDNS может вызвать проблемы с приложениями, которые проверяют реальные IP. В готовых профилях Happ он отключён по умолчанию.

Почему после обновления профиля соединение не прерывается?

Happ использует механизм фонового обновления: при импорте новой версии профиля начинается загрузка новых геофайлов, но ядро продолжает работать со старыми правилами. Только после успешной загрузки всех файлов происходит атомарная подмена — старые правила заменяются новыми без разрыва соединения. Это обеспечивает бесперебойную работу. Если загрузка не завершается за 3 минуты, процесс останавливается, и появляется сообщение об ошибке.

Можно ли импортировать профиль с компьютера на телефон?

Кнопка импорта на сайте открывает Happ на том же устройстве, где открыта страница. Если вы открыли сайт на компьютере, телефон профиль не получит. Для переноса на другое устройство используйте экспорт профиля в файл или ссылку вида happ://routing/add/..., затем отправьте её на телефон (например, через мессенджер) и откройте в Happ. Также можно скопировать JSON и вставить вручную в разделе маршрутизации.