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 | (QUIC default) | | TBBR | B2ON | QBIC | RENO | 传给 quiche 栈的 QUIC 拥塞控制算法。接受四个四字母代码:TBBR(BBRv1)、B2ON(BBRv2)、QBIC(CUBIC)、RENO。 |
源码: option/naive.go:19-25 · 锚定版本 v1.13.11 (553cfa1)
该结构体内嵌 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 | (QUIC default) | | TBBR | B2ON | QBIC | RENO | 客户端侧的 QUIC 拥塞控制算法。 |
quic_session_receive_window | *byteformats.MemoryBytes | (stack default) | <bytes / MiB / GiB> | QUIC 单会话(非单流)流量控制窗口。 |
源码: option/naive.go:27-40 · 锚定版本 v1.13.11 (553cfa1)
同时内嵌 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": "B2ON",
"quic_session_receive_window": "16MiB",
"tls": {
"enabled": true,
"server_name": "example.com",
"alpn": ["h3", "h2", "http/1.1"]
}
}
]
}说明
- 四个拥塞控制代码是 quiche 栈使用的大小写敏感四字母标签:
TBBR—— BBR v1B2ON—— BBR v2QBIC—— CUBICRENO—— New 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:19-40 · v1.13.11 (553cfa1)
