241 lines
6 KiB
Markdown
241 lines
6 KiB
Markdown
# V2Ray Transport -- справочник полей
|
||
|
||
Целевая версия: sing-box 1.14.x
|
||
|
||
Доступные типы транспорта: HTTP, WebSocket, gRPC, HTTPUpgrade, QUIC.
|
||
xhttp (Xray-специфичный) НЕ поддерживается sing-box -- при его
|
||
обнаружении XrayFluent переключается в hybrid mode.
|
||
|
||
## WebSocket (ws)
|
||
|
||
### Структура
|
||
|
||
```json
|
||
{
|
||
"type": "ws",
|
||
"path": "/ws-path",
|
||
"headers": {},
|
||
"max_early_data": 0,
|
||
"early_data_header_name": ""
|
||
}
|
||
```
|
||
|
||
### Поля
|
||
|
||
#### path
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` |
|
||
|
||
HTTP-путь запроса. Сервер проверяет точное совпадение.
|
||
|
||
#### headers
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `object` |
|
||
|
||
Дополнительные HTTP-заголовки запроса. Сервер вернёт их в ответе, если указаны.
|
||
|
||
#### max_early_data
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `number` |
|
||
| По умолчанию | `0` |
|
||
|
||
Размер полезной нагрузки, отправляемой в запросе (early data). Включается, если значение не равно нулю.
|
||
|
||
#### early_data_header_name
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` |
|
||
|
||
По умолчанию early data отправляется в path. Для совместимости с Xray-core установите значение `"Sec-WebSocket-Protocol"`. Должно совпадать с сервером.
|
||
|
||
## HTTP
|
||
|
||
### Структура
|
||
|
||
```json
|
||
{
|
||
"type": "http",
|
||
"host": [],
|
||
"path": "/",
|
||
"method": "",
|
||
"headers": {},
|
||
"idle_timeout": "0s",
|
||
"ping_timeout": "15s"
|
||
}
|
||
```
|
||
|
||
**Примечание:** TLS не обязателен. Без настроенного TLS используется HTTP 1.1 в открытом виде.
|
||
|
||
### Поля
|
||
|
||
#### host
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string[]` |
|
||
|
||
Список доменов хоста. Клиент выбирает случайный, сервер проверяет при непустом списке.
|
||
|
||
#### path
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` |
|
||
|
||
HTTP-путь запроса. Сервер проверяет соответствие. V2Ray позволяет клиенту добавлять произвольный суффикс к path -- sing-box воспроизводит это поведение (только для HTTP, не для WebSocket/HTTPUpgrade).
|
||
|
||
#### method
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` |
|
||
|
||
HTTP-метод запроса. Сервер проверяет, если значение указано.
|
||
|
||
#### headers
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `object` |
|
||
|
||
Дополнительные HTTP-заголовки запроса.
|
||
|
||
#### idle_timeout
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` (duration) |
|
||
| По умолчанию | `"0s"` (проверка не выполняется) |
|
||
|
||
Период бездействия, после которого клиент отправляет PING-кадр для проверки соединения. При нулевом значении проверка не выполняется.
|
||
|
||
#### ping_timeout
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` (duration) |
|
||
| По умолчанию | `"15s"` |
|
||
|
||
Тайм-аут ожидания ответа на HTTP/2 PING. Если ответ не получен, соединение закрывается.
|
||
|
||
## gRPC
|
||
|
||
### Структура
|
||
|
||
```json
|
||
{
|
||
"type": "grpc",
|
||
"service_name": "TunService",
|
||
"idle_timeout": "15s",
|
||
"ping_timeout": "15s",
|
||
"permit_without_stream": false
|
||
}
|
||
```
|
||
|
||
**Примечание:** стандартный gRPC не включён в сборку sing-box по умолчанию. См. документацию по build-тегам.
|
||
|
||
### Поля
|
||
|
||
#### service_name
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` |
|
||
|
||
Имя gRPC-сервиса.
|
||
|
||
#### idle_timeout
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` (duration) |
|
||
| По умолчанию | `"15s"` |
|
||
|
||
Интервал keepalive. Если нет активности в течение указанного времени, отправляется проверочный пинг.
|
||
|
||
#### ping_timeout
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` (duration) |
|
||
| По умолчанию | `"15s"` |
|
||
|
||
Тайм-аут ожидания ответа на keepalive-пинг. Если ответ не получен, соединение закрывается.
|
||
|
||
#### permit_without_stream
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `bool` |
|
||
| По умолчанию | `false` |
|
||
|
||
Отправлять keepalive-пинги даже без активных соединений. Если выключено, `idle_timeout` и `ping_timeout` игнорируются при отсутствии потоков.
|
||
|
||
## HTTPUpgrade
|
||
|
||
### Структура
|
||
|
||
```json
|
||
{
|
||
"type": "httpupgrade",
|
||
"host": "",
|
||
"path": "/upgrade-path",
|
||
"headers": {}
|
||
}
|
||
```
|
||
|
||
### Поля
|
||
|
||
#### host
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` |
|
||
|
||
Домен хоста. Сервер проверяет, если значение указано.
|
||
|
||
#### path
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `string` |
|
||
|
||
HTTP-путь запроса. Сервер проверяет соответствие.
|
||
|
||
#### headers
|
||
|
||
| | |
|
||
|---|---|
|
||
| Тип | `object` |
|
||
|
||
Дополнительные HTTP-заголовки запроса.
|
||
|
||
## QUIC
|
||
|
||
### Структура
|
||
|
||
```json
|
||
{
|
||
"type": "quic"
|
||
}
|
||
```
|
||
|
||
### Заметки
|
||
|
||
Дополнительные поля отсутствуют -- указывается только тип. Шифрование QUIC дублирует TLS-шифрование протокола -- фактически трафик шифруется дважды.
|
||
|
||
## Не поддерживается
|
||
|
||
| Транспорт | Причина |
|
||
|-----------|---------|
|
||
| xhttp | Специфичен для Xray-core. При обнаружении XrayFluent переключается в hybrid mode (sing-box TUN + xray SOCKS). |
|
||
| TCP transport | В sing-box нет отдельного TCP-транспорта; plain HTTP объединён с HTTP-транспортом. |
|
||
| mKCP | Не реализован в sing-box. |
|
||
| DomainSocket | Не реализован в sing-box. |
|