sing-box 使用 Trojan 配置完整教程(跨平台)
sing-box 在 Windows、macOS、iOS、Android 上使用 Trojan 节点的完整教程:图形客户端与命令行两种用法,JSON 配置结构与 Trojan outbound 字段逐项解释,并附常见错误的处理方法。
操作步骤概览
下载 sing-box 或对应平台图形客户端
从 GitHub Releases 下载命令行版本,或在应用商店安装 SFA/SFI/SFM。
编写基础 JSON 配置
建立包含 inbounds、outbounds、route 三部分的 config.json 骨架。
填写 Trojan outbound
在 outbounds 中填入 type、server、server_port、password 与 tls 字段。
校验配置并启动
用 sing-box check 检查语法,再用 sing-box run 启动;图形客户端直接导入配置。
验证代理是否生效
通过本地代理端口访问网络,确认出口 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
参数解释
| 字段 | 示例 | 说明 |
|---|---|---|
| type | trojan | 出站协议类型,固定为 trojan |
| server | node1.example.com | 节点服务器域名或 IP |
| server_port | 443 | 节点端口,Trojan 常用 443 |
| password | your-password | 节点鉴权密码,与服务端严格一致 |
| tls.enabled | true | 启用 TLS,Trojan 必须开启 |
| tls.server_name | node1.example.com | TLS 握手声明的主机名,即 SNI |
tls.server_name 对应 SNI,是最容易被忽略的字段:服务方若要求 SNI 与服务器地址不同(例如中转场景),必须按其提供的值填写,否则握手会被服务端拒绝。官方文档还提供 tls.insecure(跳过证书验证)等可选项,除非服务方明确要求,保持默认关闭。
验证连接
除了上一节的出口 IP 检查,日志是 sing-box 最重要的诊断工具。命令行直接看终端输出,图形客户端在界面的日志页查看:连接正常时可以看到出站连接建立记录;出现 handshake failed、certificate 类字样则指向 TLS 层问题。需要更详细信息时,在配置中加入 "log": {"level": "debug"} 后重启。
常见错误与处理
- JSON 语法错误:
check报invalid 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 字段是否保留。