sing-box 使用 Trojan 配置完整教程(跨平台)

sing-box 在 Windows、macOS、iOS、Android 上使用 Trojan 节点的完整教程:图形客户端与命令行两种用法,JSON 配置结构与 Trojan outbound 字段逐项解释,并附常见错误的处理方法。

操作步骤概览

  1. 下载 sing-box 或对应平台图形客户端

    从 GitHub Releases 下载命令行版本,或在应用商店安装 SFA/SFI/SFM。

  2. 编写基础 JSON 配置

    建立包含 inbounds、outbounds、route 三部分的 config.json 骨架。

  3. 填写 Trojan outbound

    在 outbounds 中填入 type、server、server_port、password 与 tls 字段。

  4. 校验配置并启动

    用 sing-box check 检查语法,再用 sing-box run 启动;图形客户端直接导入配置。

  5. 验证代理是否生效

    通过本地代理端口访问网络,确认出口 IP 变化,并查看日志有无报错。

sing-box 是新一代通用代理内核,以单个可执行文件加一份 JSON 配置的方式运行,对 Trojan 的支持完整而且跨平台行为一致。使用它连接 Trojan 节点有两条路径:普通用户直接安装官方图形客户端(Android 的 SFA、iOS 的 SFI、macOS 的 SFM)导入配置;进阶用户在 Windows、macOS 或 Linux 上直接运行命令行版本。第一步都是拿到服务方提供的节点信息(地址、端口、密码、SNI),再按本文写出配置。

核心结论

  • sing-box 配置由 inbounds、outbounds、route 三大块组成,Trojan 节点写在 outbounds;
  • 图形客户端 SFA/SFI/SFM 免命令行,导入配置文件或远程配置地址即可;
  • 启动前先执行 sing-box check,九成配置问题在这一步就能定位;
  • 配置格式随版本变化,以官方文档对应版本为准,不要照抄过时教程。

支持环境

命令行版本覆盖 Windows、macOS、Linux(含路由器常见架构);图形客户端方面,SFA 通过 Google Play 或 GitHub 发布,SFI 上架 App Store(部分地区),SFM 通过 App Store 或官网发布。本文示例基于 1.11.x 版本。如果你偏好规则订阅生态更成熟的方案,可对比 Clash Meta 导入 Trojan 节点完整教程;更多客户端见 /clients/ 栏目。

下载来源说明

sing-box 的唯一官方发布渠道是 GitHub 仓库 SagerNet/sing-box 的 Releases 页面与各平台应用商店的官方条目,官方文档站为 sing-box.sagernet.org。第三方打包的「汉化版」「增强版」可能捆绑恶意代码,不要使用;渠道甄别方法详见网络代理客户端应该从哪里下载

导入 Trojan 节点

以下步骤与文首结构化步骤一致,命令行与图形客户端的差异会在各步骤中说明。

步骤 1:下载 sing-box 或对应平台图形客户端

命令行用户从 GitHub Releases 下载对应系统与架构的压缩包,解压得到 sing-box 可执行文件;桌面端放到任意目录即可,无需安装。移动端用户直接安装 SFA(Android)或 SFI(iOS,需对应地区账号),macOS 图形界面用户安装 SFM。

步骤 2:编写基础 JSON 配置

sing-box 的配置是一份 JSON 文件,核心是三个部分:inbounds 定义本地如何接收流量(如混合代理端口或 TUN),outbounds 定义流量的出口(你的 Trojan 节点),route 定义两者之间的分流规则。最小可用的骨架如下:

{
  "inbounds": [
    {
      "type": "mixed",
      "tag": "mixed-in",
      "listen": "127.0.0.1",
      "listen_port": 2080
    }
  ],
  "outbounds": [],
  "route": {}
}

这个入站会在本机开启 2080 端口,同时接受 HTTP 与 SOCKS 代理请求。

步骤 3:填写 Trojan outbound

把 Trojan 节点信息写入 outbounds 数组(示例值均为占位符,请替换为服务方提供的真实信息):

{
  "outbounds": [
    {
      "type": "trojan",
      "tag": "trojan-out",
      "server": "node1.example.com",
      "server_port": 443,
      "password": "your-password",
      "tls": {
        "enabled": true,
        "server_name": "node1.example.com"
      }
    }
  ]
}

字段含义见下文参数解释。tls.enabled 必须为 true,因为 Trojan 协议本身就构建在 TLS 之上,原理可参考 Trojan 协议如何通过 TLS 建立连接

步骤 4:校验配置并启动

命令行用户先做语法与字段检查,再启动:

sing-box check -c config.json
sing-box run -c config.json

check 通过说明 JSON 语法与字段名都合法;run 启动后终端会持续输出日志。图形客户端用户在 SFA/SFI/SFM 中新建配置,粘贴上述 JSON 或填入服务方提供的远程配置地址,然后点击启动;首次启动会请求创建 VPN(TUN)的系统授权,需要允许。

步骤 5:验证代理是否生效

将浏览器或系统代理指向 127.0.0.1:2080(TUN 模式无需设置),访问 IP 检测网站确认出口 IP 已变为节点地区;再打开一个平时无法直连的网站确认可用。命令行下也可以直接验证:

curl -x socks5h://127.0.0.1:2080 https://www.cloudflare.com/cdn-cgi/trace

参数解释

字段示例说明
typetrojan出站协议类型,固定为 trojan
servernode1.example.com节点服务器域名或 IP
server_port443节点端口,Trojan 常用 443
passwordyour-password节点鉴权密码,与服务端严格一致
tls.enabledtrue启用 TLS,Trojan 必须开启
tls.server_namenode1.example.comTLS 握手声明的主机名,即 SNI

tls.server_name 对应 SNI,是最容易被忽略的字段:服务方若要求 SNI 与服务器地址不同(例如中转场景),必须按其提供的值填写,否则握手会被服务端拒绝。官方文档还提供 tls.insecure(跳过证书验证)等可选项,除非服务方明确要求,保持默认关闭。

验证连接

除了上一节的出口 IP 检查,日志是 sing-box 最重要的诊断工具。命令行直接看终端输出,图形客户端在界面的日志页查看:连接正常时可以看到出站连接建立记录;出现 handshake failedcertificate 类字样则指向 TLS 层问题。需要更详细信息时,在配置中加入 "log": {"level": "debug"} 后重启。

常见错误与处理

  • JSON 语法错误:checkinvalid character 之类信息,多为缺逗号、多逗号或误加了注释(JSON 不支持注释)。按报错行号修正,或用编辑器的 JSON 校验功能。
  • 版本字段变更:sing-box 的配置格式随版本演进,例如 1.11 起旧式特殊 outbound 写法被移除、DNS 与路由字段多次调整。旧教程的配置在新版本上报「unknown field」时,以官方文档当前版本的字段说明为准逐项替换。
  • TUN 权限不足:TUN 入站需要管理员(Windows)或 root/系统授权(macOS、移动端),权限不足时报创建接口失败。桌面端以管理员身份运行,或改用本文示例的 mixed 入站配合系统代理。
  • 节点握手失败:核对密码与 tls.server_name,并确认系统时间自动同步;仍失败时按 Trojan TLS 握手失败怎么处理排查。

更新与卸载

命令行版本更新即下载新版本可执行文件替换旧文件,注意阅读版本发布说明中的配置变更提示,大版本升级前先用 check 验证旧配置;图形客户端通过应用商店或 GitHub Releases 更新。卸载时删除可执行文件与配置文件即可,移动端卸载应用后系统 VPN 配置会一并移除。

安全提示

配置文件中的 password 与订阅地址等同于服务凭证,不要提交到公开仓库或粘贴到群组;保存与备份的注意事项见如何安全保存订阅链接和配置文件tls.insecure 保持关闭,只信任来自官方渠道的安装包与更新。

常见问题

sing-box 和 Clash 内核(mihomo)该选哪个?
两者都能稳定使用 Trojan 节点。mihomo 使用 YAML 配置、订阅生态成熟,适合希望开箱即用的用户;sing-box 使用 JSON 配置、协议覆盖更广、跨平台行为一致,适合愿意理解配置结构的用户。已有大量 Clash 订阅的用户不必强行迁移。
sing-box 的图形客户端为什么叫 SFA、SFI、SFM?
它们是官方图形客户端在各平台的名称缩写:SFA 对应 Android(sing-box for Android),SFI 对应 iOS(sing-box for iOS),SFM 对应 macOS。三者都内置 sing-box 内核,导入配置文件或远程配置地址即可使用,无需手动运行命令行。
配置文件明明照抄了示例,启动还是报错怎么办?
先用 sing-box check -c config.json 做语法检查,定位到具体行号。最常见的三类问题是:JSON 少了逗号或多了注释、字段名与当前版本不匹配(旧教程字段可能已被移除)、TUN 模式缺少管理员或 root 权限。逐项对照官方文档当前版本的字段说明即可解决。
sing-box 能直接用现有的订阅链接吗?
取决于订阅格式。部分服务方直接提供 sing-box 格式的 JSON 订阅,SFA/SFI/SFM 中填入该地址即可;若服务方只提供 Clash 或通用格式订阅,需要经转换工具生成 sing-box 配置,或使用支持格式转换的客户端。转换时注意核对 Trojan 节点的 SNI 字段是否保留。

参考资料

本文最后更新于 。如发现内容过时,欢迎通过联系页面反馈。

本文由 Trojan Lab 技术审核组 审核,采编标准见编辑政策