Files
netrunner-proxy/README.MD
T
nineap 72246f986a Переключить дев-инстанс прокси на порт 8443
Локальный debug-server и задеплоенный на DEV_IP systemd-сервис раньше
использовали 4443/443 соответственно — развели их на общий 8443, чтобы не
пересекаться с портами, занятыми другими дев-сервисами (например, Caddy на 443).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-07 18:17:20 +07:00

83 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Netrunner Core
Netrunner Core — это высокопроизводительный сетевой комплекс, реализующий TLS-инкапсуляцию с мультиплексированием потоков для обхода сетевых ограничений. Система состоит из легковесного клиента (с поддержкой Android и Linux) и серверной части.
## Архитектура
Проект построен на следующих принципах:
- **Прозрачный перехват трафика:** Использование TUN-интерфейса и userspace сетевого стека (`smoltcp`) совместно с `tokio` для захвата и обработки TCP/UDP пакетов на сетевом уровне.
- **Мультиплексирование потоков:** Передача независимых кадров (Frames) внутри единого зашифрованного TLS-туннеля.
- **TLS-маскировка:** Имитация рукопожатия TLS 1.3 (ClientHello/ServerHello) для скрытия факта проксирования от систем DPI (Deep Packet Inspection).
- **Безопасность:** Кадры защищены надежным AEAD-шифрованием (ChaCha20-Poly1305) с контролем целостности через `auth_tag`.
- **Кроссплатформенность:** Ядро написано на Rust, компилируется под Linux и упаковывается через JNI/UniFFI для нативной интеграции в Android-приложения (Kotlin).
## Основные компоненты
Архитектура протокола в целом — в [ARCH.md](ARCH.md). У каждого логического блока
есть свой `README.MD` с картой файлов и ментальной моделью, а детали — в
inline-rustdoc (`cargo doc --open`).
- **`core/`** — ядро (платформо-независимая логика). Блоки:
- [`core/src/crypto/`](core/src/crypto/README.MD) — обмен ключами, HKDF, AEAD, auth-теги.
- [`core/src/nrxp/`](core/src/nrxp/README.MD) — протокол NRXP: формат кадра, кодек, TLS-мост.
- [`core/src/tlseng/`](core/src/tlseng/README.MD) — TLS-маскировка (JA3/JA4 fingerprinting).
- [`core/src/net/`](core/src/net/README.MD) — туннель, мультиплексор, движок, мосты, диагностика.
- [`core/src/rawcast/`](core/src/rawcast/README.MD) — локальный протокол сокет ⇄ кадр.
- **[`client/`](client/README.MD)** — VPN-клиент: [`net/`](client/src/net/README.MD) (userspace-стек) + [`tun/`](client/src/tun/README.MD) (TUN/маршрутизация) + FFI.
- **[`server/`](server/README.MD)** — серверная часть, принимающая замаскированные TLS-соединения и проксирующая трафик.
- **[`tools/`](tools/README.MD)** — логгер `netrunner-logger` и `bindgen` для Kotlin/Swift-биндингов.
## Быстрый старт
### Требования
- **Rust** (latest stable)
- **cargo-ndk** (для кросс-компиляции под Android)
- **Linux:** Права `root` или настроенные `capabilities` (`cap_net_admin`, `cap_net_raw`) для создания виртуального сетевого интерфейса.
### Локальная разработка
Для запуска и отладки на локальной машине используйте команды:
```bash
# Запуск сервера локально (биндится на 0.0.0.0:8443)
make debug-server
# Сборка клиента, выдача необходимых cap-прав и запуск
make debug-client
```
## Деплой сервера
Процесс развертывания серверной части полностью автоматизирован.
1. Укажите IP-адрес вашего сервера в `Makefile` (переменная `SERVER_IP`).
2. Выполните первоначальную настройку удаленной машины (установка зависимостей):
```bash
make setup-server
```
3. Соберите релизный бинарник:
```bash
make build-server
```
4. Отправьте бинарник на сервер и перезапустите systemd-сервис:
```bash
make deploy-server
```
## Команды Makefile
Для удобства управления жизненным циклом проекта предусмотрены следующие цели:
| Команда | Описание |
| :------------------- | :------------------------------------------------------------------------------------------------------ |
| `make debug-client` | Сборка клиента в режиме отладки, установка прав (`setcap`) и запуск. |
| `make debug-server` | Сборка и локальный запуск сервера на порту 8443. |
| `make build-android` | Кросс-компиляция `.so` библиотек для Android (arm64, armv7, x86, x86_64) и генерация Kotlin-биндингов. |
| `make build-server` | Сборка релизной версии сервера (`--release`). |
| `make setup-server` | Установка необходимых пакетов (`build-essential`, `libssl-dev`) на удаленном сервере. |
| `make deploy-server` | Остановка текущего сервиса, загрузка нового бинарника и конфигурации, старт через `systemctl`. |
| `make logs` | Подключение к серверу и просмотр логов сервиса `netrunner-server` в реальном времени (`journalctl -f`). |
| `make ssh` | Быстрое SSH-подключение к удаленному серверу. |