Загрузка гео-файлов Happ: полное руководство по настройке и устранению ошибок

Узнайте, как работают гео-файлы Happ, почему возникают ошибки загрузки и как их исправить. Подробное руководство по настройке маршрутизации, DNS и обновлению баз.

Что такое гео-файлы и зачем они нужны в Happ

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

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

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

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

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

Изменения в настройках маршрутизации применяются только после перезапуска соединения (Reconnect). Это важно помнить, если вы изменили профиль, но ничего не произошло. При удалении подписки каскадно удаляются все связанные с ней профили и кэшированные гео-файлы.

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

Способы добавления профилей маршрутизации

Профили маршрутизации можно добавлять автоматически с помощью специальных ссылок, созданных на сайте routing.happ.su. Эти ссылки могут передаваться через HTTP-заголовки или тело подписки. При добавлении профиля из заголовков или тела он сразу привязывается к подписке, в которой пришёл.

Существует несколько видов ссылок:

  • happ://routing/add/{base64} — добавляет профиль в список. Первый добавленный профиль становится активным только после успешной загрузки гео-файлов. Если профиль с таким именем уже существует, он перезаписывается.
  • happ://routing/onadd/{base64} — добавляет и автоматически активирует профиль, даже если другие уже активны.
  • happ://routing/off — отключает функционал маршрутизации.

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

Основные настройки профиля: имя, глобальный прокси и дата обновления

Каждый профиль маршрутизации имеет несколько ключевых параметров. Название (name) используется для идентификации профиля пользователем. Параметр globalProxy определяет, куда направляется трафик по умолчанию: если true, весь трафик идёт через прокси, если false — напрямую. Это также определяет выход по умолчанию, если ни одно правило не сработало.

Дата обновления (lastUpdatedDate) — это метка времени последнего изменения профиля или гео-файлов. Она управляет актуальностью баз на устройствах. При первой установке, если поле заполнено, приложение принудительно скачает гео-файлы, даже если URL совпадают со стандартными. При обновлении подписки можно инициировать принудительное перекачивание баз, если новая дата позже текущей или старая отсутствует.

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

Конфигурация DNS: локальные и удалённые запросы

Happ разделяет DNS-запросы на локальные (Domestic) и удалённые (Remote) для оптимизации скорости и учёта географического расположения ресурсов. Удалённый DNS используется для запросов прокси-ресурсов через прокси-сервер, а локальный — для прямых подключений.

Для каждого типа DNS можно настроить тип протокола (DoH, DoU), домен и IP-адрес сервера. По умолчанию используются Cloudflare DNS (https://cloudflare-dns.com/dns-query и 1.1.1.1). Также поддерживается DNS Hosts — список ручных соответствий «домен: IP», работающий как системный файл hosts.

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

Правила маршрутизации: direct, proxy, block и гео-базы

Трафик в Happ распределяется по трём категориям: прямое подключение (directSites/directIp), прокси (proxySites/proxyIp) и блокировка (blockSites/blockIp). Для каждой категории можно указать списки доменов и IP-адресов. Гео-базы (geoip.dat и geosite.dat) предоставляют готовые наборы для этих списков, например, «все сайты такой-то страны».

URL гео-баз по умолчанию указывают на репозиторий Loyalsoldier/v2ray-rules-dat. Эти файлы можно заменить на альтернативные, но делать это нужно осторожно, так как подмена влияет на маршрутизацию. Рекомендуется скачивать базы только из официальных источников.

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

Продвинутые параметры: domainStrategy, useChunkFiles и routeOrder

Стратегия доменов (domainStrategy) определяет, как Xray сопоставляет домены с правилами IP. Вариант AsIs передаёт домен «как есть», не резолвя его. IPIfNonMatch сначала проверяет правила по домену, а если не находит, делает DNS-запрос и проверяет по IP. IPOnDemand всегда резолвит домен перед проверкой правил.

Использование оптимизированных файлов (useChunkFiles) позволяет вырезать из гео-файлов указанные секции и передавать ядру уже обрезанные файлы. Это особенно полезно на iOS, где есть ограничение памяти в 50 МБ. Нарезка происходит при сохранении нового профиля с путями по умолчанию, после завершения скачивания гео-файла или после изменения правил.

Порядок маршрутизации (routeOrder) определяет приоритет проверки правил. Трафик проверяется по списку поочерёдно, и если ни одно правило не подошло, он направляется в основной выход (Proxy или Direct в зависимости от globalProxy).

Типичные ошибки загрузки гео-файлов и их причины

Ошибка загрузки гео-файлов может возникать по разным причинам. Чаще всего это отсутствие доступа к источнику файлов: проблемы с каналом провайдера, брандмауэр или антивирус с проверкой HTTPS. Также возможна ситуация, когда файлы скачиваются, но не появляются — это может быть связано с тем, что антивирус удаляет их или у приложения нет прав на запись в папку данных.

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

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

Пошаговое исправление ошибок загрузки гео-файлов

Чтобы исправить ошибку загрузки гео-файлов, следуйте этому порядку:

  1. Скачивайте базы без включённого туннеля. Если туннель активен, запрос уходит в неработающее подключение, и загрузка не удаётся.
  2. Удалите повреждённые файлы. Очистка кэша приложения удаляет недокачанные базы, и клиент качает их заново. Данные приложения при этом не трогайте — там подписка.
  3. Смените источник загрузки. В части сборок источник задаётся в настройках. Если основной недоступен, помогает альтернативный адрес.
  4. Подставьте файлы вручную. Если клиент поддерживает указание пути, скачайте базы на компьютере и положите в папку приложения. На телефоне это доступно не всегда.
  5. Работайте без гео-баз. Переключитесь на профиль, который отправляет весь трафик в туннель: правила ему не нужны. Это полноценное решение, просто без исключений.

Чего не стоит делать: скачивать базы со случайных сайтов и форумов. Гео-файлы напрямую влияют на маршрутизацию, и подменённый список отправит часть трафика не туда.

Профилактика и проверка: как убедиться, что всё работает

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

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

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

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

Сколько весят гео-файлы и как часто их нужно обновлять?

Гео-файлы обычно весят несколько десятков мегабайт вместе. На медленной сети загрузка может занять минуту-две. Обновлять их рекомендуется раз в несколько недель, так как списки доменов и IP меняются медленно. В Happ обновление происходит автоматически при обновлении ядра или по расписанию, но можно запустить его вручную в настройках маршрутизации.

Можно ли отключить загрузку гео-файлов совсем?

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

Что делать, если гео-файлы скачиваются, но не появляются?

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

Можно ли подложить гео-файлы вручную?

Иногда да, если клиент поддерживает указание пути к файлам. Скачайте базы на компьютере из официального репозитория и положите их в папку приложения. Однако на телефоне это доступно не всегда. Ручные файлы устаревают, и о них легко забыть, поэтому проще настроить автоматическое обновление.

Почему возникает ошибка загрузки гео-файлов при включённом туннеле?

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

Что делать, если ошибка загрузки гео-файлов повторяется на всех сетях?

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