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

Дорожная карта

Дорожная карта охватывает все репозитории getmikan: ядро Citrus и форки utls, tls, http, smux и restls-client-go. Переход панели Mikan на Citrus зависит от ядра и тоже здесь. Это план, а не обещание сроков.

Подробно, со ссылками на каждый PR, — в журнале изменений.

  • Релизы. Бета-релизы v1.0.0-beta.1 и v1.0.0-beta.2, собранные из dev; см. новость о второй бете.
  • Совместимость с Xray. Пост-квантовый REALITY на клиенте и сервере (X25519MLKEM768, ML-DSA-65), XHTTP с поведением Xray, ключи и ссылки ECH в форматах Xray. Автотесты против Xray v26.10.10 в CI.
  • Пользователи в ядре. Shadowsocks 2022 с несколькими пользователями, статистика трафика и онлайн-адресов, лимиты скорости, соединений, адресов, квоты и срока, смена пользователей входящих без перезапуска, PUT /rules.
  • События и наблюдаемость. GET /events (WebSocket, SSE, NDJSON), Prometheus /metrics, пробы /healthz и /readyz, события отклонённой авторизации, JSON-логи.
  • Каскады. Группы type: chain с проверкой каждого хопа.
  • Новое в сети и DNS. Листенеры на unix-сокете, DNSCrypt v2, сниффер BitTorrent и правило PROTOCOL, trusted-proxy-header от доверенных прокси.
  • Чистка. Удалены VMess, SSR, Hysteria v1, TUIC v4, потоковые шифры Shadowsocks, v2ray-plugin и mKCP.
  • Укрепление. Ревью безопасности, ревью кода и статический аудит закрыты исправлениями, в том числе оставшиеся находки по серверным рукопожатиям, fallback, повторам 0-RTT и форкам utls и ResTLS (#140–#142, #148); TLS 1.2 минимум; самообновление сверяется с checksums.txt; CI закреплён по хешам. См. Безопасность.
  • Производительность. Загрузка: пакетная запись, до +50% на REALITY, Trojan и SS2022 (#119). Скачивание: чтение по 64 КиБ и TLS-записи в сокет вместе, в 32 потока REALITY 2802 → 4235 МБ/с, Trojan 2737 → 3936, SS2022 3895 → 4392 (#124). Пинг под нагрузкой: эхо рядом с восемью закачками 55–63 → 20 мс (#131). Память простаивающего туннеля: Trojan −36%, AnyTLS −18%, REALITY −12% (#129). QUIC: отставание от sing-box на новых потоках 10–12% → 4–6% (#125); меньше аллокаций на новое соединение (#118). Раньше: XHTTP по h2 тратит вдвое меньше CPU на гигабайт, простаивающее соединение — на 30 КБ меньше памяти.
  • AnyTLS. Переработка (#130): в 32 потока скачивание вдвое быстрее, загрузка +23%, быстрее sing-box; гонка в клиенте устранена.
  • Для серверов и панелей. PROXY protocol v1 и v2 на TCP-входящих для фронтендов вроде SNI-роутера (#136); профили запуска без root для systemd и Docker (#144); одноразовые тикеты для WebSocket контроллера вместо secret в URL (#143); User-Agent clash.meta/<версия> citrus/<версия> (#146) и поле core в GET /version (#147), чтобы панели и приложения отличали Citrus от mihomo.
  • Сравнение и замеры. Сравнение четырёх серверов — Xray, sing-box, mihomo и Citrus — на восьми протоколах (#126); ночная проверка производительности в CI против mihomo (#127).
  • Совместимость с клиентами. Автотесты: клиенты mihomo v1.19.31 и v1.19.32 против сервера Citrus по всем протоколам, см. Совместимость.
  • Go 1.26. Минимальная версия Go — 1.26, поэтому golang.org/x/net, x/crypto и x/text обновлены до текущих релизов с исправлениями безопасности. Отдельных сборок на старых версиях Go (-go120–-go125) больше нет; см. Переход с mihomo.
  • Форки. utls v1.8.8-citrus.1–.3, tls v0.1.8-citrus.1, http v0.1.8-citrus.1–.2; у utls и tls после этих тегов есть коммиты в dev (скачивание, память). Новый форк smux исправляет отправку буфера вызывающего после ошибки; форк restls-client-go — гонки счётчиков записей; оба пока без тегов.
  • Документация. Сайт на двух языках: старт, конфигурация, контроллер, пользователи, лимиты, метрики, события, цепочки, переход с mihomo.
  • Приложение MikanApp на Citrus. Сборка с ядром Citrus; в «О приложении» ядро называется по самому ядру — Citrus или Mihomo.
  • Переход панели Mikan на Citrus. Панель встраивает ядро как библиотеку, и переход зависит от первого релиза:
    • подменить в go.mod панели модули utls, tls, http и smux на форки getmikan, как это делает Citrus;
    • получать события из /events вместо опроса /traffic/users, /limits/users и других ручек;
    • задавать secret контроллера: без него ядро не откроет контроллер на сетевом адресе;
    • перенести на VLESS пользовательские конфиги нод с VMess, который из Citrus удалён.
  • Живая проверка. Тестовая нода на Citrus и чек-лист для телефона: подключение каждым протоколом из подписки, переключение сетей и авиарежим, скорость, статистика и лимиты в панели.
  • Документация на английском наравне с русским. Страницы сайта есть на обоих языках; дальше — комментарии в docs/config.yaml, которые пока в основном на китайском, как в mihomo.
  • Производительность Shadowsocks 2022. Сейчас каждое соединение сразу выделяет два буфера по 64 КБ — всего sing-shadowsocks заранее выделяет около 150 КиБ на соединение. План — форк sing-shadowsocks, где буферы берутся, только когда идут данные.
  • Подпись релизов. Подписывать checksums.txt в CI и проверять подпись ключом, встроенным в Citrus, при самообновлении.
  • Проверка загружаемых дашбордов и geodata на подлинность.
  • Дальнейшее укрепление. Продолжение ревью и аудитов по мере роста кода.
  • Еженедельная синхронизация с mihomo. Workflow готов и проверен, но чтобы он открывал PR, в настройках репозитория нужно разрешить GitHub Actions создавать pull request’ы.
  • Форк sing-quic. Паддинг Hysteria2 стоит около 4% CPU на поток; чтобы это исправить, нужен форк sing-quic.
  • Лимит потоков TUIC. Сервер TUIC принимает не больше 2048 потоков на одно QUIC-соединение; клиент sing-box, который не ждёт разрешения на новые потоки, сверх этого получает ошибки.
  • Теги релизов форков smux, tls и utls. У smux тегов ещё нет, у tls и utls в dev есть коммиты после тегов -citrus.