本文适合已经拥有自己有权使用的服务商配置、准备在 Shadowrocket 中添加 Trojan 连接的用户。先区分服务器地址、身份验证密码与 TLS 证书名称,再按 Home → 右上角「+」→ Type → Trojan 的顺序填写。读完可逐项核对参数,并根据连接错误判断应检查网络、证书还是密码,而不是反复切换 Allow Insecure。
Trojan 的工作方式:TLS 与密码分别负责什么
Shadowrocket(小火箭)是 Apple 平台上的付费客户端。本文讨论的是用户已有配置的填写与验证,不提供、不销售、不推荐节点、订阅或连接服务。客户端购买与连接服务相互独立,购买应用不会自动获得可用的服务器地址和密码。
常规 Trojan 连接先通过 TLS 建立加密通道,再在通道内发送身份验证信息和代理请求。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 连接
以下步骤以手动填写为例。若用户已有订阅导入后的条目,优先对照原始参数检查,不必再次手动创建重复条目。订阅管理与单条连接编辑不是同一件事;修改本地条目后,后续订阅更新可能重新生成对应内容。
-
准备参数
整理已有配置中的地址、端口、密码、SNI 与传输要求。先确认这些参数属于同一条 Trojan 连接,再开始填写。
-
选择协议
打开 Home → 右上角「+」→ Type → Trojan。选定 Type 后,再填写该类型对应的字段,避免保留错误类型下的默认值。
-
填连接信息
依次填写 Address、Port、Password。地址栏只放主机信息,端口栏只放数字,密码按原值复制,不自行进行编码或添加引号。
-
核对 TLS
检查 TLS 相关设置中的 SNI 与 Allow Insecure。SNI 使用已有配置指定的名称;通常保留证书验证,并核对额外传输字段。
-
保存并验证
保存后回到 Home,选中刚添加的条目,再开启连接。首次使用时按系统提示允许添加 VPN 配置,然后用正常网页请求验证,不以开关状态代替连通性检查。
验证前还应检查 Home → Global Routing。Proxy 便于暂时排除 Config 中分流规则的影响;Direct 不用于验证所选 Trojan 的代理转发;Config 会根据当前配置的规则决定请求去向;Scene 则需结合已设置的场景检查。测试结束后恢复日常使用的姿态,避免把一次排查用的设置长期保留下来。
SNI 与证书:连接地址不同不一定是错误
SNI 是 TLS 握手中发送的服务器名称,可用于服务端选择证书或对应的虚拟主机。常规配置通常让 SNI 与证书覆盖的域名相符。Address 与 SNI 经常相同,但二者用途不同,不能仅因它们不同就擅自改成一致。
例如,已有配置可能指定 Address 为某个 IP 地址,同时要求 SNI 使用证书对应的域名。此时客户端向 IP 地址连接,并在 TLS 握手中使用指定名称。反过来,随意填写一个与服务端证书无关的域名,也不会让证书验证自动通过。
- 名称匹配:检查 SNI 是否拼写正确、是否被证书的有效名称覆盖;不要把网页完整 URL 填进此处。
- 有效时间:证书过期、尚未生效或设备日期明显错误,都可能导致验证失败。先核对设备系统时间。
- 信任链:名称正确不代表证书链完整。服务端证书链异常需要由配置维护方核查,改密码无法修复。
- 空值处理:没有提供 SNI 时,先核对原始配置的说明,不要猜测其他域名,也不要假定留空适用于所有连接。
如果同一份配置包含 WebSocket 的 Host 与 TLS 的 SNI,也应分别核对。前者属于 HTTP 请求相关信息,后者属于 TLS 握手,两者可能相同,但不是同一个字段。不要为了“看起来统一”而同时覆盖它们。
Allow Insecure:不要用跳过验证掩盖故障
Allow Insecure 通常用于允许不满足正常证书验证要求的 TLS 连接。开启后,即使流量仍可能经过加密,也不能把它等同于已经可靠确认服务器身份。加密与身份验证是两个要求,缺少后者会削弱对中间人干预的防护。
遇到证书错误,先核对 SNI、设备时间、证书有效期和信任链。若配置说明明确依赖特殊证书,应先向该配置的维护方核实证书安排,而不是仅凭“打开后能连”认定配置正确。
排查时每次只修改一个字段,并记下原值。若同时更改 SNI、端口、密码与 Allow Insecure,即使随后可以访问,也无法确定真正原因。尤其不要把某条异常连接上的设置复制给所有 Trojan 条目。
- 端口不通:先核对 Address、Port 与当前网络可达性,证书开关不会让未监听的端口开始工作。
- 密码不符:向原始配置核对 Password,放宽 TLS 验证不会改变服务端的身份验证结果。
- 证书不符:核对名称、时间与证书链,保留错误线索供配置维护方定位。
连接失败排查:按故障层次逐项缩小范围
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;应把自动启动与远端连接成功分别验证。