Перейти к основному содержимому

Геоданные

Что такое GeoSite и GeoIP​

GeoSite и GeoIP - базы в формате V2Ray, в которых домены и IP-диапазоны сгруппированы по именованным категориям. Сет может нацеливаться на целую категорию вместо списка отдельных доменов или адресов.

  • GeoSite (geosite.dat) - домены, сгруппированные по категориям. Например, категория youtube содержит домены YouTube (youtube.com, googlevideo.com, ytimg.com и другие).
  • GeoIP (geoip.dat) - IP-диапазоны, сгруппированные по категориям: по странам, а в b4geoip по сервисам.

Источники​

b4 предлагает три предустановленных источника. Базу можно скачать и с любого другого URL.

Вкладка «Geodat настройки»

ИсточникЧто содержитСсылка
LoyalsoldierГлобальная база доменов и IP (Китай + мир)GitHub
RUNET FreedomБаза, рассчитанная на российские блокировкиGitHub
b4geoipОфициальная GeoIP база b4 - IP-диапазоны по ASN (только GeoIP)GitHub
Для сетей в России

Рекомендуемые источники - RUNET Freedom для GeoSite и b4geoip для GeoIP, инсталлятор предлагает их по умолчанию.

b4geoip​

Официальная GeoIP база проекта b4. Собирается автоматически из данных RIPE NCC - IP-префиксов, которые реально анонсирует каждая ASN. Содержит категории для:

  • Облачные провайдеры - AWS, Google Cloud, Azure, DigitalOcean, Hetzner, OVH, Scaleway, Oracle Cloud, Contabo, AEZA
  • CDN - Cloudflare, Akamai, Fastly, CDN77
  • Игровые компании - Roblox, Valve/Steam, Sony/PlayStation, Nintendo, EA, Riot Games, Ubisoft, Epic Games, Wargaming, Bungie, Take-Two, CCP
  • Платформы - Telegram, GitHub, Apple, Adobe, Amazon, Blizzard

b4geoip группирует адреса по сервисам, а не по странам, поэтому сет может нацеливаться на адреса одной платформы.

Настройка​

Вкладка Настройки, Geodat настройки содержит поле Директория назначения, группу Автообновление (см. Автообновление) и по карточке на каждую базу, База данных Geosite и База данных GeoIP.

  1. Откройте Настройки, Geodat настройки.
  2. В поле Директория назначения укажите директорию для файлов.
  3. На карточке базы выберите Источник или выберите Свой URL... и введите полный URL .dat файла в поле Свой URL.
  4. Нажмите Обновить.

Директория назначения​

Обновить и Загрузить записывают файлы в директорию из поля Директория назначения, всегда под именами geosite.dat и geoip.dat. Поле показывает директорию настроенного файла GeoSite, или файла GeoIP, если путь задан только у него, и /etc/b4, если пути нет ни у одного. Директория должна быть абсолютным путём без .. и лежать вне /proc, /sys, /dev, /boot и /run. Если директории нет, b4 её создаёт.

Поле не является сохраняемой настройкой, поэтому его правка не активирует кнопку Сохранить. Новая директория применяется при следующем Обновить или Загрузить на каждой карточке, а пока текущая и новая директории различаются, подсказка под полем называет обе. Файл пишется в новую директорию, а копия, ранее записанная b4 по старому пути, удаляется. Файл с именем, отличным от geosite.dat и geoip.dat, остаётся на месте.

Фоновые закачки всегда пишут в директорию файла GeoSite, или файла GeoIP, если путь задан только у него, и так же удаляют копию в другой директории.

Карточки баз​

Чип в заголовке карточки показывает состояние базы:

  • Активна - файл существует. Под путём показаны его размер и время изменения.
  • Не найдена - путь задан, но файла по нему нет.
  • Отключена - путь не задан, база не используется.

Под заголовком показаны путь к файлу, или Не настроено, если пути нет, и URL источника, сохранённый для базы. У загруженного файла вместо URL написано Локальная загрузка, у базы без URL и без файла - Не задано. В конфигурации они хранятся как system.geo.sitedat_path и system.geo.sitedat_url для GeoSite и как system.geo.ipdat_path и system.geo.ipdat_url для GeoIP.

Список Источник содержит предустановленные источники, которые публикуют эту базу (поэтому b4geoip есть только на карточке GeoIP), и пункт Свой URL.... Изначально выбран источник с сохранённым URL. Если сохранённый URL не совпадает ни с одним источником, выбран Свой URL... с этим URL, а если у базы нет пути, выбран Loyalsoldier. Выбор источника сам по себе ничего не меняет. URL сохраняется, когда Обновить завершается успешно.

КнопкаДействие
ОбновитьСкачивает выбранный источник в директорию назначения как geosite.dat или geoip.dat, сохраняет путь и URL источника и перезагружает категории, которые используют сеты. Неактивна, пока не выбран источник или, при Свой URL..., не введён URL
ЗагрузитьЗаписывает .dat или .db файл размером до 500 МБ из браузера в директорию назначения под тем же именем, сохраняет путь и очищает URL источника. Загруженный файл не обновляется ни одним из параметров автообновления
УдалитьУдаляет файл и отключает базу, см. Удаление базы. Неактивна, если у базы нет ни пути, ни файла

Строка под кнопками показывает ход операции и её результат. Загрузить и Удалить прерывают идущую закачку. Закачка, начатая, пока идёт другая (с другой карточки или фоновая), завершается ошибкой another geodata download is already running.

Удаление базы​

Удалить открывает диалог Удаление базы геоданных с путём к файлу. Кнопка Удалить в диалоге стирает файл и очищает путь и URL источника базы. База остаётся отключённой до следующего Обновить или Загрузить, и ни Обновлять при запуске, ни Расписание её не возвращают.

Файл стирается, только если его путь абсолютный, он называется geosite.dat (GeoSite) или geoip.dat (GeoIP) и лежит вне /proc, /sys, /dev, /boot и /run. Любой другой файл, например с произвольным именем, остаётся на диске, база всё равно отключается, а строка под кнопками сообщает, что файл оставлен. Проверяется только имя файла, поэтому geosite.dat или geoip.dat, который читает и другой сервис, тоже стирается.

Сеты, использующие базу

Сету с категориями из базы, даже выключенному, нужен путь к этой базе, и конфигурация с пустым путём не проходит валидацию. Диалог перечисляет такие сеты. Если хотя бы один из них есть, Удалить стирает файл, а затем завершается ошибкой Failed to save configuration: Configuration is invalid. Путь и URL источника остаются, и следующая проверка отсутствующих файлов скачивает файл заново. Чтобы базу можно было отключить, категории сначала убирают из этих сетов.

Освобождение места

На устройстве с малым объёмом памяти удаление базы, которую не использует ни один сет, освобождает весь её объём. Сет, который матчит только по доменам, ничего не читает из geoip.dat.

Использование в сетах​

Когда у базы есть путь и b4 прочитал список её категорий, редактор сета показывает для них поле на вкладке Цели: Категории GeoSite обхода на подвкладке Домены обхода и Категории GeoIP обхода на подвкладке IP обхода. Пока у базы нет пути, поле скрыто.

У каждой выбранной категории показано число доменов или диапазонов адресов в ней. Нажатие на категорию GeoSite открывает просмотр с общим числом её доменов и первыми 100 из них. У категорий GeoIP просмотра нет. Как сеты матчат по категориям, описано на странице Цели.

Обновление​

Обновить заменяет базу по запросу, и b4 перезагружает категории, которые используют сеты, без перезапуска. Фоновые закачки берут сохранённые URL источников, либо по параметрам группы Автообновление, либо чтобы восстановить отсутствующий файл.

Автообновление​

ПолеКлюч конфигурацииПо умолчаниюДействие
Обновлять при запускеsystem.geo.auto_update.on_startupВыключеноПримерно через 45 секунд после старта b4 скачивает каждую базу, у которой есть URL источника
Расписаниеsystem.geo.auto_update.intervalВыключеноЕжедневно, Еженедельно или Ежемесячно (daily, weekly, monthly). Скачивает каждую базу с URL источника, когда с последнего запуска прошло 24 часа, 7 или 30 дней, а если запуска ещё не было, при первой проверке. b4 проверяет это каждые 30 минут
Последний запускsystem.geo.auto_update.last_run-Показывается под группой после фоновой закачки, которая обновила все базы с URL источника. Обновить его не меняет

Оба поля сохраняются кнопкой Сохранить (см. Сохранение и перезапуск) и действуют без перезапуска. Следующая 30-минутная проверка читает новое Расписание, а Обновлять при запуске срабатывает при следующем старте.

Независимо от этих полей база, у которой заданы путь и URL источника, а файл отсутствует или повреждён, скачивается заново примерно через 45 секунд после старта, а затем при каждой 30-минутной проверке. Неудачная закачка при старте повторяется каждую минуту в течение пяти минут, если только источник не вернул файл, не прошедший проверку. После неудачной фоновой закачки b4 ждёт два часа до следующей, а после каждой новой неудачи вдвое дольше, но не больше суток. Успешная закачка сбрасывает ожидание.

Фоновым закачкам нужен веб-сервер

b4 запускает фоновые закачки только вместе с веб-сервером. При порте 0 (см. Веб-сервер) ни одна из них не выполняется, включая восстановление отсутствующих файлов.

Проверка перед заменой файла​

Скачанный или загруженный файл пишется во временный файл в директории назначения и заменяет текущий только после проверки. Он должен целиком разбираться как база GeoSite или GeoIP, и хотя бы одна из первых 64 записей должна содержать домен (GeoSite) или корректный диапазон адресов (GeoIP). Страница ошибки или блокировки, пустой ответ, оборванная закачка и файл GeoIP, загруженный как GeoSite, отклоняются, текущий файл при этом остаётся на месте. Закачка, по которой 60 секунд не приходит данных или которая идёт дольше часа, прерывается. Временные файлы, оставшиеся от прерванной закачки, удаляются при следующем старте, если им больше часа.

Если прямая закачка предустановленного источника не удалась, b4 повторяет её через зеркала обновлений. Свой URL получает такой же запасной путь, только если он ведёт на GitHub в один из аккаунтов, которые обслуживают зеркала (DanielLavrushin, Loyalsoldier, runetfreedom, XTLS, Flowseal).

Размер файлов

Файлы GeoSite и GeoIP занимают примерно от 10 МБ до более чем 70 МБ (GeoSite от RUNET Freedom). Новая копия пишется рядом с текущей и только потом её заменяет, поэтому для обновления нужно место под обе сразу. Если места не хватает, обновление завершается ошибкой, а текущий файл остаётся.

Инсталлятор​

Инсталлятор показывает размер файла каждого источника. Если источник ещё не задан, он предлагает рекомендованный (RUNET Freedom для GeoSite, b4geoip для GeoIP), когда этот файл помещается в целевой директории рядом с текущим, а иначе самый маленький из помещающихся; при переустановке остаётся уже заданный источник. Файлы он скачивает рядом с текущими, пока b4 ещё работает, сверяет каждый с файлом .sha256sum, который источник публикует рядом, если такой файл есть, и переносит их на место только после остановки b4. При неудачной или отклонённой закачке остаётся текущий файл, а файл, контрольная сумма которого уже совпадает с опубликованной, заново не скачивается. B4_GEO_MAX_TIME задаёт лимит времени одной попытки закачки в секундах (по умолчанию 3600, 0 - без лимита).

Повреждённые файлы​

Файл всё равно может оказаться повреждённым, например оборванным при закачке прежней версией инсталлятора или при заполненном диске. Тогда b4 запускается с теми категориями, которые удаётся прочитать, и пишет в лог каждую непрочитанную категорию вместе с сетами, которые работают без неё. Такой сет матчит только свои остальные цели (домены, адреса, ASN); сет, у которого других целей нет, не матчит ничего, и фильтр портов не превращает его в сет только по портам. Если задан URL источника и включён веб-сервер, b4 скачивает повреждённый файл заново примерно через 45 секунд после старта и повторяет попытки, как описано в разделе Автообновление.

Инструменты​

ПроектОписание
GeodatExplorerВеб-приложение, которое показывает категории, домены и IP-диапазоны в .dat файле, чтобы проверить состав категории до того, как она попадёт в сет
v2datCLI-утилита, которая распаковывает .dat файлы V2Ray в текстовые списки для скриптов и автоматизации
b4geoipОфициальная GeoIP база b4 (описана выше)