c4be0174bf
5 подряд неудач (5xx/сетевой сбой, не 4xx-отказ авторизации) открывают цепь на 10 секунд — fail-fast без похода в HTTP, пока control plane недоступен. Таймаут запроса — 5 секунд (раньше не было вообще). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Крейт server — серверная часть прокси
Тонкая обвязка вокруг ядра (core): принимает замаскированные
TLS-соединения, проверяет, что это валидный Netrunner-клиент, и проксирует трафик
во внешнюю сеть. Вся бизнес-логика — в ядре; здесь точка входа, листенер и
серверная диагностика.
Детали — в rustdoc:
cargo doc --open -p netrunner-server.
Файлы
| Файл | Роль |
|---|---|
src/main.rs |
CLI (--host/--port), логгер, tokio-рантайм, запуск. |
src/network.rs |
TCP-листенер; на каждое соединение спавнит ServerHandler. |
src/diagnostics.rs |
Логгер диагностики ядра → netrunner_diagnostics.jsonl. |
Жизненный цикл соединения (в ядре)
accept TCP → core::ServerHandler::run:
1. ClientHello → ServerHello (невалидный/чужой → stealth-fallback на ubuntu.com:443)
2. проверка auth-payload (неверный → отказ)
3. прицепить ногу к Muxer сессии и крутить TunnelEngine → проксировать к целям
Один общий SessionManager мультиплексирует несколько ног одной сессии на один
Muxer. Фоновая задача периодически делает health-check и печатает топологию.
Запуск и деплой
Локально: make debug-server (биндится на 0.0.0.0:8443). Релиз/деплой:
make build-server → make deploy-server (systemd-сервис на VPS, см.
server/netrunner-server.service и Makefile).