This commit is contained in:
2025-09-26 18:08:47 -05:00
parent c57f9a84af
commit 82eb41b64e
2 changed files with 139 additions and 0 deletions

137
README-RU.md Normal file
View File

@@ -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://<your-server-ip-or-domain>
# Необязательно: задержка перед перезапуском интерфейса в случае сбоя.
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`).

View File

@@ -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