Transport — sing-box
sing-box 的传输选项位于每个支持 TLS 的入站 / 出站内嵌的 transport 块。该块是 多态 的:type 字段选择五种传输变体之一,匹配的字段 子集生效。
json
"transport": { "type": "<ws|http|grpc|quic|httpupgrade>", ...variant fields }type: "ws"
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
path | string | / | /<path> | WebSocket 路径。 |
headers | badoption.HTTPHeader | {} | {<header>: <value or list>} | 附加 upgrade 请求头。 |
max_early_data | uint32 | 0 | <bytes> | WS 握手完成前缓冲的最大 0-RTT 早数据字节数。0 关闭。 |
early_data_header_name | string | Sec-WebSocket-Protocol | <header name> | 当服务端使用非标准头承载 base64 编码早数据时使用的 HTTP 头名。 |
源码: option/v2ray_transport.go:79-84 · 锚定版本 v1.13.11 (553cfa1)
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 连接。0 关闭。 |
ping_timeout | badoption.Duration | 0 | <duration> | HTTP/2 PING 探测响应超时。0 关闭 PING。 |
源码: option/v2ray_transport.go:70-77 · 锚定版本 v1.13.11 (553cfa1)
HTTP 传输默认走 HTTP/2。若在外层 TLS 块上设置 tls.alpn: ["h3"],则改走 HTTP/3。
type: "grpc"
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
service_name | string | (required) | <service path> | gRPC 服务名。 |
idle_timeout | badoption.Duration | 0 | <duration> | 空闲超时。0 关闭。 |
ping_timeout | badoption.Duration | 0 | <duration> | keepalive PING 超时。0 关闭 PING。 |
permit_without_stream | bool | false | true | false | 允许无活跃流时也发送 PING。 |
源码: option/v2ray_transport.go:88-94 · 锚定版本 v1.13.11 (553cfa1)
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:96-100 · 锚定版本 v1.13.11 (553cfa1)
示例
WebSocket + TLS:
json
{
"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:
json
{
"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/3(HTTP 传输走 h3):
json
{
"outbounds": [{
"type": "vless",
"server": "example.com",
"server_port": 443,
"uuid": "...",
"tls": {
"enabled": true,
"server_name": "example.com",
"alpn": ["h3"]
},
"transport": {
"type": "http",
"host": ["example.com"],
"path": "/h3",
"method": "PUT"
}
}]
}说明
- sing-box 不 提供独立的 SplitHTTP / XHTTP 传输。最接近的等价 是走 HTTP/3 的
type: "http"(设置tls.alpn: ["h3"]),可提 供大部分相同的反 DPI 特性。 idle_timeout: 0与ping_timeout: 0一起会完全禁用 keepalive PING。对位于 NAT 之后的长连接,建议设idle_timeout为"30s"之类,让底层 TCP 连接看到周期性活动。type: "http"的host字段是 列表。服务端用于 SNI 匹配 (任一值匹配即可);客户端每次请求随机选一个,便于按 Host 头路由 的上游负载均衡器。- WebSocket
early_data_header_name默认Sec-WebSocket-Protocol—— 与 V2Ray 使用的头一致。仅在上游代理剥离该头时才需覆盖。
跨内核说明
- Xray-core 使用
streamSettings.network+ 每个传输的*Settings块,并额外提供 sing-box 没有的 TCP、mKCP 与 SplitHTTP/XHTTP 变体。参见 Transport — Xray-core。 - mihomo 把传输设置按协议分散到每个 proxy 条目的
*-opts块。 参见 Transport — mihomo。
源码: option/v2ray_transport.go:70-100 · v1.13.11 (553cfa1)
