Локальные политики

Локальные политики позволяют настраивать различные уровни пользователей и соответствующие им политики, например, настройки тайм-аута подключения.
Каждое соединение, обрабатываемое Xray, соответствует определенному пользователю, и к нему применяются политики в соответствии с уровнем пользователя (level).

PolicyObject

PolicyObject соответствует полю policy в конфигурационном файле.

{
  "policy": {
    "levels": {
      "0": {
        "handshake": 4,
        "connIdle": 300,
        "uplinkOnly": 2,
        "downlinkOnly": 5,
        "statsUserUplink": false,
        "statsUserDownlink": false,
        "bufferSize": 4
      }
    },
    "system": {
      "statsInboundUplink": false,
      "statsInboundDownlink": false,
      "statsOutboundUplink": false,
      "statsOutboundDownlink": false
    }
  }
}

level: map{string: LevelPolicyObject}

Набор пар ключ-значение, где каждый ключ - это число в виде строки (требование JSON), например "0", "1" и т.д. (кавычки обязательны).
Это число соответствует уровню пользователя.
Каждое значение - это LevelPolicyObject.

Подсказка

Теперь можно настроить уровень пользователя для каждого входящего и исходящего подключения.
Xray будет применять различные локальные политики в соответствии с фактическим уровнем пользователя.

system: SystemPolicyObject

Политики уровня системы Xray.

LevelPolicyObject

{
  "handshake": 4,
  "connIdle": 300,
  "uplinkOnly": 2,
  "downlinkOnly": 5,
  "statsUserUplink": false,
  "statsUserDownlink": false,
  "bufferSize": 10240
}

handshake: number

Ограничение времени на установление соединения (рукопожатие).
Измеряется в секундах.
Значение по умолчанию - 4.
При обработке нового соединения входящим прокси, если время, затраченное на рукопожатие, превышает это значение, соединение разрывается.

connIdle: number

Ограничение времени простоя соединения.
Измеряется в секундах.
Значение по умолчанию - 300.
При обработке соединения входящим или исходящим прокси, если в течение времени connIdle не было передано никаких данных (включая исходящие и входящие данные), соединение разрывается.

uplinkOnly: number

Ограничение времени ожидания после закрытия исходящего канала соединения.
Измеряется в секундах.
Значение по умолчанию - 2.
Когда сервер (например, удаленный веб-сайт) закрывает исходящее соединение, исходящий прокси разрывает соединение через uplinkOnly секунд.

downlinkOnly: number

Ограничение времени ожидания после закрытия входящего канала соединения.
Измеряется в секундах.
Значение по умолчанию - 5.
Когда клиент (например, браузер) закрывает входящее соединение, входящий прокси разрывает соединение через downlinkOnly секунд.

Подсказка

При просмотре веб-страниц можно установить uplinkOnly и downlinkOnly в 0, чтобы ускорить закрытие соединений.

statsUserUplink: true | false

Если значение равно true, включить учет исходящего трафика для всех пользователей текущего уровня.

statsUserDownlink: true | false

Если значение равно true, включить учет входящего трафика для всех пользователей текущего уровня.

bufferSize: number

Размер внутреннего буфера для каждого соединения.
Измеряется в килобайтах.
Если значение равно 0, внутренний буфер отключается.

Значение по умолчанию:

  • На платформах ARM, MIPS, MIPSLE значение по умолчанию - 0.
  • На платформах ARM64, MIPS64, MIPS64LE значение по умолчанию - 4.
  • На других платформах значение по умолчанию - 512.

SystemPolicyObject

{
  "statsInboundUplink": false,
  "statsInboundDownlink": false,
  "statsOutboundUplink": false,
  "statsOutboundDownlink": false
}

statsInboundUplink: true | false

Если значение равно true, включить учет исходящего трафика для всех входящих подключений.

statsInboundDownlink: true | false

Если значение равно true, включить учет входящего трафика для всех входящих подключений.

statsOutboundUplink: true | false

Если значение равно true, включить учет исходящего трафика для всех исходящих подключений.

statsOutboundDownlink: true | false

Если значение равно true, включить учет входящего трафика для всех исходящих подключений.