# Руководство по конфигурации 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"`).