Геонастройки / Routing
Приложение поставляется с предустановленными геофайлами, что обеспечивает его готовность к работе сразу после установки. Актуальность геофайлов поддерживается обновлением версии ядра внутри приложения.
Добавление правил маршрутизации
Приложение позволяет добавлять правила маршрутизации автоматически, используя специальные ссылки, которые можно создать на сайте https://routing.happ.su.
Ссылки могут быть переданы одним из следующих способов:
Через буфер обмена.
С использованием deeplink.
Через QR-код.
В виде HTTP-заголовков или тела подписки.
Для передачи через HTTP-заголовок используется параметр routing, а для добавления в тело подписки достаточно указать ссылку.
Обработка ошибок загрузки
Приложение использует менеджер загрузки геофайлов, который работает в фоновом режиме.
Если загрузка геофайлов не завершается в течение 3 минут, процесс останавливается.
На главном экране появляется сообщение об ошибке.
В списке профилей рядом с проблемным профилем отображается красный восклицательный знак.
Устранение ошибок
Проблемное состояние профиля исчезает автоматически после:
Успешного завершения загрузки файлов.
Удаления проблемного профиля.
Если в списке больше нет проблемных профилей, уведомления об ошибках удаляются.
Виды ссылок:
happ://routing/add/{base64}: Добавляет профиль в список профилей. Первый добавленный профиль становится активным только после успешной загрузки геофайлов. Если профиль с таким именем уже существует, он перезаписывается.happ://routing/onadd/{base64}: Добавляет и автоматически активирует профиль, даже если другие профили уже активны. Если профиль с таким именем уже существует, он перезаписывается.happ://routing/off: Отключит функционал маршрутизации
{base64}:это JSON-профиль, преобразованный в текстовый формат base64.
Структура профилей
Приложение использует профили маршрутизации, которые настраиваются через JSON.
Профиль по умолчанию содержит базовые настройки, используемые для заполнения отсутствующих или некорректных параметров.
Пример профиля по умолчанию:
Пример пользовательского профиля:
Особенности работы с профилями
Если профиль с таким же именем уже существует, его данные обновляются.
Если у профиля есть параметр
"LastUpdated": ""и он содержит дату в формате Unix, которая больше предыдущего значения, он будет обновлён.
Схема добавления / обновления профиля
Пример http headers:
Пример тела подписки:
Настройки маршрутизации, которые определяют логику обработки трафика, работу DNS и правила фильтрации ресурсов.
1. Основные настройки
Название (
name): Имя профиля для идентификации пользователем По умолчанию: Default.Глобальный прокси (
globalProxy):true: Весь трафик по умолчанию идет через прокси (первым в списке устанавливаетсяoutboundс тэгомproxy) По умолчанию:true.false: По умолчанию используется прямое соединение (первым в списке устанавливаетсяoutboundс тэгомdirect).
Примечание: Это также определяет «выход» (outbound) по умолчанию, если ни одно правило маршрутизации не сработало.
Дата обновления (lastUpdatedDate):
Это метка времени последнего изменения профиля или геофайлов. Она управляет актуальностью геофайлов (
geoip.dat,geosite.dat) на устройствах пользователей.Как это работает:
Первая установка: Если при сохранении профиля поле
lastUpdatedDateзаполнено, приложение принудительно скачает геофайлы. Это произойдет даже в том случае, если их URL совпадают со стандартными.Обновление (Force Download): С помощью этого параметра можно инициировать принудительное перекачивание баз (например, при обновлении подписки).
Условие срабатывания: Скачивание начнется, если новая дата
lastUpdatedDateпозже текущей или если старая дата в профиле отсутствует.
2. Конфигурация DNS
Система разделяет DNS-запросы на локальные (Domestic) и удаленные (Remote) для оптимизации скорости отклика и учета географического расположения ресурсов.
Удаленный DNS (Remote) — для запросов proxy ресурсов через прокси сервер
proxy ресурсов через прокси серверТип (
remoteDnsType): Протокол запроса (например, DoH — DNS over HTTPS, DoU — DNS over UDP).По умолчанию:
DoU.
Домен (
remoteDnsDomain): Адрес сервера. Обязателен, если выбран типDoH.По умолчанию:
https://cloudflare-dns.com/dns-query.
IP (
remoteDnsIp): Статический IP-адрес сервера для исключения проблем с поиском самого DNS-сервера.По умолчанию:
1.1.1.1.
Локальный DNS (Domestic) — для запросов direct ресурсов в минуя прокси сервера (напрямую)
direct ресурсов в минуя прокси сервера (напрямую)Тип (
domesticDnsType): Протокол запроса.По умолчанию:
DoU.
Домен (
domesticDnsDomain): Адрес сервера. Обязателен, если выбран типDoHПо умолчанию:
dns.google/dns-query.
IP (
domesticDnsIp): Статический IP-адрес сервера для исключения проблем с поиском самого DNS-сервера.По умолчанию:
8.8.8.8.
Дополнительно
DNS Hosts (
dnsHosts): Список ручных соответствий «Домен: IP». Работает как системный файлhosts. Не отображается в интерфейсе приложения, встраивается напрямую в секциюdns.hostsконфигурации Xray. Для подробностей см. документацию Project X.Fake DNS (fakeDnsEnabled): Подмена реального IP-адреса виртуальным. Это гарантирует, что все запросы направляются только в Xray, исключая их перехват системным DNS, и обрабатываются строго согласно конфигурации Xray.
3. Правила и списки маршрутизации
Трафик распределяется по трем категориям:
Прямое подключение (
directSites/directIp): Ресурсы, доступ к которым будет осуществляться без прокси.Прокси (
proxySites/proxyIp): Ресурсы, требующие туннелирования.Блокировка (
blockSites/blockIp): Запрещенные ресурсы (реклама, трекеры).
Ресурсы Geo-баз
GeoIP URL (
geoipUrl): https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geoip.datGeosite URL (
geositeUrl): https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/geosite.dat
4. Продвинутые параметры
Стратегия доменов (domainStrategy)
domainStrategy)Определяет, как Xray сопоставляет домены с правилами IP:
AsIs: Xray вообще не пытается резолвить (узнавать IP) домен на этапе маршрутизации. Он передает доменное имя «как есть» следующему этапу.
IPIfNonMatch: Сначала Xray пытается сопоставить запрос с правилами по домену. Если подходящего правила не нашлось, он делает DNS-запрос, получает IP и проверяет правила еще раз, но уже по IP.
IPOnDemand: Как только запрос попадает в систему маршрутизации, Xray всегда резолвит домен в IP-адрес перед тем, как проверять любые правила.
Использование оптимизированных файлов (useChunkFiles)
useChunkFiles)Эта функция позволяет вырезает из геофайлов указанные секции и передаёт ядру уже обрезанные геофайлы. Это позволяет не падать ядру на старте при ограничениях памяти в iOS (50мб).
Нарезка и сохранение оптимизированных файлов выполняется по условиям:
При сохранении нового профиля с путями по умолчанию (loyalsoldier). Скачивание не происходит, создаются урезанные файлы (ip/site) из уже существующих в приложении.
После завершения скачивания геофайла (site/ip) — независимо от того, произошло это при сохранении профиля, авто-обновлении или запуске пользователем вручную.
После выхода из редактора правил (direct/proxy/block), если в них были внесены изменения.
Внимание: Если вы используете JSON-конфигурацию подписки, помните, что нарезка секций осуществляется на основе профиля маршрутизации, а не JSON-конфигурации. Убедитесь, что в профиле маршрутизации созданы те же теги, что и в вашей JSON-конфигурации.
Порядок маршрутизации (routeOrder)
routeOrder)Определяет приоритет проверки правил. Трафик проверяется по списку почередно:
Приложение берет первое правило из списка
routeOrder.Если совпадения нет, переходит к следующему.
Если ни одно правило не подошло, трафик направляется в основной выход (Proxy, если
globalProxyвключен, или Direct, если выключен).
Last updated