72246f986a
Локальный debug-server и задеплоенный на DEV_IP systemd-сервис раньше использовали 4443/443 соответственно — развели их на общий 8443, чтобы не пересекаться с портами, занятыми другими дев-сервисами (например, Caddy на 443). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
35 lines
2.0 KiB
Markdown
35 lines
2.0 KiB
Markdown
# Крейт `server` — серверная часть прокси
|
|
|
|
Тонкая обвязка вокруг ядра ([`core`](../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`. |
|
|
|
|
## Жизненный цикл соединения (в ядре)
|
|
|
|
```text
|
|
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`).
|