From 82eb41b64efa98bea521428114d627570c3005d1 Mon Sep 17 00:00:00 2001 From: Ivan Date: Fri, 26 Sep 2025 18:08:47 -0500 Subject: [PATCH] Update --- README-RU.md | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 2 + 2 files changed, 139 insertions(+) create mode 100644 README-RU.md diff --git a/README-RU.md b/README-RU.md new file mode 100644 index 0000000..ad1f458 --- /dev/null +++ b/README-RU.md @@ -0,0 +1,137 @@ +# **RNS-over-HTTP** + +Интерфейс Reticulum, который туннелирует трафик через стандартные HTTP/S POST-запросы. Это позволяет Reticulum работать в сетях, где разрешён только веб-трафик, эффективно обходя файрволы, DPI и другие ограничения. + +## **Обзор** + +RNS-over-HTTP создаёт двунаправленный транспортный уровень, используя простую клиент-серверную модель: + +* **Сервер**: Запускается на машине с публичным IP-адресом и прослушивает HTTP-запросы. + +* **Клиент**: Может находиться за файрволом или NAT, ему требуется только исходящий доступ в интернет. + +Клиент опрашивает сервер с помощью HTTP POST-запросов, отправляя любые исходящие данные в теле запроса и получая входящие данные в теле ответа. Это делает трафик похожим на обычную веб-активность. + +## **Как это работает** + +Интерфейс имитирует постоянное соединение, используя механизм, подобный long-polling: + +1. Клиент отправляет HTTP POST-запрос на сервер, помещая все ожидающие данные в тело запроса. +2. Сервер получает запрос. Он обрабатывает данные от клиента и немедленно отправляет обратно любые данные, находящиеся в очереди для клиента, в теле HTTP-ответа. +3. Клиент получает ответ и обрабатывает данные. +4. После короткого настраиваемого интервала опроса клиент повторяет процесс. + +Этот непрерывный цикл создаёт надёжный, хотя и с более высокой задержкой, канал связи. + +## **Особенности** + +* **Обход файрволов и DPI**: Туннелирует любой трафик через стандартные порты HTTP/S (80/443). + +* **Двунаправленная связь**: Полнодуплексная передача данных. + +* **Простая настройка**: Никаких сложных зависимостей, только Python и `requests`. + +* **Надёжность**: Автоматическое повторное подключение с экспоненциальной задержкой. + +* **Гибкость**: Поддерживает пользовательские размеры MTU и настраиваемые интервалы опроса. + +* **Совместимость с прокси**: Бесшовно работает за обратными прокси-серверами, такими как Caddy или Nginx. + +## **Начало работы** + +### **Требования** + +* Python 3.9 или новее + +* `pip` для установки пакетов + +### **Установка** + +1. **Установите библиотеку** `requests`**, если она ещё не установлена:** + + ```bash + pip install requests + ``` + +2. **Скачайте скрипт интерфейса:** Разместите `http_interface.py` в известном месте на клиентской и серверной машинах, например, в `~/.reticulum/interfaces/`. + +## **Конфигурация** + +Настройте `PipeInterface` в вашем файле `~/.reticulum/config` как на сервере, так и на клиенте. + +### **Конфигурация сервера** + +Сервер прослушивает входящие подключения от клиентов. + +```ini +[[HTTP Interface]] + type = PipeInterface + enabled = True + # Команда для запуска серверного скрипта. По умолчанию прослушивает все интерфейсы. + command = python3 /path/to/your/http_interface.py server --host 0.0.0.0 --port 8080 + # Необязательно: задержка перед перезапуском интерфейса в случае сбоя. + respawn_delay = 5 + name = HTTP Interface Server +``` + +### **Конфигурация клиента** + +Клиент подключается к публичному URL-адресу сервера. + +```ini +[[HTTP Interface]] + type = PipeInterface + enabled = True + # Команда для запуска клиентского скрипта. Укажите в --url адрес вашего сервера. + command = python3 /path/to/your/http_interface.py client --url http:// + # Необязательно: задержка перед перезапуском интерфейса в случае сбоя. + respawn_delay = 5 + name = HTTP Interface Client +``` + +## **Параметры командной строки** + +Вы можете настроить поведение скрипта с помощью этих аргументов: + +* `--mtu`: Максимальный размер пакета (Maximum Transmission Unit) в байтах (по умолчанию: `4096`). +* `--poll-interval`: Интервал опроса клиента в секундах (по умолчанию: `0.1`). +* `--verbose` или `-v`: Включить подробное отладочное журналирование. +* `--host`: Хост для прослушивания сервером (по умолчанию: `0.0.0.0`). +* `--port`: Порт для прослушивания сервером (по умолчанию: `8080`). +* `--disable-user-agent-check`: Отключить проверку User-Agent на сервере. + +## **Настройка обратного прокси-сервера (пример для Caddy)** + +### **Поддомен** + +```caddy +# Caddyfile для example.yourdomain.com +example.yourdomain.com { + reverse_proxy 127.0.0.1:8080 + header { + # Скрыть версию серверного ПО + -Server + # Запретить анализ MIME-типа + X-Content-Type-Options nosniff + } +} +``` + +### **Основной домен** + +```caddy +yourdomain.com { + reverse_proxy 127.0.0.1:8080 + header { + # Скрыть версию серверного ПО + -Server + # Запретить анализ MIME-типа + X-Content-Type-Options nosniff + } +} +``` +## **Соображения по безопасности** + +* **Используйте HTTPS**: Это помогает обойти некоторые файрволы и DPI, которые потенциально могут видеть данные Reticulum. + +* **Проверка User-Agent**: По умолчанию сервер проверяет заголовок `User-Agent` (`RNS-HTTP-Tunnel/1.0`). Это обеспечивает базовую защиту от веб-сканеров и случайного сканирования. Если вам нужно обойти сложные системы DPI, вы можете изменить этот заголовок в скрипте, чтобы имитировать обычный браузер, и отключить проверку на сервере (`--disable-user-agent-check`). \ No newline at end of file diff --git a/README.md b/README.md index 588e5ba..81f2d15 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # RNS-over-HTTP +[Русский](README-RU.md) + A Reticulum interface that tunnels traffic over standard HTTP/S POST requests. This allows Reticulum to operate on networks where only web traffic is permitted, effectively bypassing firewalls, DPI, and other restrictions. ## Overview