ostp/ostp-wiki/configuration_guide.md

6.5 KiB
Raw Blame History

Руководство по конфигурации OSTP (config.json)

Файл config.json является основным конфигурационным файлом для сервера, клиента и реле.

Ниже приведено подробное описание структуры для режима работы Server.


Полный пример конфигурации

{
  "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. Простая строка: Текст ключа доступа. Лимит трафика отсутствует.
    "my_secure_key"
    
  2. Объект с метаданными:
    • access_key (строка, обязательно): Текст ключа для подключения.
    • name (строка, опционально): Человекочитаемое описание клиента.
    • limit_bytes (число, опционально): Лимит трафика в байтах (загрузка + скачивание).

При достижении limit_bytes сессия клиента немедленно сбрасывается и подключение блокируется до обнуления счетчика или расширения лимита.


3. REST API Управления (api)

Используется для интеграции с панелью управления ostp-control.

  • 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").