Naive — sing-box
Naive 是一种 TCP/HTTP-mux 代理,旨在看起来像普通的 HTTPS 或 HTTP/3 流量。sing-box 实现了双端,并对内嵌的 quiche QUIC 栈的拥塞控制与流控窗口提供了直接旋钮。
入站
type: "naive":
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
users | []auth.User | [] | [{username, password}] | 可接受的用户。 |
network | NetworkList | (tcp+udp) | tcp | udp | | 限定为仅 TCP 或仅 UDP。 |
quic_congestion_control | string | bbr | bbr | cubic | reno | HTTP/3(QUIC)监听器的拥塞控制算法:bbr(默认;空值即 bbr)、cubic 或 reno。其他值会在启动时报错。 |
源码: option/naive.go:9-15 · 锚定版本 v1.14.2 (af6e64c)
该结构体内嵌 ListenOptions 与 InboundTLSOptionsContainer。必须 配置 TLS —— Naive 在线路上始终被 TLS 包裹。
出站
type: "naive":
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
username | string | (unset) | <string> | 上游代理鉴权用户名。 |
password | string | (unset) | <string> | 上游代理鉴权密码。 |
insecure_concurrency | int | 0 | <int> | 每条连接允许的并发 HTTP/2 流数。0 使用栈默认值。 |
extra_headers | badoption.HTTPHeader | {} | {<header>: <value or list>} | 每个请求附加的额外头。 |
stream_receive_window | *byteformats.MemoryBytes | (stack default) | <bytes / MiB / GiB> | 单流的流量控制窗口。接受 "4MiB" 这类带后缀字符串。 |
udp_over_tcp | *UDPOverTCPOptions | (disabled) | UDPOverTCPOptions | 当上游不支持 QUIC 数据报时,把 UDP 包包装在 Naive 的 TCP 风格流中。 |
quic | bool | false | true | false | 使用 HTTP/3(QUIC)作为传输替代 HTTP/2。服务端需同时支持两者以便客户端能正确回退。 |
quic_congestion_control | string | (stack default) | bbr | bbr2 | cubic | reno | quic 为 true 时客户端 QUIC 栈使用的拥塞控制算法:bbr(BBRv1)、bbr2、cubic 或 reno。空值保持栈的默认值;其他值会在启动时报错。 |
quic_session_receive_window | *byteformats.MemoryBytes | (stack default) | <bytes / MiB / GiB> | QUIC 单会话(非单流)流量控制窗口。 |
源码: option/naive.go:17-30 · 锚定版本 v1.14.2 (af6e64c)
同时内嵌 DialerOptions、ServerOptions 与 OutboundTLSOptionsContainer。
示例
入站(TLS 之上的 HTTP/2):
json
{
"inbounds": [
{
"type": "naive",
"tag": "naive-in",
"listen": "::",
"listen_port": 443,
"users": [{ "username": "alice", "password": "<password>" }],
"tls": {
"enabled": true,
"alpn": ["h2", "http/1.1"],
"certificate_path": "/etc/ssl/cert.pem",
"key_path": "/etc/ssl/key.pem"
}
}
]
}切换到 HTTP/3 并使用 BBRv2 拥塞控制的出站:
json
{
"outbounds": [
{
"type": "naive",
"tag": "naive-out",
"server": "example.com",
"server_port": 443,
"username": "alice",
"password": "<password>",
"quic": true,
"quic_congestion_control": "bbr2",
"quic_session_receive_window": "16MiB",
"tls": {
"enabled": true,
"server_name": "example.com",
"alpn": ["h3", "h2", "http/1.1"]
}
}
]
}说明
quic_congestion_control使用小写名称。出站(Cronet QUIC 客户端)接受bbr、bbr2、cubic与reno;入站(HTTP/3 监听器)接受bbr、cubic与reno,默认bbr。quiche 的四字母代码(TBBR、B2ON、QBIC、RENO)不被接受。stream_receive_window与quic_session_receive_window通过byteformats.MemoryBytes解析带后缀的字节字面量 ——"4MiB"、"16MiB"、"1GiB"。纯整数视为原始字节。insecure_concurrency是原始 Naive 客户端的实验性多流标志。超过约 8 后通常没有进一步加速效果,但会占用更多每连接内存。udp_over_tcp与 Shadowsocks / TUIC 变体形态相同 ——{enabled, version}。
跨内核说明
- Xray-core 不实现 Naive。参见 Naive — Xray-core。
- mihomo 不实现 Naive。参见 Naive — mihomo。
源码: option/naive.go:9-30 · v1.14.2 (af6e64c)
