Commit Graph

40 Commits

Author SHA1 Message Date
nineap cfcb1afcec Метрики /metrics для центрального Prometheus + генерация scrape-таргетов
--metrics-port (0.0.0.0, в отличие от --health-port — тот 127.0.0.1-only)
отдаёт netrunner_connections_active/total, netrunner_auth_validate_duration_seconds,
netrunner_auth_failures_total, netrunner_circuit_breaker_open. Тот же
hand-rolled HTTP-паттерн, что и health.rs — без HTTP-фреймворка ради
одного эндпоинта.

scripts/generate-prometheus-targets.mjs генерит список scrape-таргетов
из nodes.json — job update-observability-targets в deploy.yml гоняет
его при каждом деплое нод и заливает на VPS с данными
(netrunner-data/observability/targets/nodes.json), чтобы центральный
Prometheus не терял из виду ноды без ручной правки конфига.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-09 23:21:26 +07:00
nineap 40ddb0a0f6 Добавить опциональную авторизацию клиента и динамические лимиты трафика
Сервер получает флаги --require-auth/--backend-url (по умолчанию выключено,
поведение уже развёрнутых нод не меняется). Auth-кадр хендшейка расширен с
"session_id:leg_id" до "session_id:leg_id:token"; при включённом
--require-auth сервер валидирует токен через новый AuthValidator
(BackendClient к netrunner-backend, с кешем на 60с).

Muxer теперь ведёт монотонный учёт трафика сессии (переживает реконнект
ног — раньше total_bytes мог занижаться после переподключения) и раз в ~30с
отчитывается бэкенду; при превышении лимита сессия разрывается. Токен
клиента прокидывается через EngineConfig/TunnelConfig до Tauri-плагина
(desktop.rs + Android Kotlin-плагин).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-07 00:31:03 +07:00
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
Kirill 18cad76e38 refactor: improve networking layer with enhanced engine, muxer, and diagnostics
- Refactored connection engine with better state management
- Improved muxer with enhanced protocol handling
- Updated connection bridge and diagnostics
- Added new network constants and configuration options
- Enhanced session tracking and error handling
- Updated dependencies in Cargo.toml
2026-06-30 12:34:04 +07:00
nineap 38dfd588c1 warnings fix 2026-06-29 18:07:53 +07:00
nineap 47208853c9 diagnostics, recconections fix and bufferbloat fixes 2026-06-25 17:14:26 +07:00
nineap b6056b2a66 device to smoltcp [AI] 2026-06-25 14:00:00 +07:00
nineap 30a843d8a6 fixes warnings and bufferbloat problems 2026-06-25 13:36:40 +07:00
nineap 7fb40f6be1 smoltcp updates breaking changes fix 2026-05-02 21:02:30 +07:00
nineap 738fa8ca9b loggin update 2026-05-02 18:55:37 +07:00
nineap 6d3bc81a6e real rtt and new fixed smoltcp 2026-04-14 16:05:02 +07:00
nineap 11b810ad65 all unbounded and remove AI hallucinations 2026-04-12 15:14:42 +07:00
nineap 9233641e67 smoltcp update 2026-04-11 23:00:50 +07:00
nineap 732f55c01d updates muxer legs select, buf sizes and constantsa 2026-04-11 22:48:33 +07:00
Трапезников Кирилл Иванович c0c5943da7 buf size changes, update leg select, update client socket, set lowat 2026-04-10 20:52:41 +10:00
Трапезников Кирилл Иванович a503122ace bbr and buffers fixes 2026-04-10 15:00:14 +10:00
Трапезников Кирилл Иванович 11d2b4e1d9 split codec and dynamic tcp sockers 2026-04-10 11:27:38 +10:00
nineap aa66d93dbf buf sizes update and capacity change 2026-04-05 17:21:10 +07:00
nineap 780750171b buffers update, warning fixes, ghosts killed 2026-04-03 18:18:10 +07:00
nineap 71acb52386 logger creates file 2026-03-30 14:34:21 +07:00
nineap e39fa755db dash map in muxer 2026-03-21 20:27:02 +07:00
nineap c4c45564d3 blacklist for mobiles 2026-03-18 19:59:27 +07:00
nineap 530568d27a buffer size changes and dns adds block 2026-03-17 16:21:05 +07:00
nineap bf6e621f14 connection refactoring 2026-03-17 14:27:07 +07:00
nineap 7dbfaec60d 15 march works with app 2026-03-15 23:47:15 +07:00
nineap d4ffb90152 generate update 2 2026-03-13 11:54:59 +07:00
nineap e166f3261a generate update 2026-03-12 17:38:08 +07:00
nineap a391d0f43e presave before repo split 2026-03-11 21:26:08 +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 2069f1a62c fixes 2026-03-08 17:07:15 +07:00
nineap b1cc4c14f4 close to finish a tun/smoltcp 2026-03-07 20:17:49 +07:00
nineap 592005cbac cliet tun core 2026-03-05 19:55:05 +07:00
nineap 9cc9b75123 copy pasted socks tun 2026-03-05 12:18:07 +07:00
nineap 654d2af76e todo rewrite client 2026-03-04 14:28:10 +07:00
nineap 1f247073ca these changes don't work correctly 2026-03-02 22:13:17 +07:00
nineap 322dc5b6b0 update processes and code style 2026-03-01 17:49:58 +07:00
nineap 3590d1a435 base proxy ready 2026-03-01 14:24:53 +07:00
nineap bf7d50bcef initial commit 2026-02-22 21:00:50 +07:00