本指南涵盖了 233boy/sing-box 脚本的一些高级功能,包括流量转发(CDN中转和服务器中继)、TLS 证书管理和自定义 DNS 设置。
1. 准备工作:安装 Wget
在执行任何安装脚本之前,您必须确保您的服务器上已安装 wget 工具。
-
对于 Debian / Ubuntu 系统:
sudo apt update && sudo apt install wget -y -
对于 CentOS / RHEL 系统:
sudo yum install wget -y
2. 流量转发 (Traffic Forwarding)
在某些情况下,您可能不希望直接连接到服务器。流量转发主要有两种应用场景:
2.1. CDN 中转 (使用 Cloudflare)
此方法通过 Cloudflare 的全球 CDN 网络中转流量,可以隐藏您服务器的真实IP,或拯救已无法直连的IP。请注意,这可能会导致连接速度变慢。
要求: 您必须拥有一个域名,并使用支持 TLS 的协议 (如 WSS, H2, HTTPUpgrade)。
- 准备域名: 登录到 Cloudflare 账户,添加您的站点并确保其已激活。
-
配置 Cloudflare DNS (中转前):
- 转到您域名的 DNS 菜单,添加一条 "A" 记录。
- 类型:
A - 名称: 您想要的子域名 (例如
sb或www) - IPv4 地址: 填写您服务器的IP地址 (可使用
sb ip查看)。 - 代理状态 (Proxy status): 必须暂时关闭 (云朵图标应为灰色,显示“仅限DNS”)。
- 保存记录。
-
在服务器上配置 sing-box:
- 确保 sing-box 脚本已安装。
- 运行命令,添加一个与您的域名匹配的 TLS 配置。域名必须与您在第2步中创建的DNS记录完全一致。
# 示例:添加 vmess-ws-tls sb add wss sb.yourdomain.com # 示例:添加 vless-ws-tls sb add vws sb.yourdomain.com - 脚本将使用 Caddy 自动处理 TLS 证书申请。
-
配置 Cloudflare SSL:
- 返回 Cloudflare 仪表板,转到 SSL/TLS 菜单。
- 将加密模式设置为 "Full (Strict)" (完全-严格)。
- (可选) 如果使用 gRPC 协议,请转到 网络 (Network) 菜单,并确保 gRPC 选项已开启。
-
开启 Cloudflare 中转:
- 返回 Cloudflare 的 DNS 菜单。
- 找到您在第2步中创建的 "A" 记录,点击 "编辑"。
- 将 代理状态 (Proxy status) 打开 (云朵图标应变为橙色,显示“已代理”)。
- 保存。您的流量现在将通过 Cloudflare 中转。
(高级) 获取真实客户端IP:
启用中转后,服务器日志将只显示 Cloudflare 的IP。如需获取真实IP,您需要修改 Caddy 配置文件 (位于 /etc/caddy/233boy/您的域名.conf),在 reverse_proxy 块中添加 header_up 指令:
# 示例配置
xxx:443 {
reverse_proxy /your-path 127.0.0.1:2333 {
header_up X-Real-IP {header.CF-Connecting-IP}
header_up X-Forwarded-For {header.CF-Connecting-IP}
}
import /etc/caddy/233boy/xxx.conf.add
}
修改后,运行 sb restart caddy 重启 Caddy。
2.2. 服务器中继 (Direct / "door")
此方法用于 服务器A -> 服务器B 的中继转发,以改善网络路由。它仅适用于转发 TCP 或 UDP 流量,不能用于转发已 TLS 加密的流量。
-
在目标服务器 (服务器B) 上:
- 确保已安装 sing-box,并已添加一个非TLS的配置 (例如
sb add tcp 233)。 - 运行
sb info查看并记下服务器B的 IP地址 和 端口 (例如233)。
- 确保已安装 sing-box,并已添加一个非TLS的配置 (例如
-
在中继服务器 (服务器A) 上:
- 确保已安装 sing-box 脚本。
- 运行一键添加 "door" (中转) 的命令:
sb add door - 按提示输入:
- 中转端口 (Port): 您在服务器A上希望监听的端口 (或按回车键随机生成)。
- 目标地址 (Remote Address): 输入服务器B的IP地址。
- 目标端口 (Remote Port): 输入您在第1步中记下的服务器B的端口 (例如
233)。
-
配置客户端:
- 在您的客户端软件中,使用服务器B的配置信息 (例如 UUID、协议等)。
- 将 IP/地址 更改为 服务器A的IP地址。
- 将 端口 更改为 服务器A上设置的中转端口。
3. TLS 配置管理
233boy/sing-box 脚本默认使用 Caddy 自动管理 TLS,但也支持手动配置。
3.1. 自动 TLS (Caddy)
当您使用 sb add wss ... 等命令添加 TLS 配置时,脚本会自动调用 Caddy 来申请和续签 Let's Encrypt 证书。
- Caddy 配置目录:
/etc/caddy - 脚本自动配置目录:
/etc/caddy/233boy - Caddy 证书目录:
/root/.local/share/caddy/certificates/
如何自定义 Caddy 配置:
在 /etc/caddy/233boy 目录中,每个域名对应两个文件:域名.conf 和 域名.conf.add。请不要直接修改 .conf 文件。如果您需要添加自定义 Caddy 指令 (例如 Gzip、Header 等),请将其添加到 .conf.add 文件中,然后运行 sb restart caddy 重启 Caddy 服务。
注意: 如果您使用 sb web 命令更改伪装网站,.conf.add 文件内容可能会被重置。
3.2. 手动 TLS (使用 no-auto-tls)
如果您已经在服务器上运行了 NGINX 或其他 Web 服务器,并希望由它们来处理 TLS,您可以使用 no-auto-tls 参数。
-
使用
sb no-auto-tls命令添加配置,例如:sb no-auto-tls vws sb.yourdomain.com -
脚本将创建一个仅在本地 127.0.0.1 监听的 sing-box 服务,并禁用 Caddy。
-
运行
sb info tls或sb debug tls查看该服务实际监听的 本地端口 (port) 和 路径 (path)。 -
您现在需要手动配置您的 NGINX 或其他 Web 服务器:
- 配置
sb.yourdomain.com的 SSL 证书。 - 将来自
/path的流量proxy_pass(反向代理) 到127.0.0.1:port。
- 配置
使用此方法,您将完全负责 TLS 证书的申请、续签和 Web 服务器的配置。
4. DNS 设置 (sing-box 核心)
您可以使用 sb dns 命令来配置 sing-box 核心在服务器端使用的 DNS 解析器,这有助于保护隐私 (使用 DoH) 或实现特定策略。
sb dns:显示交互式菜单。sb dns gg:快速设置为 Google DNS (DoH)。sb dns cf:快速设置为 Cloudflare DNS (DoH)。sb dns nosex:快速设置为 Cloudflare Family DNS (DoH),可阻止成人内容。sb dns set [IP 或 DoH 地址]:自定义 DNS。例如sb dns set 9.9.9.9或sb dns set https://dns.adguard-dns.com/dns-query。sb dns none:重置设置,让 sing-box 使用服务器的系统默认 DNS。
引用来源 (Reference Source):
本文内容基于并重写自
233boy/sing-box项目的官方文档。如需最完整的功能列表和高级用法,请参阅项目源。
* Github 项目地址:https://github.com/233boy/sing-box