Commit Graph

11 Commits

Author SHA1 Message Date
nineap 99a9eee908 Улучшить TLS-маскировку, ввести версионирование протокола, добавить тесты и нагрузочный инструмент
Маскировка:
- ChangeCipherSpec middlebox-compat запись после ClientHello/ServerHello —
  без неё последовательность типов TLS-записей отличала нас от настоящего
  браузера даже при идеальном JA3/JA4-отпечатке.
- SNI-aware stealth fallback: невалидный клиент проксируется на запрошенный
  им хост, а не всегда на один и тот же decoy — иначе активное зондирование
  с разными SNI на одном IP получало одинаковый ответ. Резолв только в
  публичные IP (защита от SSRF на внутреннюю сеть ноды через подставной SNI).
- Профиль браузера привязан к session_id, а не к номеру попытки реконнекта:
  раньше при нескольких быстрых ретраях с одного IP летели ClientHello
  Chrome→Edge→Firefox подряд — сама по себе аномалия для DPI.
- Бакетный паддинг Data/UdpData кадров вместо полного отсутствия паддинга;
  джиттер перед ServerHello вместо мгновенного детерминированного ответа.

Версионирование:
- PROTOCOL_VERSION в session_id ClientHello — сервер узнаёт версию клиента
  до отправки чего-либо и может включать версионно-зависимое поведение
  (сейчас — CCS) только для тех, кто его понимает. Позволяет катить будущие
  несовместимые изменения протокола без синхронного flag-day релиза.

Тесты (core, было 0):
- Round-trip тесты TLS-записей/hello-сообщений/кадров/кодека.
- Полный цикл хендшейка с реальным выводом ключей на обеих сторонах.
- Вся SSRF-защита (hostname/IP валидация, v4/v6).
- Интеграционные тесты по настоящему TCP: легитимный хендшейк и
  stealth-fallback на мусорный ClientHello.

tools/loadtest — нагрузочный тест поверх настоящего скомпилированного
netrunner-server (реальный процесс, метрики RSS/CPU из /proc) и настоящего
публичного клиентского API. Попутно найден и обойдён гоночный баг:
Connect-кадр в ClientHandler::connect() уходит через try_send ещё до того,
как поднимется хоть одна нога тунеля, и молча теряется при синтетической
нагрузке.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-06 18:05:10 +07:00
nineap 6cd4d001ad refactor: update tunnel MTU, optimize Frame parsing, and improve connection stability 2026-06-02 16:26:02 +07:00
nineap 9e29104828 AI FULL KILLSWITCH AND EXCEPTIONS 2026-04-30 14:28:15 +07:00
nineap dadf165da6 fixed dedadlocks and buffer changes 2026-03-31 10:34:15 +07:00
nineap b0dc3fc0a4 buf sizes changes and socks5 remove to rawcast 2026-03-26 15:50:41 +07:00
nineap 530568d27a buffer size changes and dns adds block 2026-03-17 16:21:05 +07:00
nineap 00a31dc0a7 remove apps to another repository 2026-03-11 21:33:25 +07:00
nineap 8d0eccdbc2 presave 2026-03-10 17:48:22 +07:00
nineap c9dfc681e8 mobile app web view 2026-03-10 00:40:39 +07:00
nineap 6f4dd88a8e renames and tauri app 2026-03-09 17:51:01 +07:00
nineap bf7d50bcef initial commit 2026-02-22 21:00:50 +07:00