Ядро 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. Стек, выбранный пользователем в Ещё → Сеть → Сетевой стек,
важнее шаблона.