mirror of https://github.com/ospab/ostp.git
126 lines
6.6 KiB
Markdown
126 lines
6.6 KiB
Markdown
# Руководство по конфигурации OSTP (`config.json`)
|
||
|
||
Файл `config.json` является основным конфигурационным файлом для сервера, клиента и реле.
|
||
|
||
Ниже приведено подробное описание структуры для режима работы **Server**.
|
||
|
||
---
|
||
|
||
## Полный пример конфигурации
|
||
|
||
```json
|
||
{
|
||
"mode": "server",
|
||
"log_level": "info",
|
||
"listen": "0.0.0.0:50000",
|
||
"access_keys": [
|
||
"some_simple_key",
|
||
{
|
||
"access_key": "detailed_key_with_limit",
|
||
"name": "Рабочий Ноутбук",
|
||
"limit_bytes": 107374182400
|
||
}
|
||
],
|
||
"api": {
|
||
"enabled": true,
|
||
"bind": "127.0.0.1:9090",
|
||
"token": "7a3f8b2c4d9e0f1a2b3c4d5e6f7a8b9c"
|
||
},
|
||
"fallback": {
|
||
"enabled": false,
|
||
"listen": "0.0.0.0:443",
|
||
"target": "127.0.0.1:8080"
|
||
},
|
||
"reality": {
|
||
"enabled": false,
|
||
"dest": "www.microsoft.com:443",
|
||
"private_key": "...",
|
||
"pbk": "...",
|
||
"sid": "...",
|
||
"sni_list": ["www.microsoft.com"]
|
||
},
|
||
"outbound": {
|
||
"enabled": false,
|
||
"protocol": "socks5",
|
||
"address": "127.0.0.1",
|
||
"port": 9050,
|
||
"default_action": "proxy",
|
||
"rules": [
|
||
{
|
||
"domain_suffix": [".onion"],
|
||
"action": "proxy"
|
||
}
|
||
]
|
||
},
|
||
"debug": false
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## Описание разделов конфигурации
|
||
|
||
### 1. Основные параметры
|
||
- **`mode`** (строка): Режим работы. Возможные варианты: `"server"`, `"client"`, `"relay"`.
|
||
- **`log_level`** (строка): Уровень логирования. Варианты: `"debug"`, `"info"`, `"warn"`, `"error"`.
|
||
- **`listen`** (строка или массив строк): Порт и интерфейсы, на которых сервер слушает входящие UDP (и опционально TCP/UoT) соединения. Примеры:
|
||
- `"0.0.0.0:50000"` (все IPv4 интерфейсы)
|
||
- `["0.0.0.0:50000", "[::]:50000"]` (поддержка IPv4 и IPv6 одновременно)
|
||
- **`debug`** (логический): Включает подробное отладочное логирование протокола.
|
||
|
||
---
|
||
|
||
### 2. Ключи доступа (`access_keys`)
|
||
Раздел содержит массив ключей доступа. Поддерживается два формата записи (для обратной совместимости):
|
||
1. **Простая строка**: Текст ключа доступа. Лимит трафика отсутствует.
|
||
```json
|
||
"my_secure_key"
|
||
```
|
||
2. **Объект с метаданными**:
|
||
- `access_key` (строка, обязательно): Текст ключа для подключения.
|
||
- `name` (строка, опционально): Человекочитаемое описание клиента.
|
||
- `limit_bytes` (число, опционально): Лимит трафика в байтах (загрузка + скачивание).
|
||
|
||
При достижении `limit_bytes` сессия клиента немедленно сбрасывается и подключение блокируется до обнуления счетчика или расширения лимита.
|
||
|
||
---
|
||
|
||
### 3. REST API Управления (`api`)
|
||
Используется для программного управления сервером и интеграции с внешними панелями.
|
||
- **`enabled`** (логический): Включение встроенного веб-сервера API.
|
||
- **`bind`** (строка): Интерфейс и порт для прослушивания (например, `"127.0.0.1:9090"`).
|
||
- **`token`** (строка): Bearer-токен для авторизации администратора. Автоматически генерируется сервером при команде `ostp --init server`.
|
||
|
||
---
|
||
|
||
### 4. Встроенный TCP Fallback прокси (`fallback`)
|
||
Позволяет маскировать порт под веб-сервер при сканировании активными DPI-зондами.
|
||
- **`enabled`** (логический): Включить проксирование TCP.
|
||
- **`listen`** (строка): Порт прослушивания TCP/TLS (например, `"0.0.0.0:443"`).
|
||
- **`target`** (строка): Локальный веб-сервер (например, `"127.0.0.1:8080"` на nginx/caddy), куда будут пересылаться все обычные запросы (не-OSTP трафик).
|
||
|
||
---
|
||
|
||
### 5. Reality Маскировка (`reality`)
|
||
Реализует спецификацию XTLS-Reality для бесшовной маскировки трафика под легитимный TLS-сервер.
|
||
- **`enabled`** (логический): Включение маскировки.
|
||
- **`dest`** (строка): Целевой домен маскировки (например, `"www.microsoft.com:443"`).
|
||
- **`private_key`** (строка): Приватный ключ Reality сервера (X25519).
|
||
- **`pbk`** (строка): Публичный ключ Reality сервера.
|
||
- **`sid`** (строка, 8 байт hex): Идентификатор сессии.
|
||
- **`sni_list`** (массив строк): Разрешенные SNI заголовки от клиентов.
|
||
|
||
---
|
||
|
||
### 6. Правила маршрутизации (`outbound`)
|
||
Позволяет пересылать часть исходящего трафика клиентов через прокси-сервер (например, SOCKS5/TOR).
|
||
- **`enabled`** (логический): Включить исходящую маршрутизацию.
|
||
- **`protocol`** (строка): Протокол прокси. На данный момент поддерживается `"socks5"`.
|
||
- **`address`** (строка): Хост прокси-сервера.
|
||
- **`port`** (число): Порт прокси-сервера.
|
||
- **`default_action`** (строка): Действие для трафика, не попавшего под правила. Варианты: `"direct"` (напрямую с сервера) или `"proxy"` (через прокси).
|
||
- **`rules`** (массив объектов): Список правил перенаправления:
|
||
- `domain_suffix` (массив строк): Фильтрация по суффиксу домена.
|
||
- `ip_cidr` (массив строк): Фильтрация по IP подсетям.
|
||
- `action` (строка): Действие при совпадении (`"direct"` или `"proxy"`).
|