Happ VPN

Профили маршрутизации: структура и импорт

Автор
Екатерина Лебедева, редактор раздела knowledge base
Проверил:
Артём Волков
Проверено:
Опубликовано:
, обновлено
Версия гайда:
1.0

Коротко

Профиль маршрутизации Happ — JSON-объект с полями GlobalProxy, RemoteDNSType, DirectSites, ProxySites, BlockSites и DomainStrategy: они решают, какой трафик идёт напрямую, какой через прокси, а какой блокируется. Профиль добавляется ссылкой happ://routing/add или через подписку.

У каждой подписки в Happ — собственный набор профилей маршрутизации с независимым жизненным циклом, поэтому изменение профиля одной подписки не затрагивает другие. Профиль описывает три категории трафика — прямой, через прокси и заблокированный — списками доменов и IP-адресов, в том числе через готовые категории вида geosite:category и geoip:код. Изменения профиля не действуют мгновенно: они применяются при следующем переподключении. Добавить профиль можно вручную сгенерированной ссылкой, через буфер обмена, QR-код или диплинк, а также передать вместе с подпиской в HTTP-заголовке или в её теле.

Структура профиля

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

ПолеЧто задаётПо умолчанию
NameИмя профиляDefault
GlobalProxyИдёт ли весь трафик через прокси, если ни одно правило не подошлоtrue
RemoteDNSType, RemoteDNSDomain, RemoteDNSIPУдалённый DNS для ресурсов через проксиDoH, cloudflare-dns.com, 1.1.1.1
DomesticDNSType, DomesticDNSDomain, DomesticDNSIPЛокальный DNS для прямых ресурсовDoU, dns.google, 8.8.8.8
Geoipurl, GeositeurlСсылки на файлы GeoIP и GeoSiteРепозиторий Loyalsoldier/v2ray-rules-dat
DirectSites / DirectIpРесурсы без проксиЛокальные сети вида 192.168.0.0/16
ProxySites / ProxyIpРесурсы через прокси—
BlockSites / BlockIpЗаблокированные ресурсы—
DomainStrategyКогда резолвить домен в IP: AsIs, IPIfNonMatch, IPOnDemandIPIfNonMatch
FakeDNSПодмена IP виртуальным, чтобы запросы шли только через Xrayfalse

Условный пример пользовательского профиля:

JSON
{
  "Name": "Example",
  "GlobalProxy": "true",
  "DirectSites": ["geosite:cn"],
  "DirectIp": ["geoip:cn", "192.168.0.0/16"],
  "ProxySites": ["geosite:google"],
  "BlockSites": ["geosite:category-ads-all"],
  "DomainStrategy": "IPIfNonMatch"
}

Как добавить и обновить профиль

Профиль можно сгенерировать на сайте routing.happ.su и передать в Happ несколькими способами: через буфер обмена, QR-код, диплинк или прямо в подписке — HTTP-заголовком routing или ссылкой в теле ответа.

Ссылка вида happ://routing/add/{base64} добавляет профиль в список, а happ://routing/onadd/{base64} добавляет и сразу активирует его. Ссылка happ://routing/off отключает маршрутизацию целиком. Изменения любого профиля — переключение тумблера или выбор другого набора правил — записываются сразу, но применяются только при следующем переподключении к серверу.

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

Особый случай — JSON-подписки

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

Если импорт профиля не удался

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

Главное

  • Профиль маршрутизации — это JSON с полями GlobalProxy, RemoteDNS и DomesticDNS, списками сайтов и IP-адресов и параметром DomainStrategy.
  • У каждой подписки в Happ свой независимый набор профилей — изменения одной подписки не задевают маршрутизацию другой.
  • Изменение профиля вступает в силу не сразу, а при следующем переподключении к серверу.
  • Профиль добавляется ссылками happ://routing/add и happ://routing/onadd с профилем в Base64, а сгенерировать их можно на сайте routing.happ.su.
  • У JSON-подписки может быть только 0 или 1 профиль маршрутизации, и его нельзя добавить или изменить вручную.

Частые вопросы

Что произойдёт с профилем маршрутизации при удалении подписки?

Он будет удалён вместе с ней — это называется каскадным удалением. Вместе с профилем исчезнут и загруженные для него geo-файлы, кэшированные на диске. Если тот же набор правил нужен для другой подписки, его придётся создать заново, а не перенести автоматически — общих профилей маршрутизации между разными подписками в Happ нет.

В чём разница между happ://routing/add и happ://routing/onadd?

Ссылка add добавляет профиль в список: он станет активным сам по себе только если это первый добавленный профиль и после успешной загрузки geo-файлов. Ссылка onadd делает то же самое, но сразу активирует новый профиль, даже если до этого уже был активен другой. Если профиль с таким же именем уже существует, обе ссылки его перезапишут, а не создадут дубликат.

Что значат geosite:category и geoip:код в списках профиля?

Это готовые категории из geo-файлов, а не отдельные домены или IP-адреса, перечисленные вручную. Например geosite:cn — вся категория доменов, размеченная как китайские сайты, а geoip:amazon — диапазоны адресов инфраструктуры Amazon. Такие категории удобны, когда нужно направить в одно из трёх правил (напрямую, через прокси, заблокировать) сразу большую группу ресурсов без перечисления каждого домена.

Что делает параметр DomainStrategy?

Он определяет, когда Xray-core резолвит домен в IP-адрес при проверке правил маршрутизации. AsIs передаёт домен дальше без резолвинга на этом этапе. IPIfNonMatch сначала ищет совпадение по домену и резолвит IP только если правило не нашлось. IPOnDemand резолвит домен в IP ещё до проверки любых правил. Значение по умолчанию в профиле — IPIfNonMatch.

Почему при импорте профиля Happ показывает ошибку?

Обычно это означает, что JSON-профиль содержит опечатку в названии поля, недопустимое значение или повреждён при кодировании в Base64 для ссылки happ://routing. Проверьте, что профиль сгенерирован полностью и не обрезан при копировании. Разбор конкретного сообщения об ошибке — на странице «Неправильные данные для импортирования профиля маршрутизации».

Упомянутые темы

Разделы по теме

Источники

  1. Документация Happ: маршрутизация — обращение 28 сентября 2026
  2. Генератор ссылок маршрутизации Happ — обращение 27 сентября 2026