Update
This commit is contained in:
137
README-RU.md
Normal file
137
README-RU.md
Normal 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`).
|
||||
Reference in New Issue
Block a user