75 lines
5.9 KiB
Markdown
75 lines
5.9 KiB
Markdown
# 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).
|
||
|
||
## Основные компоненты
|
||
|
||
- `core/` — общая сетевая логика, кодек кастомного протокола и реализация AEAD-шифрования.
|
||
- `tlseng/` — движок формирования TLS-отпечатков (Fingerprinting Engine) для маскировки трафика под популярные браузеры.
|
||
- `client/` — локальный прокси-клиент (создает TUN-интерфейс, парсит пакеты и инкапсулирует их в туннель).
|
||
- `server/` — серверная часть, принимающая замаскированные TLS-соединения, маршрутизирующая кадры и выполняющая запросы во внешнюю сеть.
|
||
- `tools/` — набор утилит, включая логгер и `bindgen-tool` для генерации связующего кода (Kotlin bindings) под Android.
|
||
|
||
## Быстрый старт
|
||
|
||
### Требования
|
||
|
||
- **Rust** (latest stable)
|
||
- **cargo-ndk** (для кросс-компиляции под Android)
|
||
- **Linux:** Права `root` или настроенные `capabilities` (`cap_net_admin`, `cap_net_raw`) для создания виртуального сетевого интерфейса.
|
||
|
||
### Локальная разработка
|
||
|
||
Для запуска и отладки на локальной машине используйте команды:
|
||
|
||
```bash
|
||
# Запуск сервера локально (биндится на 0.0.0.0:4443)
|
||
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` | Сборка и локальный запуск сервера на порту 4443. |
|
||
| `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-подключение к удаленному серверу. |
|