Что такое маршрутизация в 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.