Профили маршрутизации: структура и импорт
- Автор
- Екатерина Лебедева, редактор раздела 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, IPOnDemand | IPIfNonMatch |
FakeDNS | Подмена IP виртуальным, чтобы запросы шли только через Xray | false |
Условный пример пользовательского профиля:
{
"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. Проверьте, что профиль сгенерирован полностью и не обрезан при копировании. Разбор конкретного сообщения об ошибке — на странице «Неправильные данные для импортирования профиля маршрутизации».
Упомянутые темы
Похожие материалы
- Профиль маршрутизации Happ: что это и из чего состоит
- DNS в Happ
- Domestic DNS в Happ: локальный DNS для прямых соединений
- domainStrategy в Happ: AsIs, IPIfNonMatch и IPOnDemand
- JSON-конфигурации в Happ: передача 1:1 в Xray-core
- Как настроить раздельное туннелирование
- GEO-файлы
- Как сменить DNS в Happ: Remote и Domestic DNS
Разделы по теме
Источники
- Документация Happ: маршрутизация — обращение 28 сентября 2026
- Генератор ссылок маршрутизации Happ — обращение 27 сентября 2026