# 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-подключение к удаленному серверу. |