Маршрутизация (Routing)
Приложение поддерживает настройку маршрутизации трафика через профили маршрутизации. В приложении предустановлены геофайлы для работы сразу после установки. Обновление происходит при обновлении профил
Добавление профилей
Профили маршрутизации можно добавлять через:
Буфер обмена
Deeplink-ссылки
QR-коды
HTTP-заголовки (
routing)Тело подписки (body)
Типы ссылок
incy://routing/add/{base64}
Добавляет профиль; активируется после успешной загрузки геофайлов
incy://routing/onadd/{base64}
Добавляет и сразу активирует профиль
{base64}— JSON-профиль, закодированный в base64.
Обратная совместимость: ссылки
://routing/add/и://routing/onadd/также поддерживаются.
Обработка ошибок
Менеджер загрузки геофайлов работает в фоновом режиме:
Загрузки, превышающие 3 минуты, прерываются
Сообщения об ошибках отображаются на главном экране
Проблемные профили отмечаются красным восклицательным знаком в списке
Проблемы исчезают после успешной загрузки файлов или удаления профиля
HTTP-заголовок
Профиль передаётся в заголовке routing в base64-формате. Поддерживаются два формата:
Формат 1 — base64 напрямую:
Формат 2 — полная ссылка (любая схема):
Тело подписки
Строка маршрутизации размещается в теле подписки наряду с серверными конфигурациями:
Обновление существующих профилей
Профили с одинаковым полем
Nameобновляются, а не дублируютсяПоле
LastUpdatedс Unix timestamp контролирует актуальность — обновление происходит при значении большем, чем у сохранённого профиля
Структура профиля
Пример профиля
Описание полей
Основные настройки
Name
string
"Default"
Имя профиля
GlobalProxy
string
"true"
"true" — весь трафик через прокси; "false" — прямое соединение. Определяет поведение при отсутствии совпадений в правилах маршрутизации
LastUpdated
string
Unix timestamp. Контролирует принудительное обновление геофайлов при первом сохранении или при обновлении профиля с более новой временной меткой
Настройки DNS
Система разделяет DNS-запросы на удалённые (Remote, через прокси) и локальные (Domestic, прямое соединение).
Удалённый DNS (для прокси-ресурсов):
RemoteDNSType
string
"DoH"
Протокол: DoH, DoU
RemoteDNSDomain
string
"https://cloudflare-dns.com/dns-query"
Адрес DNS-сервера (обязателен для DoH)
RemoteDNSIP
string
"1.1.1.1"
IP DNS-сервера
RemoteDns
string
Альтернативное поле для RemoteDNSIP (обратная совместимость)
Локальный DNS (для прямых ресурсов):
DomesticDNSType
string
"DoH"
Протокол: DoH, DoU
DomesticDNSDomain
string
"https://dns.google/dns-query"
Адрес DNS-сервера
DomesticDNSIP
string
"8.8.8.8"
IP DNS-сервера
DomesticDns
string
Альтернативное поле для DomesticDNSIP (обратная совместимость)
Дополнительные DNS-настройки:
DnsHosts
object
Ручные DNS-записи (аналог файла hosts). Формат: {"domain": "ip"}
FakeDNS
string
"true" — подставляет виртуальные IP вместо реальных, чтобы Xray обрабатывал все запросы согласно конфигурации
Правила маршрутизации
Трафик распределяется по трём категориям:
DirectSites
string[]
Домены/категории для прямого доступа (без прокси)
DirectIp
string[]
IP-адреса и подсети для прямого доступа
ProxySites
string[]
Домены/категории, направляемые через прокси
ProxyIp
string[]
IP-адреса и подсети через прокси
BlockSites
string[]
Блокируемые домены/категории (реклама, трекеры)
BlockIp
string[]
Блокируемые IP-адреса и подсети
Правила поддерживают гео-категории (geosite:ru, geoip:ru), конкретные домены и IP/CIDR-подсети.
Геофайлы
Geoipurl
string
URL для скачивания geoip.dat
Geositeurl
string
URL для скачивания geosite.dat
Стратегия маршрутизации
Поле DomainStrategy определяет порядок проверки правил:
AsIs
Домены передаются как есть, без DNS-резолва
IPIfNonMatch
Сначала проверка по домену; если не совпало — резолв DNS и проверка по IP-правилам
IPOnDemand
Всегда резолвит домены в IP перед проверкой правил
Геофайлы: оптимизированное скачивание
Геофайлы (geoip.dat, geosite.dat) скачиваются с URL, указанных в профиле. Для экономии трафика используется хеш-проверка.
Алгоритм
Скачивается
{filename}.sha256(несколько байт) с того же URLЕсли хеш совпадает с сохранённым и файл существует локально → скачивание пропускается (даже при ручном обновлении)
Если файл
.sha256недоступен → fallback на сравнение временных метокLastUpdatedПолный файл скачивается → вычисляется SHA-256 → файл заменяется
Новый хеш сохраняется в профиле
Рекомендация для провайдеров
Размещайте файл geoip.dat.sha256 и geosite.dat.sha256 рядом с геофайлами. Файл должен содержать только hex-строку SHA-256 хеша (64 символа). Это позволит клиентам пропускать скачивание неизменившихся файлов и экономить трафик.
Пример содержимого geoip.dat.sha256:
Обрезка геофайлов (chunk files)
Полные geoip/geosite файлы весят десятки мегабайт. Если профиль использует только ограниченное подмножество geoip:/geosite: тегов, клиент может обрезать скачанные файлы до реально нужных записей.
Поле профиля
useChunkFiles
boolean
Если true — клиент вызывает внутреннее CutGeoData() после скачивания и оставляет только упомянутые в правилах теги
По умолчанию
falseна всех платформах — обратная совместимость со старыми профилями.Android / iOS реализуют обрезку через встроенный Go-модуль
incycore.CutGeoData()(protobuf-парсинг geoip/geosite и выброс лишних записей).Desktop (Linux / Windows) пока использует полные файлы —
useChunkFilesигнорируется; процесс xray работает с неукороченными.dat.После обрезки хеш пересчитывается локально и сохраняется в профиле — повторное скачивание не запустится, пока исходный
.sha256на сервере не сменится.
Когда использовать
Включите, если:
В
proxy/direct/blockиспользуется мало геотегов (например, толькоgeoip:ru,geoip:cn,geosite:google).Пользователи жалуются на память при загрузке тяжёлых списков.
Не включайте, если:
Профиль использует много тегов — обрезка не даст выигрыша.
Есть кастомные geosite-файлы с нестандартным layout — клиент может не распознать структуру.
Последнее обновление