Shadowrocket 添加 Trojan 节点:协议原理与 Address、Port、Password、SNI 填写要点

Trojan 基于 TLS 设计。本文先讲协议原理,再说明在 Add Server 中填写 Address、Port、Password、SNI 与证书校验选项时的常见错误。

本文速览

本文适合已经持有服务参数、准备在 Shadowrocket 中添加 Trojan 连接的用户。先区分网络地址、TLS 身份与协议凭据,再按 Add Server 的字段完成填写,最后用分层检查定位连接超时、证书报错与连接后无法访问的问题。示例域名与密码均为说明用假值,不能用于连接。

Trojan 原理:TLS 连接与 Password 认证分别负责什么

Shadowrocket(小火箭)中的 Trojan 类型用于连接与其协议相匹配的服务端。常规 Trojan 连接先建立到服务器的 TCP 连接,再进行 TLS 握手;TLS 通道建立后,客户端才会发送 Trojan 协议认证与目标请求。TLS 负责传输保护和服务端身份校验,Password 负责协议层认证,两者不能互相替代。

地址解析 TCP 连接 TLS 握手 协议认证 目标转发

Address 指向实际连接的服务器,Port 指定其监听端口。SNI 在 TLS 握手中告知服务器期望访问的主机名;证书校验还需要验证证书信任链、有效期与主机名是否符合要求。因此,地址能够连通,不等于 TLS 校验通过;TLS 校验通过,也不等于 Password 正确。

本文以常规 Trojan over TLS 为基础。如果已有参数额外指定 WebSocket、Host 或 Path,应逐项遵循服务端配置,不要把本文的基础示例直接覆盖到原配置中。仅更改 Type,不会把其他协议的服务端转换成 Trojan 服务端。

443
常见 TLS 监听端口,不是固定要求
1–65535
Port 的有效数值范围
4 项
先核对 Address、Port、Password、SNI

填写前准备:分开保存连接参数与 TLS 参数

以下内容以用户已有自己的服务商与订阅为前提。本站不提供、不销售、不推荐节点或订阅。开始前应取得完整参数,而不是仅凭一个服务器地址推测其余字段。密码、订阅链接与完整分享链接都可能包含访问凭据,不应放入公开截图或排错记录。

基础连接示例

Type
Trojan
Address
edge.example.com
Port
443
Password
demo-only-not-valid

以上均为说明用假值;实际填写用户已有参数。

TLS 核对示例

SNI
tls.example.com
证书身份
证书名称需覆盖用于校验的主机名
证书信任
信任链与有效期需要通过校验
Allow Insecure
如有此选项,正常使用保持关闭

SNI 与 Address 可以不同,但差异必须有服务端配置依据。

如果 Address 是 IP 地址,而服务端使用域名证书,通常仍需按提供的参数填写对应域名作为 SNI。不要把 IP 地址直接复制进 SNI 来“保持一致”,也不要随意换成一个常见网站域名。该名称既要符合服务器的 TLS 配置,也要与证书身份核对要求一致。

Add Server 操作:先填写,再保存并选中连接

在 Shadowrocket 中,Home 用于管理与选择连接,Config 用于配置文件和规则,Settings 用于应用设置。添加单个 Trojan 连接应从 Home 的添加入口进入 Add Server,而不是把 Address 或 Password 写入 Config 的规则列表。

  1. 打开 Home,点击右上角添加按钮进入 Add Server,将 Type 设为 Trojan。
  2. 按原始参数填写 Address 与 Port。若原始信息把地址写成“主机名:端口”,应拆分到两个字段。
  3. 填写 Password。这里使用服务端给出的 Trojan 密码,不是 App Store 购买凭据,也不是证书文件内容。
  4. 检查 TLS 相关设置,按原始参数填写 SNI;若页面显示 Allow Insecure,正常使用保持关闭。额外传输选项也应与服务端一致。
  5. 保存后返回 Home,选中刚添加的连接,再开启连接开关。首次出现系统 VPN 配置授权提示时,核对应用后完成授权。
  6. 检查 Global Routing,再访问一个明确需要经过该连接的目标,记录访问结果与错误信息。

若通过已有订阅导入,先检查导入后的 Type、Address、Port 与 TLS 参数是否完整。订阅更新可能重新写入其管理的条目;临时排错前应记录修改项,并区分“本地手动修改”与“订阅源返回的值”。不要依赖修改订阅条目的方式长期修正源端错误。

字段与错误现象:按失败阶段检查,不凭延迟判断

连接测试结果只反映测试目标与测试方法下的表现。出现一个延迟数值,不代表所有目标都能访问,也不能证明认证、DNS 与规则全部正确。排错时先记下失败发生的阶段,再检查对应字段;下表描述的是常见线索,不是错误与原因的一一对应关系。

字段或阶段常见现象优先检查
Address主机名无法解析,尚未建立连接域名拼写、当前网络 DNS、是否误带 URL 路径
Port / TCP连接超时或被拒绝实际监听端口、网络可达性、服务器是否接受连接
SNI / TLS证书名称不匹配或 TLS 握手失败SNI、证书覆盖名称、服务端 TLS 配置及设备时间
Password连接建立后请求失败或很快关闭密码大小写、空白字符,以及服务端认证记录
规则与目标部分网站正常,特定目标无法访问Global Routing、命中策略、目标 DNS 与目标自身状态

结论:证书报错先核对 SNI,不用跳过校验代替修复

看到证书名称不匹配时,先将 SNI 与服务端给出的证书域名逐字比对;看到有效期错误时,检查设备日期与证书状态。不要用开启 Allow Insecure 作为长期解决办法。

跳过证书验证会削弱服务端身份确认,不能修复错误端口、错误密码或不可达的服务器。即使关闭验证后现象变化,也只说明排查方向可能涉及 TLS 身份校验,不能据此确认连接安全。需要使用自定义信任材料的环境,应由服务管理方提供可核对的配置说明。

连接后仍无法访问:区分 Global Routing 与 Trojan 参数

Trojan 参数决定如何连接选中的服务器,Global Routing 决定请求采用哪种路由姿态。Proxy、Direct、Config、Scene 不能当成四种协议:Proxy 使用代理路径,Direct 采用直连,Config 按配置规则决定策略,Scene 按所配置的场景处理。排查单个连接时,应先弄清当前姿态,再解释访问结果。

下面仅演示规则顺序,域名是说明用假值,不是可用服务。第一条让更精确的域名直连,第二条让该域名后缀下的其他请求使用 PROXY,最后用 FINAL 兜底。应用前还需确认当前配置中的 PROXY 对应预期的代理选择。

DOMAIN,local.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,PROXY

Settings → On Demand 处理按条件触发连接的问题,不负责修正 Trojan 的 Address、SNI 或 Password。手动连接尚未验证成功时,先保留可控的手动测试流程;基础连接正常后,再检查 On Demand 条件是否符合预期。自动触发 VPN 与目标命中 PROXY 是两个不同判断。

Trojan 填写常见问答

Address 是 IP,SNI 能留空吗?

先核对已有参数。如果服务器依赖域名选择 TLS 服务,或使用域名证书,应填写指定的 SNI。仅有 IP 而缺少 TLS 身份信息时,应向服务管理方确认,不要靠逐个试域名解决。

Port 必须填 443 吗?

不是。443 是常见端口,实际值必须与服务端监听一致。若给定端口为 8443,就在 Port 填写 8443,并确认 Address 中没有重复附加端口。

Password 要先编码或转换吗?

手动填写时使用原始密码,不自行计算摘要,也不把分享链接中的转义文本直接当作密码。导入链接后若认证失败,应将解析出的 Password 与原始参数核对,尤其检查特殊字符和多余空白。

订阅更新后又不能连接,先查哪里?

先在 Home 打开该条目的编辑页面,核对 Type、Address、Port、SNI 是否被更新,并确认当前选中项没有改变。若订阅源持续返回错误值,应修正源端参数;更新订阅本身不等于验证连接可用。

可以把 TLS 报错截图直接发给别人吗?

可以提供脱敏后的错误文字、失败阶段与发生条件,但应隐藏 Password、完整订阅链接和分享链接中的凭据。排错通常只需说明端口、SNI 与证书名称是否一致,不必公开完整连接资料。

完成配置后的复核顺序是:选中正确条目,确认 Global Routing,验证目标访问,再恢复日常规则与自动连接条件。需要继续查阅协议与规则,可进入技术参考;若仅在某一网络下失败,应记录 Wi-Fi 与蜂窝网络的差异,避免把网络可达性问题误判为密码错误。

App Store 正版入口核对开发者与应用 ID