ترابرد — sing-box
گزینههای ترابرد sing-box در بلوک transport تعبیهشده روی هر ورودی و خروجی توانمند به TLS قرار دارند. این بلوک چندریختی است: فیلد type یکی از پنج نوع ترابرد را انتخاب میکند، و زیرمجموعهٔ متناظر از فیلدها اعمال میشود.
"transport": { "type": "<ws|http|grpc|quic|httpupgrade>", ...variant fields }type: "ws"
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
path | string | / | /<path> | مسیر WebSocket. |
headers | badoption.HTTPHeader | {} | {<header>: <value or list>} | هدرهای درخواست ارتقاء اضافی. |
max_early_data | uint32 | 0 | <bytes> | حداکثر بایتهای دادههای اولیهٔ 0-RTT بافرشده پیش از تکمیل دستدهی WS. مقدار ۰ غیرفعال میکند. |
early_data_header_name | string | Sec-WebSocket-Protocol | <header name> | هدر HTTP حامل دادههای اولیهٔ کدشده با base64 وقتی سرور آن را زیر نامی غیراستاندارد انتظار دارد. |
منبع: option/v2ray_transport.go:94-99 · ثابتشده در v1.14.2 (af6e64c)
type: "http" (HTTP/2)
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
host | badoption.Listable[string] | [] | [<hostname>] | فهرست مقادیر هدر Host. سرور از فهرست برای تطبیق SNI استفاده میکند؛ کلاینت در هر درخواست یکی را بهطور تصادفی انتخاب میکند. |
path | string | / | /<path> | مسیر HTTP. |
method | string | PUT | <HTTP method> | روش HTTP. ترابرد استاندارد از PUT استفاده میکند تا کشها را دلسرد کند. |
headers | badoption.HTTPHeader | {} | {<header>: <value or list>} | هدرهای درخواست اضافی. |
idle_timeout | badoption.Duration | 0 | <duration> | سرور: کلاینتهای HTTP/2 که این مدت بیکار بمانند بسته میشوند (GOAWAY). کلاینت: پس از این مدت بدون دریافت هیچ فریمی، یک PING برای بررسی سلامت فرستاده میشود. 0 هر دو را غیرفعال میکند. |
ping_timeout | badoption.Duration | 15s | <duration> | کلاینت HTTP/2: مدت انتظار برای پاسخ PING پیش از بستن اتصال. 0 یعنی پیشفرض 15s؛ PING فقط وقتی idle_timeout تنظیم شده باشد فرستاده میشود. |
منبع: option/v2ray_transport.go:85-92 · ثابتشده در v1.14.2 (af6e64c)
وقتی بلوک TLS پیرامون فعال باشد، ترابرد HTTP از HTTP/2 استفاده میکند؛ TLS اجباری نیست و بدون آن ترابرد به HTTP/1.1 ساده بازمیگردد. حالت HTTP/3 وجود ندارد.
type: "grpc"
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
service_name | string | (required) | <service path> | نام سرویس gRPC. |
idle_timeout | badoption.Duration | 0 | <duration> | مهلت بیکاری. مقدار ۰ غیرفعال میکند. |
ping_timeout | badoption.Duration | 0 | <duration> | مهلت پینگ keepalive. مقدار ۰ PINGها را غیرفعال میکند. |
permit_without_stream | bool | false | true | false | اجازهٔ PINGها بدون جریان فعال. |
منبع: option/v2ray_transport.go:103-109 · ثابتشده در v1.14.2 (af6e64c)
type: "quic"
ساختار ترابرد QUIC هیچ فیلد رو به کاربر ندارد — فقط { "type": "quic" } است. تمام تنظیم QUIC در لایهٔ پروتکل اتفاق میافتد (Hysteria2 / TUIC پشتههای QUIC بومی خود را دارند).
type: "httpupgrade"
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
host | string | (server address) | <hostname> | هدر HTTP Host. |
path | string | / | /<path> | مسیر HTTP. |
headers | badoption.HTTPHeader | {} | {<header>: <value or list>} | هدرهای درخواست اضافی. |
منبع: option/v2ray_transport.go:111-115 · ثابتشده در v1.14.2 (af6e64c)
مثالها
WebSocket + TLS:
{
"outbounds": [{
"type": "vless",
"server": "example.com",
"server_port": 443,
"uuid": "...",
"tls": {
"enabled": true,
"server_name": "example.com"
},
"transport": {
"type": "ws",
"path": "/vl",
"headers": { "Host": "example.com" }
}
}]
}gRPC + REALITY:
{
"outbounds": [{
"type": "vless",
"server": "example.com",
"server_port": 443,
"uuid": "...",
"tls": {
"enabled": true,
"server_name": "www.cloudflare.com",
"utls": { "enabled": true, "fingerprint": "chrome" },
"reality": { "enabled": true, "public_key": "...", "short_id": "..." }
},
"transport": {
"type": "grpc",
"service_name": "GunService",
"idle_timeout": "60s",
"ping_timeout": "20s",
"permit_without_stream": true
}
}]
}HTTP/2 (ترابرد HTTP روی TLS):
{
"outbounds": [{
"type": "vless",
"server": "example.com",
"server_port": 443,
"uuid": "...",
"tls": {
"enabled": true,
"server_name": "example.com",
"alpn": ["h2"]
},
"transport": {
"type": "http",
"host": ["example.com"],
"path": "/h2",
"method": "PUT"
}
}]
}نکات
- sing-box ترابرد جداگانهٔ SplitHTTP / XHTTP عرضه نمیکند. نزدیکترین معادل
type: "http"است (HTTP/2 روی TLS)؛ ترابرد HTTP حالت HTTP/3 ندارد. - پینگهای keepalive فقط با
idle_timeoutکنترل میشوند:0(پیشفرض) هیچ پینگی نمیفرستد وping_timeout: 0فقط به معنای پیشفرض 15s است. برای اتصالات طولانیمدت پشت NAT،idle_timeoutرا روی چیزی مانند"30s"تنظیم کنید تا اتصال TCP زیرین فعالیت دورهای ببیند. - فیلد
hostدرtype: "http"یک فهرست است. سرور از آن برای تطبیق SNI استفاده میکند (هر مقدار تطبیق مییابد)؛ کلاینت در هر درخواست یکی را بهطور تصادفی انتخاب میکند، که وقتی متعادلکنندهٔ بار بالادست بر اساس هدر Host مسیریابی میکند مفید است. early_data_header_nameدر WebSocket بهطور پیشفرض رویSec-WebSocket-Protocolاست — همان هدری که V2Ray استفاده میکند. فقط زمانی بازنویسی کنید که پراکسی بالادست آن هدر را حذف میکند.
نکات بینهستهای
- Xray-core از
streamSettings.network+ یک بلوک per-transport*Settingsاستفاده میکند، با انواع TCP، mKCP و SplitHTTP/XHTTP که sing-box ندارد. بنگرید به ترابرد — Xray-core. - mihomo تنظیمات ترابرد را در میان بلوکهای per-protocol
*-optsدر هر ورودی پراکسی توزیع میکند. بنگرید به ترابرد — mihomo.
منبع: option/v2ray_transport.go:85-115 · v1.14.2 (af6e64c)
