Clod Clash

Ядро Clod Core

Какое ядро встроено в Android-клиент и чем оно отличается от стокового mihomo

Ядро обновляется вместе с приложением, отдельно его не обновить. Внутри — Clod Core, наш форк стабильного mihomo v1.19.32, ветка android. Версия ядра видна у пользователя в Ещё → О программе, например «Ядро Clod Core v1.19.32-clod.5».

Правки для Android

  • Пока сеть переключается или приложение стояло во сне, неудачные проверки не записываются узлам — живые серверы не помечаются мёртвыми.
  • При смене сети, если у пользователя включено «Разрывать соединения при смене сети» (по умолчанию включено), сбрасываются общие сессии узлов (smux, anytls, tuic, hysteria2, gRPC, ssh) — новые соединения не садятся на мёртвую сессию прежней сети.
  • Серверы в группах ручного выбора проверяются с тем же ожидаемым кодом ответа, что задан в группе.
  • Если адрес подписки или набора перенаправляет с https на http, загрузка отклоняется, а не уходит в открытом виде.
  • Уборка памяти ядра идёт после того, как оно перешло в рабочий режим, а не до.

Отличия от стокового mihomo

  • Свежий сетевой стек MIPS — с исправлениями TCP и ICMP; «Авто» по умолчанию берёт его, если стек не задан в шаблоне.
  • Новая библиотека TLS-отпечатков — utls v1.9.0-mod-meta: отпечатки Firefox 148 и Safari 26.3 с постквантовым ключом, исправления возобновления TLS-сессий. Отпечатки chrome, ios и edge не меняются.
  • Узлы не «мигают» мёртвыми. Если проверка живого узла не прошла или зависла, через секунду (у медленных узлов — позже) идёт вторая; мёртвым узел считается, только если не ответили обе — так и при закрытом порте, несуществующем имени или не том коде ответа. Узел, уже помеченный мёртвым, проверяется одной пробой. Так идут и плановые проверки ядра, и проверки приложения — по кнопке, при подключении и после смены сети.
  • Нестабильный узел проигрывает стабильному. Автовыбор добавляет к задержке узла штраф — четверть тайм-аута за каждый провал в трёх последних проверках.
  • Меньше лишних проверок. Узел, который стоит в нескольких группах, проверяется один раз за раунд, а узлы на одном сервере — с шагом 250 мс, а не залпом, чтобы блокировщик не принял проверки за атаку.
  • Базы не портятся при сбое. Наборы серверов и правил и geo-базы записываются через временный файл: если запись оборвалась, старый файл остаётся целым.

Сетевой стек

Стек туннеля берётся из шаблона: tun.stack (при tun.enable: true) или stack у слушателя type: tun. Принимаются system, gvisor, mixed и mips, другое значение пропускается. Без стека в шаблоне — mips. Стек, выбранный пользователем в Ещё → Сеть → Сетевой стек, важнее шаблона.

На этой странице