Перейти к содержимому
ENНовостиGitHubСкачать

Сетевое ядро Mikan

Citrus — ядро VPN-сервиса Mikan, форк mihomo. Совместим с Xray, включая пост-квантовый REALITY, XHTTP и ECH; считает трафик, лимиты и события по каждому пользователю; строит каскады и отдаёт метрики. Конфиг тот же, что у mihomo. GPL-3.0.

citrus -d ~/.config/citrus

Один бинарник для Linux, Windows, macOS, FreeBSD и Android.

Лайм, символ Citrus

Зачем отдельное ядро

Mikan — VPN-сервис: на его нодах ядро работает сервером для многих пользователей сразу. mihomo писался как клиент, и многого, что нужно ноде, в нём нет. Citrus добавляет это в само ядро.

  • Совместимость с Xray

    Пост-квантовый REALITY (X25519MLKEM768 и ML-DSA-65) на клиенте и сервере, XHTTP с поведением и значениями по умолчанию как у Xray, ключи и ссылки ECH в форматах Xray. Всё это проверяют автотесты против Xray v26.10.10.

  • Пользователи — часть ядра

    Трафик и онлайн-адреса каждого пользователя, лимиты скорости, соединений, адресов, квоты и срока, смена пользователей входящих без перезапуска. Через REST, Go API и поток событий /events.

  • Укреплённый сервер

    Ревью безопасности, ревью кода и статический аудит: контроллер без secret не слушает сеть, состояние до авторизации ограничено, каждый запрос проходит авторизацию, обновления сверяются с checksums.txt, CI закреплён по хешам.

  • Каскады

    Группа type: chain собирает цепочку «вход → выход» из прокси и групп, а проверка здоровья называет хоп, который сломался.

  • Наблюдаемость

    Prometheus /metrics, пробы /healthz и /readyz, события отклонённой авторизации и JSON-логи для Loki и ELK.

  • Ничего лишнего

    VMess, SSR, Hysteria v1, TUIC v4, потоковые шифры Shadowsocks, v2ray-plugin и mKCP удалены: около 20 тысяч строк, которые сервису не нужны.

Citrus и mihomo

Формат конфига и API контроллера общие с mihomo, а клиенты на mihomo подключаются к серверу Citrus. В таблице только то, что уже влито в Citrus.

Citrusmihomo
Пост-квантовый REALITYX25519MLKEM768 по умолчанию, ML-DSA-65, на сервере require-x25519mlkem768 и mldsa65-seedX25519MLKEM768 только по флагу, без ML-DSA-65
Статистика пользователейТрафик и онлайн-IP по паре «входящий, пользователь», выборка с обнулениемТолько общие счётчики
Лимиты пользователейСкорость, соединения, адреса, квота, срокНет
Пользователи входящихМеняются через REST, листенер не пересоздаётсяТолько перезагрузкой конфига
События и метрики/events (WebSocket, SSE, NDJSON), /metrics, /healthz, /readyzНет
КаскадыГруппа type: chain с проверкой каждого хопаТолько dialer-proxy
Контроллер на сетевом адресеТолько с secretЗапускается и без secret
СамообновлениеПакет сверяется с checksums.txt релизаБез сверки
Устаревшие протоколыУдаленыЕсть

Что умеет

  • Входящие

    HTTP, HTTPS, SOCKS, mixed, redirect и TPROXY. Плюс серверные листенеры для VLESS, Trojan, Hysteria2, TUIC, AnyTLS и других.

  • Исходящие протоколы

    VLESS с REALITY, Trojan, Shadowsocks, Hysteria2, TUIC, AnyTLS, TrustTunnel, Snell, WireGuard и другие.

  • TUN

    Весь трафик системы через ядро, с настраиваемым сетевым стеком.

  • DNS

    DNS over HTTPS, TLS и QUIC, fake IP и правила маршрутизации для DNS-запросов.

  • Правила

    Маршрутизация по домену, диапазону IP, geodata, процессу и логическим комбинациям правил.

  • Провайдеры и группы

    Удалённые провайдеры прокси и правил, проверки доступности, fallback и балансировка нагрузки.

  • API контроллера

    HTTP и WebSocket API, совместимые с клиентами и дашбордами для mihomo, например MetaCubeXD.

Скачать

Готовые сборки лежат в релизах на GitHub. Файлы называются citrus-<os>-<arch>-<версия>: в релизе версия — это тег (citrus-linux-arm64-v1.2.3.gz), в пререлизе — ветка и коммит (citrus-linux-arm64-main-1a2b3c4.gz). Для Windows это .zip, для Linux есть ещё .deb, .rpm и .pkg.tar.zst.

КаналОткудаЧто это
releaseПоследний тег vX.Y.ZСтабильные версии.
Prerelease-mainВетка mainСборка с каждого слияния в main.

Файл amd64 собран под x86-64-v3 (Intel Haswell, AMD Excavator и новее); для старых берите amd64-compatible (v1) или amd64-v2. Есть также arm64, armv5–v7, 386, mips, riscv64, loong64, s390x и другие.

Citrus и Mikan

Mikan — свободная VPN-панель. Её ноды встраивают ядро как библиотеку и считают трафик по каждому соединению каждого пользователя; сейчас это mihomo, Citrus станет следующим. Ядро живёт в отдельном репозитории, чтобы его можно было использовать и без панели: как обычный клиент или сервер в стиле mihomo.

Документация

Новости