Что такое профиль маршрутизации и зачем он нужен
Профиль маршрутизации в приложении Happ — это сохранённый набор правил, который определяет, как трафик распределяется между прокси-сервером и прямым соединением. Вместо того чтобы вручную настраивать каждый параметр при каждом подключении, вы создаёте или импортируете профиль один раз, а затем переключаетесь между ними в зависимости от ситуации: дома, в поездке, на работе.
Профиль содержит не только списки сайтов и IP-адресов, но и настройки DNS, порядок применения правил, а также ссылки на геофайлы (базы GeoIP и GeoSite). Эти базы содержат категории доменов и подсетей, например, geosite:category-bank-ru или geoip:ru, что позволяет не перечислять каждый ресурс вручную.
Благодаря профилям можно решить типичные проблемы: банковские приложения требуют российский IP, игровые серверы чувствительны к пингу, а часть сайтов блокируется провайдером. Вместо компромисса «всё через VPN» или «всё напрямую» вы получаете гибкую маршрутизацию, где каждый тип трафика идёт оптимальным путём.
Как импортировать профиль: ссылки happ://routing/add и onadd
Профили маршрутизации передаются через специальные ссылки вида happ://routing/add/{base64} или happ://routing/onadd/{base64}, где {base64} — это JSON-конфигурация профиля, закодированная в base64. Такие ссылки можно создавать на сайте routing.happ.su или получать от провайдера подписки.
Разница между add и onadd:
happ://routing/add/...— добавляет профиль в список, но не активирует его. Первый добавленный профиль станет активным только после успешной загрузки геофайлов.happ://routing/onadd/...— добавляет и сразу активирует профиль, даже если другие профили уже активны.
Если профиль с таким же именем уже существует, он будет перезаписан. Это удобно для обновления правил: провайдер может прислать новую версию профиля с тем же именем, и она автоматически заменит старую.
Импорт возможен также через HTTP-заголовок routing или тело подписки. В этом случае профиль сразу привязывается к подписке, из которой он пришёл. Для JSON-подписок действуют ограничения: профиль может быть только один, и он не может быть изменён пользователем вручную.
Структура JSON-профиля: основные поля
Профиль маршрутизации — это JSON-объект с набором полей. Рассмотрим ключевые из них:
Name— имя профиля, отображаемое в интерфейсе.GlobalProxy— булево значение:trueозначает, что весь трафик по умолчанию идёт через прокси,false— напрямую. Это определяет «выход» по умолчанию, если ни одно правило не сработало.RouteOrder— порядок применения правил, например"block-proxy-direct": сначала блокировка, потом прокси, потом direct.RemoteDNSType,RemoteDNSDomain,RemoteDNSIP— настройки удалённого DNS (для прокси-трафика). По умолчанию используется DoH (DNS over HTTPS) с адресомhttps://cloudflare-dns.com/dns-queryи IP1.1.1.1.DomesticDNSType,DomesticDNSDomain,DomesticDNSIP— настройки локального DNS (для прямых соединений). Например,DoU(DNS over UDP) с IP77.88.8.8(Яндекс DNS).GeoipurlиGeositeurl— ссылки на геофайлы. По умолчанию используются базы Loyalsoldier с GitHub, но в готовых профилях Happ используются собственные базы наhapp.haus.LastUpdated— Unix-время последнего обновления геофайлов. Если это поле заполнено, приложение принудительно скачает геофайлы, даже если URL совпадают со стандартными.DnsHosts— объект с ручными соответствиями «домен: IP», работает как системный файл hosts.DirectSites,DirectIp,ProxySites,ProxyIp,BlockSites,BlockIp— списки правил для прямого соединения, прокси и блокировки.DomainStrategy— стратегия обработки доменов:AsIs,IPIfNonMatchилиIPOnDemand.FakeDNS— булево значение, включает подмену реальных IP виртуальными.UseChunkFiles— булево значение, включает использование урезанных геофайлов для экономии памяти.
Правила маршрутизации: direct, proxy, block
Трафик распределяется по трём категориям: прямое подключение (direct), прокси (proxy) и блокировка (block). Каждая категория имеет списки для сайтов (Sites) и IP-адресов (Ip).
- Direct — ресурсы, доступ к которым осуществляется напрямую, минуя прокси. Обычно это российские сайты, банки, госуслуги, локальная сеть. Примеры:
geosite:tld-ru,geosite:category-bank-ru,geoip:ru,geoip:private. - Proxy — ресурсы, которые требуют туннелирования, например заблокированные сайты или сервисы, недоступные из России. Примеры:
geosite:youtube,geosite:telegram,geosite:discord. - Block — нежелательные ресурсы: реклама, трекеры, телеметрия. Примеры:
geosite:category-ads,geosite:win-spy.
Порядок применения правил задаётся в RouteOrder. Например, "block-proxy-direct" означает: сначала проверяются блокировки, затем прокси, затем direct. Если ни одно правило не подошло, трафик идёт в основной выход, определяемый GlobalProxy.
Важно понимать, что правила могут ссылаться на категории из геофайлов. Например, geosite:category-bank-ru включает все домены российских банков, а geoip:ru — все российские IP-адреса. Это позволяет не перечислять сотни доменов вручную.
Настройка DNS: Remote, Domestic и FakeDNS
DNS-запросы разделяются на два типа: для прокси-трафика (Remote DNS) и для прямых соединений (Domestic DNS). Это оптимизирует скорость и учитывает географию ресурсов.
Remote DNS используется для запросов, которые идут через прокси. По умолчанию это DoH с https://cloudflare-dns.com/dns-query и IP 1.1.1.1. Можно указать другой сервер, например Google DNS https://dns.google/dns-query с IP 8.8.8.8.
Domestic DNS используется для прямых запросов. В готовых профилях Happ часто используется DoU с IP 77.88.8.8 (Яндекс DNS), что обеспечивает быстрый доступ к российским ресурсам.
FakeDNS — это подмена реального IP-адреса виртуальным. Когда включено, все DNS-запросы направляются только в Xray, исключая перехват системным DNS. Это гарантирует, что запросы обрабатываются строго согласно конфигурации маршрутизации.
DnsHosts позволяет вручную задать соответствия «домен: IP», например "cloudflare-dns.com": "1.1.1.1". Это полезно, если DNS-сервер не может быть найден автоматически.
Готовые профили для России: обзор сценариев
На сайте happ.red представлены готовые профили, которые можно установить одной кнопкой. Они решают типичные задачи пользователей из России.
P1 «Россия напрямую» — базовый профиль: российские сайты (зоны .ru, .su, .рф, банки, госуслуги, маркетплейсы) идут напрямую, всё остальное — через туннель. Это самый безопасный вариант для повседневного использования, так как банковские приложения не требуют подтверждений и капчи.
P2 «Россия и игры» — дополняет первый профиль прямым доступом для игровых сервисов (Steam, Epic Games, Riot, Twitch) и обновлений Windows/Apple. Пинг в играх остаётся низким, а закачка патчей не упирается в скорость VPN. Также блокируется реклама и телеметрия.
P3 «Только банки и госуслуги» — обратный подход: напрямую идут только банки, госсервисы и домашняя сеть, весь остальной трафик — через туннель. Подходит для максимальной приватности, но может вызвать проблемы с российскими сайтами, которые требуют локальный IP.
P4 «Точный список блокировок» — использует реальные списки РКН, направляя в туннель только заблокированные ресурсы, даже если у них .ru-домен. Сервисы, доступные только из России, остаются напрямую. Базы тяжелее (~5 МБ), но профиль работает на iPhone.
P5 «Всё через туннель» — возврат к исходному поведению: весь трафик через прокси, кроме локальной сети. Полезен для сброса настроек.
Как создать свой профиль с помощью routing.happ.su
Визуальный редактор на routing.happ.su позволяет создать профиль без ручного написания JSON. Вы заполняете поля, и ссылка генерируется автоматически.
Основные шаги:
- Откройте сайт и вставьте существующую ссылку или начните с пустого JSON.
- Настройте параметры: имя профиля,
GlobalProxy,RouteOrder, DNS-серверы, списки Direct/Proxy/Block. - Укажите ссылки на геофайлы (по умолчанию используются базы Loyalsoldier или happ.haus).
- При необходимости включите
UseChunkFilesдля экономии RAM. - Скопируйте сгенерированную ссылку
happ://routing/add/...илиhapp://routing/onadd/....
Редактор также позволяет импортировать существующую конфигурацию по ссылке или base64, изменять её и экспортировать обратно. Это удобно для тонкой настройки без ошибок в синтаксисе JSON.
Важно: при использовании JSON-подписок (Restricted Mode) профиль маршрутизации не может быть создан вручную — он приходит только от провайдера. Поэтому для самостоятельной настройки используйте обычные подписки.
Обновление профилей и геофайлов: как это работает
Профили маршрутизации могут обновляться автоматически или вручную. При импорте профиля с уже существующим именем запускается процесс обновления:
- Система получает новый импорт, сущность переходит в состояние Update.
- Начинается фоновая загрузка новых геофайлов по ссылкам из обновлённой версии.
- Пока идёт загрузка, ядро продолжает работать со старыми правилами и геофайлами — это обеспечивает бесперебойную маршрутизацию.
- После успешной загрузки происходит атомарная подмена: текущие правила заменяются новыми, и состояние Default обновляется.
Поле LastUpdated играет ключевую роль: если новая дата позже текущей, геофайлы будут принудительно скачаны, даже если URL совпадают со стандартными. Это позволяет провайдерам инициировать обновление баз.
Если загрузка геофайлов не завершается в течение 3 минут, процесс останавливается, на главном экране появляется сообщение об ошибке, а рядом с проблемным профилем — красный восклицательный знак. Ошибка исчезает после удаления проблемного профиля или успешного обновления.
Ограничения для JSON-подписок и особенности iOS
Для JSON-подписок действует Restricted Mode, который предотвращает рассинхронизацию настроек с метаданными провайдера. Основные ограничения:
- У JSON-подписки может быть строго 0 или 1 профиль маршрутизации.
- Профиль не может быть добавлен вручную, скопирован или импортирован из буфера обмена — он приходит только вместе с подпиской.
- Пользователь не может изменить имя, ссылки или геофайлы профиля.
- Главный тумблер маршрутизации заблокирован: он либо включён, либо выключен провайдером.
На iOS есть ограничение по памяти (50 МБ), поэтому при использовании больших геофайлов ядро может падать на старте. Для решения этой проблемы используется UseChunkFiles: приложение вырезает из геофайлов только нужные секции и передаёт ядру урезанные версии. Нарезка выполняется при сохранении профиля с путями по умолчанию, после загрузки геофайлов или после изменения правил.
Важно: если вы используете JSON-конфигурацию подписки, нарезка секций выполняется на основе профиля маршрутизации, а не JSON-конфигурации. Убедитесь, что в профиле созданы те же теги, что и в JSON-конфигурации.
Практические советы по выбору профиля
Выбор профиля зависит от ваших задач и устройства.
- Для повседневного использования начните с профиля «Россия напрямую» (P1): он сбалансирован и работает на любых устройствах, включая слабые Android.
- Для игр используйте P2, чтобы снизить пинг и ускорить загрузку обновлений.
- Для максимальной приватности подойдёт P3, но будьте готовы к проблемам с российскими сервисами.
- Если вы сталкиваетесь с блокировками конкретных сайтов, используйте P4 с точными списками РКН.
- Для сброса настроек установите P5.
При создании собственного профиля обращайте внимание на DomainStrategy: IPIfNonMatch — хороший баланс между скоростью и точностью, IPOnDemand — всегда резолвит домены, что может замедлить работу, AsIs — не резолвит вовсе, но может пропускать правила по IP.
Также не забывайте про DnsHosts: если у вас возникают проблемы с доступом к DNS-серверу, укажите его IP вручную. И помните, что изменения в профиле применяются только после переподключения (Reconnect).
Вопросы и ответы
Что такое happ://routing/add и чем отличается от onadd?
Ссылка happ://routing/add/{base64} добавляет профиль маршрутизации в список, но не активирует его. Первый добавленный профиль станет активным только после успешной загрузки геофайлов. Ссылка happ://routing/onadd/{base64} добавляет и сразу активирует профиль, даже если другие профили уже активны. Если профиль с таким именем уже существует, он перезаписывается.
Как создать свою ссылку для импорта профиля?
Используйте визуальный редактор на сайте routing.happ.su. Заполните параметры профиля (имя, GlobalProxy, DNS, списки правил) или вставьте существующий JSON, и сайт автоматически сгенерирует ссылку вида happ://routing/add/... или happ://routing/onadd/.... Скопируйте её и отправьте на устройство с Happ.
Почему после импорта профиля не применяются изменения?
Изменения настроек маршрутизации записываются в базу данных, но применяются только после перезапуска соединения (Reconnect). Убедитесь, что вы переподключились к VPN. Также проверьте, что профиль активирован (если использовали add, а не onadd).
Что такое геофайлы GeoIP и GeoSite и зачем они нужны?
Геофайлы — это базы данных, содержащие категории доменов (GeoSite) и IP-подсетей (GeoIP). Они используются в правилах маршрутизации, например geosite:category-bank-ru или geoip:ru. Благодаря им не нужно перечислять каждый домен вручную. Приложение поставляется с предустановленными геофайлами и обновляет их при изменении профиля или вручную.
Можно ли изменить профиль маршрутизации для JSON-подписки?
Нет. Для JSON-подписок действует Restricted Mode: профиль может быть только один, он приходит от провайдера и не может быть изменён, скопирован или удалён пользователем. Все параметры, включая геофайлы и активность, заблокированы. Это предотвращает рассинхронизацию с метаданными провайдера.
Что делать, если при загрузке геофайлов возникает ошибка?
Если загрузка не завершается в течение 3 минут, процесс останавливается, и появляется сообщение об ошибке. Рядом с проблемным профилем отображается красный восклицательный знак. Ошибка исчезает автоматически после удаления проблемного профиля или после успешного обновления. Попробуйте удалить профиль и импортировать его заново, либо проверьте подключение к интернету.
Какой профиль выбрать для игр, чтобы не рос пинг?
Используйте готовый профиль «Россия и игры» (P2). Он направляет игровые сервисы (Steam, Epic Games, Riot, Twitch) напрямую, минуя туннель, что сохраняет низкий пинг. Обновления Windows и push-уведомления Apple также идут напрямую, чтобы не отваливались уведомления. Остальной трафик, включая YouTube и Telegram, идёт через туннель.