Skip to content

Создание правила Anticensority для sing-box #2

@savely-krasovsky

Description

@savely-krasovsky

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

Китайцы придумали мощную коробку под названием sing-box, она интегрирована в кучу приложений включая Nekoray, NekoBox, SagerNet и другие.

Там есть удобная фича с правилами маршрутизации, в частности правила geosite и geoip. Компилируют готовую базу они тут: https://github.com/SagerNet/sing-geosite

Вкладывают при этом вручную подобные списки, которые делает коммьюнити: https://github.com/v2fly/domain-list-community

Собственно идея простая:

  1. Можно компилировать базу в похожем формате.
  2. Далее форкнуть sing-box и сделать отдельное правило, например antizapret, при его добавлении в конфигурацию подгружать БД запрещенных доменов и IP.
  3. В конфигурации sing-box сделать два правила: по умолчанию обход, а antizapret пускать через прокси.

На мой взгляд изменения подготовить достаточно легко:

  1. Генератор PAC-файлов у нас уже есть. Адаптировать под генерацию db-файлов и можно также заливать в GitHub-релизы новые версии.
  2. Форкнуть и добавить для sing-box новое правило по аналогии с geosite: https://github.com/SagerNet/sing-box/blob/dev-next/route/router_geo_resources.go (загрузка актуальной БД), https://github.com/SagerNet/sing-box/blob/dev-next/route/rule_item_geosite.go (сам матчер)
  3. Форкнуть Nekobox и использовать нашу версию sing-box (других изменений делать там не придется).

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions