Files
netrunner-proxy/README.MD
T

75 lines
5.9 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).
## Основные компоненты
- `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-подключение к удаленному серверу. |