本文最后更新于 2026 年 5 月 14 日
本文以 Debian 13 为例,介绍如何使用 sing-box 搭建 NaiveProxy 兼容服务端,并在客户端使用 sing-box 的 naive outbound 连接。本文同样适用于 Ubuntu 24.04 及以上系统。
本方案有以下特点:
- 服务端与客户端均使用 sing-box,无需 Caddy、Nginx、HAProxy 或 Go 编译环境
- 使用 sing-box 内置 ACME DNS-01 自动申请和续签真实 TLS 证书,无需开放 TCP 80
- 服务端同时监听 TCP 443 与 UDP 443,支持 HTTP/2 与 HTTP/3;客户端默认使用 HTTP/3
- 两端均为 sing-box 时可启用 UDP over TCP,兼顾 UDP 应用兼容性
- DNS 记录使用 Cloudflare 托管时必须保持 DNS only / 灰云,不要开启橙云代理
注:请先参照 Debian & Ubuntu 服务器的初始化配置 一文对服务器进行各种必要的配置。本文以 sammy 用户为例,并默认已按初始化配置文章对服务器进行了配置。
背景与原理
整体架构
1 | 客户端 sing-box |
NaiveProxy 的设计目标是将代理流量伪装成普通浏览器与 Web 服务器之间的 HTTP/2 或 HTTP/3 流量。sing-box 的 naive inbound / outbound 实现了兼容 NaiveProxy 的服务端与客户端。
需要注意:sing-box 的 Naive inbound 是纯代理入口,没有 Caddy forwardproxy 那样的伪装站 fallback。浏览器直接访问 https://naive.example.com 不一定显示正常网页。若强依赖伪装站 fallback,需要另行评估 Caddy forwardproxy 或 HAProxy 方案;本文不使用它们。
关于 HTTP/3
本文默认客户端启用 HTTP/3 / QUIC:
1 | "quic": true |
HTTP/3 更接近现代 Chrome 访问大量网站时的网络行为,在移动网络、跨国链路或丢包网络下也可能表现更好。但 H3 依赖 UDP 443,如果本地网络或 VPS 商家对 UDP 限速、QoS 或阻断,表现可能不如 H2。遇到连接失败、速度波动或间歇性断流时,删除客户端中的 "quic": true 即可回退到 HTTP/2。
本方案不适用的场景
- 必须隐藏 VPS 真实 IP 的场景
- 必须通过 Cloudflare Tunnel / CDN 的场景
- 必须让浏览器直接访问代理域名显示伪装站的场景
- 无法开放公网 TCP 443 与 UDP 443 的 NAT VPS 场景