|
|
# Локальные политики
|
|
|
|
|
|
Локальные политики позволяют настраивать различные уровни пользователей и соответствующие им политики, например, настройки тайм-аута подключения.
|
|
|
Каждое соединение, обрабатываемое Xray, соответствует определенному пользователю, и к нему применяются политики в соответствии с уровнем пользователя (level).
|
|
|
|
|
|
## PolicyObject
|
|
|
|
|
|
`PolicyObject` соответствует полю `policy` в конфигурационном файле.
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"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](#levelpolicyobject)}
|
|
|
|
|
|
Набор пар ключ-значение, где каждый ключ - это число в виде строки (требование JSON), например `"0"`, `"1"` и т.д. (кавычки обязательны).
|
|
|
Это число соответствует уровню пользователя.
|
|
|
Каждое значение - это [LevelPolicyObject](#levelpolicyobject).
|
|
|
|
|
|
::: tip
|
|
|
Теперь можно настроить уровень пользователя для каждого входящего и исходящего подключения.
|
|
|
Xray будет применять различные локальные политики в соответствии с фактическим уровнем пользователя.
|
|
|
:::
|
|
|
|
|
|
> `system`: [SystemPolicyObject](#systempolicyobject)
|
|
|
|
|
|
Политики уровня системы Xray.
|
|
|
|
|
|
### LevelPolicyObject
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"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` секунд.
|
|
|
|
|
|
::: tip
|
|
|
При просмотре веб-страниц можно установить `uplinkOnly` и `downlinkOnly` в `0`, чтобы ускорить закрытие соединений.
|
|
|
:::
|
|
|
|
|
|
> `statsUserUplink`: true | false
|
|
|
|
|
|
Если значение равно `true`, включить учет исходящего трафика для всех пользователей текущего уровня.
|
|
|
|
|
|
> `statsUserDownlink`: true | false
|
|
|
|
|
|
Если значение равно `true`, включить учет входящего трафика для всех пользователей текущего уровня.
|
|
|
|
|
|
> `bufferSize`: number
|
|
|
|
|
|
Размер внутреннего буфера для каждого соединения.
|
|
|
Измеряется в килобайтах.
|
|
|
Если значение равно `0`, внутренний буфер отключается.
|
|
|
|
|
|
Значение по умолчанию:
|
|
|
|
|
|
- На платформах ARM, MIPS, MIPSLE значение по умолчанию - `0`.
|
|
|
- На платформах ARM64, MIPS64, MIPS64LE значение по умолчанию - `4`.
|
|
|
- На других платформах значение по умолчанию - `512`.
|
|
|
|
|
|
### SystemPolicyObject
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
"statsInboundUplink": false,
|
|
|
"statsInboundDownlink": false,
|
|
|
"statsOutboundUplink": false,
|
|
|
"statsOutboundDownlink": false
|
|
|
}
|
|
|
```
|
|
|
|
|
|
> `statsInboundUplink`: true | false
|
|
|
|
|
|
Если значение равно `true`, включить учет исходящего трафика для всех входящих подключений.
|
|
|
|
|
|
> `statsInboundDownlink`: true | false
|
|
|
|
|
|
Если значение равно `true`, включить учет входящего трафика для всех входящих подключений.
|
|
|
|
|
|
> `statsOutboundUplink`: true | false
|
|
|
|
|
|
Если значение равно `true`, включить учет исходящего трафика для всех исходящих подключений.
|
|
|
|
|
|
> `statsOutboundDownlink`: true | false
|
|
|
|
|
|
Если значение равно `true`, включить учет входящего трафика для всех исходящих подключений.
|
|
|
|
|
|
|
|
|
|
|
|
|