Что такое маршрутизация в VPN и зачем она нужна
Маршрутизация — это механизм, который определяет, какой трафик должен идти через VPN-туннель, а какой — напрямую к интернет-провайдеру. В приложении Happ эта функция реализована через так называемые профили роутинга, которые содержат набор правил для доменов, IP-адресов и DNS-запросов.
Основная задача маршрутизации — оптимизировать работу сети. Например, если вы находитесь в России и используете VPN для доступа к заблокированным сервисам (YouTube, Instagram, Telegram), то нет необходимости гнать через туннель трафик к российским сайтам (.ru, .рф) — они и так доступны. Настроив правила, вы сможете ускорить загрузку локальных ресурсов и снизить нагрузку на VPN-сервер.
Кроме того, маршрутизация позволяет блокировать нежелательные домены и IP-адреса (например, рекламные трекеры), а также задавать приоритеты для различных типов соединений. В Happ это реализовано через гибкую систему профилей, которые можно импортировать, создавать вручную или получать от провайдера вместе с подпиской.
Как устроена архитектура маршрутизации в Happ
В Happ реализован переход от монолитного глобального управления к модульному подходу на уровне подписки. Каждая подписка (включая серверный список Server-List) теперь имеет собственный изолированный набор правил и профилей роутинга, который называется «Control Panel». Это означает, что изменения в одном профиле не влияют на другие подписки.
Важной особенностью является отложенный эффект изменений: любые модификации настроек (например, переключение маршрутизации или выбор другого профиля) сохраняются в базе данных, но применяются только после перезапуска соединения (Reconnect). Это сделано для того, чтобы избежать разрывов текущей сессии и обеспечить плавный переход.
При удалении подписки из приложения все связанные с ней профили роутинга и кэшированные геофайлы удаляются каскадно. Это предотвращает накопление устаревших данных и упрощает управление.
Ограничения для JSON-подписок: что нужно знать
Для JSON-конфигураций в Happ действует строгий режим ограничений, призванный предотвратить рассинхронизацию между настройками приложения и метаданными провайдера. Вот ключевые правила:
- Лимит профилей: JSON-подписка может содержать строго 0 или 1 профиль роутинга. Нельзя добавить больше.
- Только в комплекте: Профиль для JSON-конфигурации нельзя добавить вручную, скопировать из другой подписки или импортировать из буфера обмена. Он предоставляется исключительно вместе с самой подпиской от провайдера.
- Запрет на изменение: Пользователь не может вручную управлять активностью такого профиля или изменять его параметры. Основной переключатель маршрутизации принудительно заблокирован в состоянии true (или false, если провайдер сам отправил команду на отключение). Изменение имени, URL-адресов и самих геофайлов (GeoSite/GeoIP) полностью заблокировано.
Также стоит отметить, что поля «Remote DNS» в интерфейсе переименованы в «Tunnel DNS» (Tunnel DNS Type, Tunnel IP, Tunnel Domain) и используются локально для настройки системного туннеля, но не внедряются в фактический JSON-файл провайдера.
Типы ссылок для добавления профилей роутинга
Happ поддерживает специальные ссылки для автоматического добавления и активации профилей роутинга. Эти ссылки можно создавать на сайте https://routing.happ.su или получать от провайдера. Существует два основных типа:
happ://routing/add/{base64}— добавляет профиль в список профилей. Первый добавленный профиль становится активным только после успешной загрузки геофайлов. Если профиль с таким же именем уже существует, он перезаписывается.happ://routing/onadd/{base64}— добавляет и автоматически активирует профиль, даже если другие профили уже активны. Если профиль с таким же именем существует, он перезаписывается.
Также есть команда happ://routing/off, которая отключает функцию маршрутизации.
Ссылки могут передаваться двумя способами: как HTTP-заголовок (параметр routing) или как часть тела подписки (просто включив ссылку в содержимое). Это удобно для провайдеров, которые хотят автоматически настраивать роутинг у своих клиентов.
Структура профиля роутинга: JSON-параметры
Профиль роутинга в Happ представляет собой JSON-объект, который содержит набор правил. Рассмотрим основные параметры на примере типичного профиля:
Name— имя профиля, отображаемое в списке.GlobalProxy— булево значение (true/false), определяющее, должен ли весь трафик идти через прокси по умолчанию.RemoteDNSTypeиDomesticDNSType— тип DNS для удаленных (зарубежных) и локальных (отечественных) запросов. Может бытьDoH(DNS over HTTPS) илиDoU(DNS over UDP).RemoteDNSDomainиRemoteDNSIP— адрес и IP удаленного DNS-сервера (например, Cloudflare).DomesticDNSDomainиDomesticDNSIP— адрес и IP локального DNS-сервера (например, Google DNS).GeoipurlиGeositeurl— URL-адреса для загрузки геофайлов GeoIP и GeoSite.LastUpdated— Unix-временная метка последнего обновления геофайлов.DnsHosts— JSON-объект, переопределяющий доменные имена на конкретные IP-адреса.DirectSites,ProxySites,BlockSites— списки доменов (с поддержкойgeosite:префиксов), которые должны идти напрямую, через прокси или быть заблокированы.DirectIp,ProxyIp,BlockIp— аналогичные списки для IP-адресов и подсетей (с поддержкойgeoip:префиксов).DomainStrategy— стратегия обработки доменов:IPIfNonMatch(использовать IP, если домен не совпал с правилами) илиAsIs(отправлять домен как есть).FakeDNS— булево значение, включает ли FakeDNS для ускорения разрешения.UseChunkFiles— булево значение, использовать ли урезанные версии геофайлов для экономии RAM.
Пример профиля для Китая включает DirectSites: ["geosite:cn", "geosite:geolocation-cn"] и DirectIp: ["geoip:cn"], что направляет китайские сайты напрямую, а остальной трафик через прокси.
Как импортировать профиль и включить маршрутизацию
Импорт профиля роутинга в Happ происходит автоматически при открытии специальной ссылки (например, happ://routing/onadd/...) или при получении подписки с встроенным профилем. Если профиль отсутствует, он добавляется и привязывается к подписке, а геофайлы загружаются в фоновом режиме.
После импорта необходимо активировать маршрутизацию в настройках приложения. Для этого:
- Откройте приложение Happ и нажмите на иконку шестерёнки (⚙️) в левом верхнем углу.
- Перейдите в раздел «Маршрутизация» (Routing Rules).
- Включите переключатель «Использовать роутинг» (Use routing) и убедитесь, что нужный профиль выбран (отмечен точкой).
После этого трафик будет распределяться согласно правилам профиля. Если вы хотите отключить маршрутизацию, просто выключите переключатель — весь трафик пойдёт через VPN без разделения.
Обновление профилей и обработка ошибок загрузки
Обновление профиля роутинга происходит, когда система получает команду на импорт профиля с уже существующим именем. Процесс обновления включает несколько этапов:
- Инициация: система получает новый профиль, объект переходит в состояние Update.
- Фоновая загрузка: начинается загрузка новых геофайлов по ссылкам из обновлённой версии. Важно, что во время загрузки текущее состояние остаётся неизменным — ядро продолжает работать со старыми правилами и геофайлами, обеспечивая непрерывную маршрутизацию.
- Атомарная замена: как только все геофайлы успешно загружены, старые заменяются новыми, а текущее состояние перезаписывается новыми правилами.
- Синхронизация состояния: после замены обновляется метаданные — новый набор правил становится default, состояние Update завершается.
Если загрузка геофайла не завершается в течение 3 минут, процесс останавливается, и рядом с проблемным профилем в списке появляется красный восклицательный знак. Ошибка автоматически исчезает после удаления проблемного профиля или если в списке больше нет проблемных профилей.
Также стоит учитывать, что геофайлы обновляются не чаще одного раза в неделю, даже если профиль обновляется каждый час. Это ограничение предотвращает излишнюю нагрузку на сеть.
Практические примеры: настройка для России и Китая
Рассмотрим два практических примера настройки маршрутизации в Happ.
Пример для России: Пользователь хочет, чтобы заблокированные сервисы (YouTube, Instagram, Telegram) шли через VPN, а российские сайты — напрямую. Для этого в профиле нужно указать DirectSites с гео-списками для РФ (например, geosite:ru), а ProxySites — с доменами заблокированных сервисов. Также можно настроить DirectIp для подсетей российских хостинг-провайдеров.
Пример для Китая: В профиле, приведённом в документации, DirectSites содержит geosite:cn и geosite:geolocation-cn, а DirectIp — geoip:cn. Это означает, что весь китайский трафик идёт напрямую, а зарубежный — через прокси. Дополнительно ProxySites включает geosite:cn (возможно, для сайтов, которые должны идти через прокси, несмотря на китайскую геолокацию), а ProxyIp — geoip:amazon (для обхода блокировок Amazon).
Такие профили можно создавать с помощью визуального редактора на сайте routing.happ.su, который автоматически генерирует JSON и ссылку для импорта.
Инструменты для создания профилей: routing.happ.su
Сайт routing.happ.su предоставляет удобный визуальный редактор для создания конфигураций роутинга Happ. Он позволяет:
- Импортировать существующую Happ-ссылку (
happ://routing/add/...) или Base64/JSON конфигурацию. - Настраивать параметры через визуальные поля: выбирать тип DNS (DoH или DoU), указывать DNS-хосты, добавлять списки Direct/Proxy/Block для сайтов и IP.
- Включать опцию
UseChunkFilesдля создания урезанных версий геофайлов, что экономит оперативную память устройства. - Редактировать JSON напрямую с синхронизацией изменений.
- Генерировать ссылку автоматически, с возможностью использовать
happ://routing/onadd/для автоматической активации профиля.
Этот инструмент полезен как для провайдеров VPN, которые хотят распространять готовые профили, так и для продвинутых пользователей, желающих тонко настроить маршрутизацию под свои нужды.
Частые проблемы и их решение
При использовании маршрутизации в Happ могут возникать типичные проблемы. Рассмотрим основные и способы их решения.
Проблема: профиль не активируется после импорта. Убедитесь, что геофайлы загружены полностью. Если рядом с профилем есть красный восклицательный знак, удалите профиль и попробуйте импортировать его снова. Также проверьте, не превышен ли лимит профилей для JSON-подписки (должен быть 0 или 1).
Проблема: изменения в настройках не применяются. Помните, что изменения вступают в силу только после перезапуска соединения (Reconnect). Переподключитесь к VPN.
Проблема: некоторые сайты не открываются через VPN. Проверьте правила профиля: возможно, домен попал в BlockSites или DirectSites, и трафик идёт напрямую. Отредактируйте профиль, добавив нужные домены в ProxySites.
Проблема: медленная загрузка геофайлов. Если загрузка не завершается за 3 минуты, она останавливается. Попробуйте использовать урезанные версии геофайлов (опция UseChunkFiles), чтобы уменьшить объём данных.
Если проблема не решается, обратитесь в поддержку провайдера или в официальные каналы Happ.
Вопросы и ответы
Можно ли создать несколько профилей роутинга для одной подписки в Happ?
Для обычных подписок (не JSON) можно создавать несколько профилей, но для JSON-подписок действует строгое ограничение: не более одного профиля. Это сделано для предотвращения рассинхронизации с метаданными провайдера. Если вам нужно несколько профилей, используйте подписки в других форматах или создавайте отдельные подписки.
Как быстро применить изменения в настройках маршрутизации?
Изменения в настройках маршрутизации (например, переключение профиля или включение/отключение роутинга) сохраняются в базе данных, но применяются только после перезапуска соединения. Чтобы применить изменения, выполните переподключение к VPN (Reconnect) в приложении Happ.
Что делать, если геофайлы не загружаются и появляется красный восклицательный знак?
Если загрузка геофайла не завершается в течение 3 минут, процесс останавливается, и рядом с профилем появляется красный восклицательный знак. Решение: удалите проблемный профиль и попробуйте импортировать его снова. Убедитесь, что у вас стабильное интернет-соединение. Также можно использовать урезанные версии геофайлов (UseChunkFiles) для уменьшения объёма загрузки.
Можно ли вручную изменить профиль роутинга, полученный от провайдера в JSON-подписке?
Нет, для JSON-подписок действует строгий режим: профиль нельзя добавить вручную, скопировать или изменить. Он предоставляется только вместе с подпиской, и его параметры (имя, URL, геофайлы) заблокированы. Провайдер может отправить команду на отключение, но пользователь не может самостоятельно редактировать профиль.
Как настроить маршрутизацию так, чтобы российские сайты шли напрямую, а заблокированные — через VPN?
В профиле роутинга добавьте российские домены (например, geosite:ru) в список DirectSites, а заблокированные сервисы (YouTube, Instagram, Telegram) — в ProxySites. Также можно указать DirectIp для подсетей российских хостинг-провайдеров. После импорта профиля включите маршрутизацию в настройках Happ.
Что такое UseChunkFiles и как это влияет на производительность?
UseChunkFiles — это опция, которая позволяет использовать урезанные версии геофайлов (GeoIP и GeoSite) вместо полных. Это значительно экономит оперативную память устройства, особенно на слабых устройствах. Однако урезанные файлы могут содержать меньше правил, что может привести к неточной маршрутизации для некоторых доменов. Рекомендуется включать эту опцию, если вы испытываете нехватку RAM.