VPN·HUB·CRACK
Mieru: протокол без TLS, и почему его пока нельзя продавать · VPN HUB CRACK
Mieru: протокол без TLS, и почему его пока нельзя продавать
Mieru: протокол без TLS, и почему его пока нельзя продавать
Reality, Trojan, XHTTP и всё остальное, чем вы пользуетесь, притворяются обычным HTTPS. У них есть ClientHello, есть SNI, есть сертификат и настоящий сайт за спиной. Вся конструкция строится вокруг того, чтобы трафик выглядел как поход на нормальный сайт.
Mieru идёт в другую сторону. TLS там нет вообще: ни рукопожатия, ни имени, ни сертификата, ни домена-прикрытия. С первого байта соединение уже зашифровано.
Статья про то, как это устроено, чем оно интересно и почему на сегодня продавать это клиентам не выйдет.
Что видит наблюдатель
Сегмент Mieru на проводе выглядит так:
[padding0][nonce 0 или 24 Б][метаданные 32 Б][tag 16 Б][padding1][тело][tag 16 Б][padding2]
Всё, кроме заполнителей и nonce, статистически неотличимо от случайных данных. Ни заголовка, ни версии, ни строки, за которую можно зацепиться.
Заполнители стоят в трёх местах и настраиваются по длине. Сверху есть tcpFragment: он дробит пакеты и разносит куски случайной задержкой до 100 мс. Мультиплексирование переключается четырьмя ступенями и меняет, сколько логических потоков наблюдатель увидит внутри одного TCP-соединения.
Ключ, который зависит от часов
Отдельная особенность, из-за которой Mieru ломается там, где остальные протоколы работают.
Шифр — XChaCha20-Poly1305. Ключ выводится так: из пароля и имени пользователя считается хеш, текущее время округляется до двух минут и даёт соль, дальше PBKDF2.
Время входит в ключ. Разбежались часы клиента и сервера больше чем на четыре минуты, и расшифровать соединение нельзя. Сервер перебирает три соседние соли, дальше сдаётся.
# без этого протокол однажды перестанет работать без видимой причины
timedatectl set-ntp true
timedatectl status | grep -E "synchronized|NTP service"
На VPS с плывущими часами это выглядит как «работало и перестало» без единой записи в логах.
Чем это сильнее Reality
Проверять нечего. Активное зондирование против Reality сводится к тому, чтобы постучаться на порт и посмотреть, отдаст ли сервер то же, что настоящий сайт. У Mieru нет ни сайта, ни ответа: сервер молчит на всё, что не расшифровалось.
Встроенное обнаружение повторов. Классический приём цензора: перехватить пакет и переслать его заново, посмотрев на реакцию. Mieru такие пакеты распознаёт, а счётчики NewSession и KnownSession показывают вам, что кто-то щупал сервер. Метрика с ненулевым значением означает, что вами интересуются.
Не нужен домен. Ни покупки, ни сертификата, ни возни с selfsteal и настоящим сайтом за спиной.
Чем это слабее
Отсутствие TLS работает и против него.
Современные системы фильтрации ловят не только известные сигнатуры, но и полностью зашифрованный трафик как класс: соединение, в котором с первого байта нет ни одного разборчивого заголовка, само по себе выделяется на фоне обычного интернета. Reality в этой логике выглядит как поход на сайт, Mieru как аномалия.
Авторы это понимают и добавили режим низкой энтропии: данные кодируются так, что полезную нагрузку несёт лишь часть бит каждого блока, и трафик перестаёт быть похожим на шум. Цена — рост объёма в 1.15–2 раза.
Реальный случай блокировки, задокументированный в проекте: у пользователей China Telecom в Гуандуне и Шанхае порт закрывался после того, как через него проходило больше 20 ГиБ трафика с высокой энтропией. Не по содержимому пакетов, а по объёму на порт. У China Mobile у тех же людей всё работало.
Обошли это мультипортом: сервер слушает диапазон, клиент выбирает порт случайно.
{
"portBindings": [{"portRange": "2012-2022", "protocol": "TCP"}],
"users": [{"name": "user1", "password": "pass1"}],
"mtu": 1400
}
Про Иран в проекте есть отдельная история, поучительная сама по себе. Пользователь пришёл с жалобой на блокировку, наложившуюся на годовщину протестов и общую деградацию связи в стране. Разобрали по метрикам: счётчики зондирования стояли на нуле, то есть сервер никто не щупал. Прежде чем чинить протокол, стоит посмотреть на метрики.
Про Россию отчётов нет ни в ту, ни в другую сторону.
Почему продать это клиентам нельзя
Здесь заканчивается техника и начинается арифметика.
Приложений вашей аудитории под него нет
| Клиент | Mieru |
|---|---|
| Happ | нет |
| v2rayNG | нет |
| Hiddify | нет. Запрос висел с 2024 года с ответом «присылайте PR» и закрылся при массовой чистке тикетов |
| sing-box (оригинальный) | нет, есть только форк автора Mieru |
| NekoBox (оригинальный) | плагин приостановлен: апстрим заброшен |
| Shadowrocket | да, с апреля 2026 |
| Karing, ClashMi, husi, NyameBox | да |
| Clash Verge Rev, Mihomo Party | да |
Поддержка живёт в экосистеме Clash и mihomo плюс Shadowrocket на iOS. Всё, что вы сегодня раздаёте клиентам, в левой колонке.
История с Hiddify показательна: запрос на поддержку завели осенью 2024, мейнтейнер ответил «присылайте PR», PR никто не прислал, и через полтора года тикет закрылся вместе с сотнями других при массовой чистке перед релизом. Это не принципиальный отказ. Это отсутствие спроса, что для вас означает то же самое.
Панелей, которыми вы пользуетесь, нет
Ни 3x-ui, ни Marzban, ни Remnawave Mieru не поддерживают, и упирается это в устройство: они управляют ядром Xray, а Mieru живёт отдельным сервером mita и внутрь Xray не встраивается. Hiddify Manager ходит ещё и в sing-box, но Mieru там тоже нет.
Отдельные панели под сам Mieru существуют: например FJCrux/Imugi-Panel с пользователями, портами и QR-кодами в докере. Это маленькие проекты на единицы звёзд, живущие рядом с mieru, а не то, куда вы перенесёте свой сервис. Автор mieru на вопрос про свою панель отвечал, что от идеи не отказался, но спроса пока недостаточно.
Что это означает на практике:
- Подписок нет. Клиент получает настройки вручную или по ссылке
mieru://, которую вы ему отправляете лично. - Пользователи задаются списком в JSON-конфиге сервера. Сто клиентов — сто записей, которые вы правите руками.
- Учёта трафика в привычном виде нет. Есть простые квоты (столько-то мегабайт за столько-то дней) и всё.
- Продлений, автоотключений, статистики по нодам, единого списка устройств — ничего этого нет.
Сервис на пятьдесят клиентов на этом не построить. Хватит на пять.
Ещё три ограничения
Официальный клиент существует только как консольная программа. GUI не будет: автор сказал об этом прямо, режима TUN тоже нет. Сборка под android arm64 в релизах лежит, но это тот же консольный бинарник под Termux, а не приложение, которое можно дать клиенту.
Лицензия GPL-3.0 закрывает встраивание в закрытый коммерческий продукт.
Независимых замеров скорости нет вообще. Ни одного бенчмарка, сравнимого с тем, что есть для Shadowsocks или VLESS.
Где он всё-таки полезен
Личный резервный канал. Один сервер, один пользователь, вы сами и Shadowrocket на телефоне. Когда Reality на 443 начнут проверять активно, у вас останется канал, устроенный по другим принципам, и ломать его придётся отдельно.
Резерв для узкого круга. Три-пять человек, которых вы знаете лично и которым не жалко объяснить установку Karing.
Как встроить резервный протокол в архитектуру сервиса, разобрано в «Плане Б». Там же про то, почему резерв обязан лежать в отдельном скваде и не раздаваться всем подряд.
Другие резервные варианты, у которых с клиентами дела обстоят лучше, разобраны в «NaiveProxy и AmneziaWG».
Поднять за десять минут
Сервер только Linux, ставится пакетом deb или rpm и живёт как systemd-сервис.
# сервер
mita apply config server.json
mita start
mita describe config
# клиент
mieru apply config client.json
mieru start
mieru test
Клиент поднимает локальный SOCKS5 (по умолчанию порт 1080), в который вы направляете браузер или системный прокси.
Три вещи, без которых не заведётся:
- NTP на сервере. См. выше про четыре минуты.
- Совпадение портов и протокола в конфигах сервера и клиента. Диапазон должен совпадать целиком.
- Мультипорт сразу. Один порт закроется по объёму трафика, и вы будете искать причину в протоколе.
Вывод
Mieru стоит знать и держать в голове. Его инженерная идея честная: не притворяться HTTPS, а не иметь заметного вида вовсе. Проект живой, релизы выходят каждые две-четыре недели, автор отвечает в issues.
Продавать это сегодня нельзя, и упирается всё не в протокол. Ваши клиенты сидят в Happ и Hiddify, ваш учёт живёт в Remnawave, а Mieru не существует ни там, ни там. Появится поддержка в панели и в массовом клиенте — разговор изменится за неделю. Пока держите его как личный резерв.