Files
netrunner-proxy/server
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
..

Крейт 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-servermake deploy-server (systemd-сервис на VPS, см. server/netrunner-server.service и Makefile).