Маршрутизация в Happ: как настроить VPN-профили, правила и гео-базы для безопасного интернета

Подробный разбор геонастроек и профилей маршрутизации в Happ: принципы работы, структура JSON, DNS, списки direct/proxy/block, импорт и экспорт, готовые профили и ответы на частые вопросы.

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

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

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

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

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

Профиль маршрутизации в Happ — это JSON-объект с набором полей, определяющих логику обработки трафика. Рассмотрим ключевые параметры на примере типового профиля.

Name — имя профиля, отображаемое в интерфейсе. По умолчанию используется «Default».

GlobalProxy — булевый флаг, задающий поведение по умолчанию. Если true, весь трафик, не подпавший под правила, направляется через прокси. Если false — через прямое соединение. Этот параметр также определяет «выход» (outbound) по умолчанию, когда ни одно правило не сработало.

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

LastUpdated — Unix-метка времени последнего обновления геофайлов. Используется для принудительной загрузки свежих баз GeoIP и Geosite.

DomainStrategy — стратегия сопоставления доменов с IP-правилами. Возможные значения: AsIs (не резолвить домены), IPIfNonMatch (резолвить только если нет совпадения по домену), IPOnDemand (всегда резолвить перед проверкой).

FakeDNS — включает подмену реальных IP-адресов виртуальными, чтобы все DNS-запросы обрабатывались только через Xray, исключая утечки через системный DNS.

UseChunkFiles — оптимизация для устройств с ограниченной памятью (например, iOS). Позволяет вырезать из геофайлов ненужные секции и передавать ядру урезанные версии.

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

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

Remote DNS — используется для запросов, которые идут через прокси. Настраивается через RemoteDNSType (например, DoH — DNS over HTTPS, DoU — DNS over UDP), RemoteDNSDomain (адрес сервера, обязателен для DoH) и RemoteDNSIP (статический IP для исключения проблем с поиском DNS-сервера). По умолчанию используется Cloudflare DNS: https://cloudflare-dns.com/dns-query и IP 1.1.1.1.

Domestic DNS — для запросов, идущих напрямую. Аналогичные параметры: DomesticDNSType, DomesticDNSDomain, DomesticDNSIP. В готовых профилях часто используется Яндекс DNS (77.88.8.8) с типом DoU.

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

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

Правила маршрутизации: direct, proxy и block списки

Трафик в Happ распределяется по трем категориям: прямое подключение (direct), проксирование (proxy) и блокировка (block). Для каждой категории есть списки сайтов (DirectSites, ProxySites, BlockSites) и IP-адресов (DirectIp, ProxyIp, BlockIp).

DirectSites — ресурсы, которые должны открываться напрямую, без туннеля. Обычно это локальные сети, государственные сервисы, банки, а также домены, доступные только из России (например, geosite:category-gov-ru, geosite:category-bank-ru).

ProxySites — ресурсы, которые нужно туннелировать. Это могут быть заблокированные сайты, зарубежные сервисы (YouTube, Telegram, Discord) или любые другие, требующие обхода ограничений.

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

Списки могут содержать как конкретные домены (domain:example.com), так и категории из гео-баз (geosite:youtube, geoip:ru). Это позволяет гибко настраивать правила без необходимости перечислять каждый ресурс вручную.

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

Гео-базы — это файлы geoip.dat и geosite.dat, содержащие списки IP-адресов и доменов, сгруппированных по категориям. Они используются для сопоставления трафика с правилами маршрутизации.

GeoIP — база IP-адресов, сгруппированных по странам и категориям (например, geoip:ru — все IP-адреса России, geoip:private — частные диапазоны).

Geosite — база доменов, сгруппированных по категориям (например, geosite:youtube — все домены YouTube, geosite:category-ads — рекламные сети).

В Happ гео-базы по умолчанию загружаются из репозитория Loyalsoldier/v2ray-rules-dat. Однако провайдеры могут предоставлять собственные базы, как в примере с happ.haus/geo/base/. Обновление баз происходит автоматически при изменении LastUpdated в профиле или вручную через интерфейс.

Важно: если используется JSON-подписка, гео-базы нарезаются на основе профиля маршрутизации, а не JSON-конфигурации. Убедитесь, что теги в профиле совпадают с тегами в JSON.

Импорт и экспорт профилей: happ://routing/add/ и другие ссылки

Профили маршрутизации можно передавать через специальные ссылки вида happ://routing/add/{base64} или happ://routing/onadd/{base64}, где {base64} — это JSON-профиль, закодированный в base64. Такие ссылки можно создавать на сайте routing.happ.su или получать от провайдера.

happ://routing/add/ — добавляет профиль в список, но не активирует его. Первый добавленный профиль становится активным только после успешной загрузки геофайлов.

happ://routing/onadd/ — добавляет и сразу активирует профиль, даже если другие уже активны.

happ://routing/off — отключает маршрутизацию полностью.

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

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

Готовые профили для России: обзор и рекомендации

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

P1 «Россия напрямую» — базовый профиль, который направляет российские сайты (домены .ru, .su, .рф, банки, госуслуги, маркетплейсы) напрямую, а всё остальное — через туннель. Это оптимальный выбор для большинства пользователей, так как позволяет избежать капчи и блокировок со стороны российских сервисов.

P2 «Россия и игры» — расширенная версия, которая дополнительно выводит напрямую игровые сервисы (Steam, Epic Games, Riot) и обновления Windows, а также блокирует рекламу и телеметрию. Подходит для геймеров и тех, кто хочет минимизировать задержки.

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

P4 «Точный список блокировок» — использует реальные списки РКН, направляя в туннель только заблокированные ресурсы, даже если они имеют .ru-домены. Это самый точный профиль, но базы тяжелее (около 5 МБ).

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

Особенности работы с JSON-подписками и ограничения

При использовании JSON-подписок (Restricted Mode) действуют жесткие ограничения, чтобы предотвратить рассинхронизацию настроек с метаданными провайдера.

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

Невозможность отключить или изменить: пользователь не может вручную управлять активностью профиля или менять его параметры. Главный тумблер маршрутизации заблокирован, а изменение имени, ссылок и геофайлов полностью запрещено.

Tunnel DNS: поля Remote DNS переименованы в Tunnel DNS и используются локально для настройки системного туннеля, не инжектируясь в JSON-файл провайдера.

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

Устранение ошибок и обновление геофайлов

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

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

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

Если вы используете оптимизированные файлы (UseChunkFiles), нарезка секций происходит при сохранении профиля, после загрузки геофайла или после выхода из редактора правил. Это помогает избежать падений ядра на устройствах с ограниченной памятью.

Практические советы по настройке маршрутизации

При настройке маршрутизации в Happ стоит учитывать несколько практических моментов.

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

Проверяйте порядок правил. RouteOrder определяет приоритет проверки. Если у вас есть пересекающиеся правила, убедитесь, что блокировка идет первой, затем прокси, затем direct.

Используйте DNS Hosts для стабильности. Пропишите IP-адреса DNS-серверов в DnsHosts, чтобы избежать проблем с их резолвингом.

Экспортируйте профили для резервного копирования. Сохраняйте ссылки на профили, чтобы быстро восстановить настройки на новом устройстве.

Следите за размером гео-баз. Если у вас слабое устройство, используйте UseChunkFiles и избегайте тяжелых баз, таких как в профиле P4.

Помните про переподключение. Изменения в настройках маршрутизации применяются только после перезапуска соединения (Reconnect).

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

Как добавить профиль маршрутизации в Happ?

Профиль можно добавить через ссылку вида happ://routing/add/{base64} или happ://routing/onadd/{base64}, где {base64} — это JSON-профиль, закодированный в base64. Ссылку можно получить на сайте routing.happ.su или от провайдера. Также профиль может прийти в HTTP-заголовке или теле подписки. После добавления профиль появится в списке, но для активации может потребоваться переподключение.

Что такое GlobalProxy и как он влияет на маршрутизацию?

GlobalProxy — это параметр, определяющий, куда направляется трафик, не подпавший ни под одно правило. Если true, весь такой трафик идет через прокси; если false — напрямую. Это также задает outbound по умолчанию. Например, в профиле «Россия напрямую» GlobalProxy=true, поэтому все, что не входит в direct-списки, уходит в туннель.

Как настроить DNS для разделения локальных и удаленных запросов?

В профиле маршрутизации есть параметры RemoteDNS и DomesticDNS. RemoteDNS используется для запросов, идущих через прокси, и обычно настраивается на Cloudflare (DoH, 1.1.1.1). DomesticDNS — для прямых запросов, часто используется Яндекс DNS (DoU, 77.88.8.8). Также можно задать DnsHosts для ручного сопоставления доменов и IP.

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

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

Что делать, если геофайлы не загружаются?

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

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

Ссылка happ://routing/add/ добавляет профиль в список, но не активирует его (первый добавленный профиль становится активным только после загрузки геофайлов). Ссылка happ://routing/onadd/ добавляет и сразу активирует профиль, даже если другие уже активны. Если профиль с таким именем существует, он перезаписывается.

Как экспортировать профиль маршрутизации для переноса на другое устройство?

В разделе маршрутизации приложения выберите профиль и нажмите «Поделиться» или «Экспорт». Вы получите файл или ссылку вида happ://routing/add/.... Эту ссылку можно отправить на другое устройство, где она откроет Happ и предложит импортировать профиль. Обратите внимание, что ссылка должна открываться на том же устройстве, где установлен Happ.