2026-10-14 · 协议科普 · 约 9 分钟

Trojan 协议科普:Shadowrocket 添加 Trojan 节点时的参数填写要点

介绍 Trojan 协议的工作方式,逐项说明在 Shadowrocket 中填写地址、端口、密码、SNI 与 Allow Insecure 时的注意事项。

本文速览

本文适合已经拥有自己有权使用的服务商配置、准备在 Shadowrocket 中添加 Trojan 连接的用户。先区分服务器地址、身份验证密码与 TLS 证书名称,再按 Home → 右上角「+」→ Type → Trojan 的顺序填写。读完可逐项核对参数,并根据连接错误判断应检查网络、证书还是密码,而不是反复切换 Allow Insecure。

Trojan 的工作方式:TLS 与密码分别负责什么

Shadowrocket(小火箭)是 Apple 平台上的付费客户端。本文讨论的是用户已有配置的填写与验证,不提供、不销售、不推荐节点、订阅或连接服务。客户端购买与连接服务相互独立,购买应用不会自动获得可用的服务器地址和密码。

常规 Trojan 连接先通过 TLS 建立加密通道,再在通道内发送身份验证信息和代理请求。TLS 负责保护传输内容,并通过证书核对服务器身份;Trojan 密码负责让服务端识别获准使用该连接的用户。这两个环节不能互相替代:密码正确不代表证书可以忽略,证书有效也不代表密码一定正确。

443
常见 TLS 监听端口,实际以已有配置为准
1–65535
Port 的有效数值范围,不代表任意端口均可连接
2 个环节
TLS 身份核对与 Trojan 密码验证

结论:先核对 TLS,再检查密码

出现证书或 TLS 握手错误时,先检查 Address、SNI、设备时间与证书有效性;只有 TLS 正常建立后,才进一步核对 Trojan 密码。不要用关闭证书验证替代参数核验。

Trojan 并不等于“只要填一个域名就能连接”。服务端可以使用不同端口,也可能要求特定传输方式。若已有配置额外给出 WebSocket、Host 或 Path,应完整保留对应设置;不要因为 Type 都是 Trojan,就把这些字段恢复成另一条连接的值。

参数对照:Address、Port、Password 与 SNI

填写前先取得一组完整且彼此对应的参数。不要把甲条连接的地址、乙条连接的密码和另一份配置的 SNI 拼在一起。下表中的域名与端口仅说明字段格式,不是可连接的服务信息。

字段 应填内容 核对重点
Type Trojan 按服务端协议选择,不用其他协议的字段规则替代。
Address 已有配置给出的域名或 IP 地址 仅填主机部分,例如 gateway.example.com;不要带 https:// 或网页路径。
Port 服务端实际监听的端口 443 只是常见值;若给出 8443,就保留 8443。
Password 该条 Trojan 连接的密码 区分大小写,检查首尾空格与换行,不填 App Store 账户密码。
SNI 已有配置指定的 TLS 服务器名称 例如 tls.example.com,不带协议前缀、端口或路径。
Allow Insecure 通常保持关闭 该开关涉及证书验证,不是连接失败时的通用修复项。

Address 决定向哪里发起网络连接,Port 决定访问该主机的哪个监听入口。Password 则是服务端提供的协议凭据,不必强行套用 UUID 格式。复制密码后可以核对字符数量和首尾字符,但不要把完整密码贴进公开求助内容。

添加步骤:从 Home 保存一条 Trojan 连接

以下步骤以手动填写为例。若用户已有订阅导入后的条目,优先对照原始参数检查,不必再次手动创建重复条目。订阅管理与单条连接编辑不是同一件事;修改本地条目后,后续订阅更新可能重新生成对应内容。

  1. 准备参数

    整理已有配置中的地址、端口、密码、SNI 与传输要求。先确认这些参数属于同一条 Trojan 连接,再开始填写。

  2. 选择协议

    打开 Home → 右上角「+」→ Type → Trojan。选定 Type 后,再填写该类型对应的字段,避免保留错误类型下的默认值。

  3. 填连接信息

    依次填写 Address、Port、Password。地址栏只放主机信息,端口栏只放数字,密码按原值复制,不自行进行编码或添加引号。

  4. 核对 TLS

    检查 TLS 相关设置中的 SNI 与 Allow Insecure。SNI 使用已有配置指定的名称;通常保留证书验证,并核对额外传输字段。

  5. 保存并验证

    保存后回到 Home,选中刚添加的条目,再开启连接。首次使用时按系统提示允许添加 VPN 配置,然后用正常网页请求验证,不以开关状态代替连通性检查。

验证前还应检查 Home → Global Routing。Proxy 便于暂时排除 Config 中分流规则的影响;Direct 不用于验证所选 Trojan 的代理转发;Config 会根据当前配置的规则决定请求去向;Scene 则需结合已设置的场景检查。测试结束后恢复日常使用的姿态,避免把一次排查用的设置长期保留下来。

SNI 与证书:连接地址不同不一定是错误

SNI 是 TLS 握手中发送的服务器名称,可用于服务端选择证书或对应的虚拟主机。常规配置通常让 SNI 与证书覆盖的域名相符。Address 与 SNI 经常相同,但二者用途不同,不能仅因它们不同就擅自改成一致。

例如,已有配置可能指定 Address 为某个 IP 地址,同时要求 SNI 使用证书对应的域名。此时客户端向 IP 地址连接,并在 TLS 握手中使用指定名称。反过来,随意填写一个与服务端证书无关的域名,也不会让证书验证自动通过。

如果同一份配置包含 WebSocket 的 Host 与 TLS 的 SNI,也应分别核对。前者属于 HTTP 请求相关信息,后者属于 TLS 握手,两者可能相同,但不是同一个字段。不要为了“看起来统一”而同时覆盖它们。

Allow Insecure:不要用跳过验证掩盖故障

Allow Insecure 通常用于允许不满足正常证书验证要求的 TLS 连接。开启后,即使流量仍可能经过加密,也不能把它等同于已经可靠确认服务器身份。加密与身份验证是两个要求,缺少后者会削弱对中间人干预的防护。

默认保留证书验证

遇到证书错误,先核对 SNI、设备时间、证书有效期和信任链。若配置说明明确依赖特殊证书,应先向该配置的维护方核实证书安排,而不是仅凭“打开后能连”认定配置正确。

排查时每次只修改一个字段,并记下原值。若同时更改 SNI、端口、密码与 Allow Insecure,即使随后可以访问,也无法确定真正原因。尤其不要把某条异常连接上的设置复制给所有 Trojan 条目。

连接失败排查:按故障层次逐项缩小范围

Home 显示连接已开启,只能说明本地连接流程已经启动,不能单独证明远端 Trojan 验证成功,也不能证明当前网页正在通过该条连接。先确认选中了正确条目,再结合错误信息与实际请求判断。下表是排查方向,不是对每一种错误的唯一解释。

可观察现象 优先检查 下一步操作
连接超时 地址解析、端口、网络路径与服务端状态 重新核对 Address 和 Port;在可用的另一种网络下重复同一请求,记录结果差异。
出现证书或 TLS 错误 SNI、设备时间与证书链 保留原始错误文字,核对名称后向配置维护方确认服务端证书。
握手后立即断开 Password、服务端验证与传输参数 重新复制密码,并逐项比对传输方式、Host、Path 等已有参数。
仅部分网站失败 Global Routing、规则命中与 DNS 临时用 Proxy 对照测试,再回到 Config 检查实际命中的规则。

在 Config 下,某个网站可能被 DOMAIN-SUFFIX 等域名规则指定为 DIRECT,也可能命中 IP-CIDR、GEOIP 或末尾的 FINAL 策略。因此,“该网站仍走直连”不能直接归因于 Trojan 参数错误。应先核对实际策略,再决定是否调整连接参数;规则问题与协议问题分开处理。

提交排查信息时,说明当前网络、所选 Global Routing 姿态、错误文字以及更改过的字段即可。遮去 Password、订阅链接中的令牌和其他个人连接凭据;截图或复制日志前也应检查这些内容。

常见问题:参数保存后仍需确认什么

端口一定要填 443 吗?

不是。进入 Home 中对应条目的编辑页面,按已有配置核对 Port。服务端若监听 8443,就填写 8443;把数字改成常见端口不会改变服务端的监听设置。

SNI 能不能直接填 Address?

只有已有配置和证书名称允许时才这样填。Address 是 IP 地址或与证书名称不同的域名时,应使用配置明确给出的 SNI,而不是机械复制 Address。

打开 Allow Insecure 后能连接,能长期保留吗?

先恢复验证,再核对 SNI、系统时间与证书链。这个现象提示需要调查证书验证环节,不足以说明服务端身份已经可信;应由配置维护方确认并处理原因。

订阅更新后,手改参数为什么变回去了?

订阅更新可能按远端内容重新生成条目。先核对用户自己已有订阅的原始参数与维护说明;若远端内容错误,应从配置来源修正,不要依赖反复修改本地字段。

切换网络后连接自动启动,怎样区分是不是故障?

检查 Settings → On Demand 的启用状态与已有条件,判断是否由自动连接触发。On Demand 控制连接启动时机,不会修正错误的 Trojan 密码或 SNI;应把自动启动与远端连接成功分别验证。

App Store 正版核对