Локальные политики
Локальные политики позволяют настраивать различные уровни пользователей и соответствующие им политики, например, настройки тайм-аута подключения.
Каждое соединение, обрабатываемое Xray, соответствует определенному пользователю, и к нему применяются политики в соответствии с уровнем пользователя (level).
PolicyObject
PolicyObject
соответствует полю policy
в конфигурационном файле.
{
"policy": {
"levels": {
"0": {
"handshake": 4,
"connIdle": 300,
"uplinkOnly": 2,
"downlinkOnly": 5,
"statsUserUplink": false,
"statsUserDownlink": false,
"statsUserOnline": 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
, включить учет входящего трафика для всех пользователей текущего уровня.
statsUserOnline
: true | false
Если значение равно true
, включить учет пользоватлей онлайн для всех пользователей текущего уровня по электронной почте.
bufferSize
: number
Размер внутреннего буфера для каждого запроса, в килобайтах. Обратите внимание, что несколько запросов могут мультиплексироваться по одному соединению (например, при использовании mux.cool
или GRPC). Это означает, что даже если они используют одно и то же базовое соединение, их пулы буферов являются независимыми.
Когда размер внутреннего буфера превышает это значение, данные из него будут отправляться до тех пор, пока размер буфера не станет меньше или равен указанному значению, и только после этого будет выполнена следующая операция записи.
Важно: для UDP-запроса, если при попытке записи буфер оказывается полным, операция записи не блокируется, а данные отбрасываются. Слишком низкое значение (или 0
) может привести к непредвиденной трате пропускной способности.
Значение по умолчанию:
- На платформах ARM, MIPS, MIPSLE значение по умолчанию -
0
. - На платформах ARM64, MIPS64, MIPS64LE значение по умолчанию -
4
. - На других платформах значение по умолчанию -
512
.
Значение по умолчанию можно переопределить с помощью переменной окружения XRAY_RAY_BUFFER_SIZE
. Обратите внимание, что для переменной окружения единицей измерения являются мегабайты (МБ) (например, установка значения 1
в переменной окружения эквивалентна установке 1024
в конфигурации).
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
, включить учет входящего трафика для всех исходящих подключений.