本指南涵盖了 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)。

  1. 准备域名: 登录到 Cloudflare 账户,添加您的站点并确保其已激活。
  2. 配置 Cloudflare DNS (中转前):

    • 转到您域名的 DNS 菜单,添加一条 "A" 记录。
    • 类型: A
    • 名称: 您想要的子域名 (例如 sbwww)
    • IPv4 地址: 填写您服务器的IP地址 (可使用 sb ip 查看)。
    • 代理状态 (Proxy status): 必须暂时关闭 (云朵图标应为灰色,显示“仅限DNS”)。
    • 保存记录。
  3. 在服务器上配置 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 证书申请。
  4. 配置 Cloudflare SSL:

    • 返回 Cloudflare 仪表板,转到 SSL/TLS 菜单。
    • 将加密模式设置为 "Full (Strict)" (完全-严格)
    • (可选) 如果使用 gRPC 协议,请转到 网络 (Network) 菜单,并确保 gRPC 选项已开启。
  5. 开启 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 加密的流量。

  1. 在目标服务器 (服务器B) 上:

    • 确保已安装 sing-box,并已添加一个非TLS的配置 (例如 sb add tcp 233)。
    • 运行 sb info 查看并记下服务器B的 IP地址端口 (例如 233)。
  2. 在中继服务器 (服务器A) 上:

    • 确保已安装 sing-box 脚本。
    • 运行一键添加 "door" (中转) 的命令:
      sb add door
      
    • 按提示输入:
      • 中转端口 (Port): 您在服务器A上希望监听的端口 (或按回车键随机生成)。
      • 目标地址 (Remote Address): 输入服务器B的IP地址
      • 目标端口 (Remote Port): 输入您在第1步中记下的服务器B的端口 (例如 233)。
  3. 配置客户端:

    • 在您的客户端软件中,使用服务器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 参数。

  1. 使用 sb no-auto-tls 命令添加配置,例如:

    sb no-auto-tls vws sb.yourdomain.com
    
  2. 脚本将创建一个仅在本地 127.0.0.1 监听的 sing-box 服务,并禁用 Caddy。

  3. 运行 sb info tlssb debug tls 查看该服务实际监听的 本地端口 (port)路径 (path)

  4. 您现在需要手动配置您的 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.9sb 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

这个答案有帮助吗? 43 用户认为这很有用 (0 投票)