本文适用于在 iPhone、iPad 上使用 Shadowrocket(小火箭),且已有自己的服务商与 Trojan 配置的用户。添加时应按原始资料填写 Address、Port、Password 与 SNI,保持证书验证开启;连接失败时依次检查地址解析、端口、TLS、认证与规则分流,不要用开启 Allow Insecure 代替排错。其他平台可参考参数含义,界面位置以实际客户端为准。
1. Trojan 与 TLS:连接经过哪些环节
Trojan 是代理协议,TLS 为客户端与服务器之间的传输提供加密及服务器身份验证。常见的 Trojan 连接先建立 TCP 连接,再完成 TLS 握手,随后在加密通道内发送认证信息与目标地址。TLS 握手成功只说明安全通道已建立,不等于密码正确,也不等于目标网站一定能够访问。
这里的 TLS 不表示代理服务器会替用户解密所有 HTTPS 网页。访问 HTTPS 网站时,浏览器与目标网站通常还会建立自身的 TLS 连接;Trojan 的 TLS 是设备到代理服务器这一段的外层通道。两层连接分别涉及不同的证书与故障位置,不能把服务器证书错误和某个网站的证书错误混为一谈。
常见配置使用 TCP 443 端口,但 443 不是协议强制值。服务器若监听其他端口,客户端必须照填。Trojan 也不等于 QUIC;不要因为配置提到 UDP 转发,就自行把传输方式改成 Hysteria2,或假定所有游戏、语音应用都会获得相同表现。
2. Add Server:填写前准备与添加步骤
先准备用户已有配置中的服务器地址、监听端口、密码和 TLS 名称要求。若资料只给出订阅,应优先按已有订阅导入,避免从名称或截图猜参数;手动记录与订阅记录可能在更新时具有不同维护方式,修改前先确认自己正在编辑哪一条。
- 进入添加页面。在 Home 点击右上角的添加按钮,进入 Add Server,将 Type 设为 Trojan。不要把 Trojan 密码填入其他协议的 UUID 或身份字段。
- 填写 Address。只填主机名或 IP 地址,例如
example.com。不要加入https://、网页路径或订阅的查询参数。本文域名仅用于解释格式,不是可用服务。 - 填写 Port。输入原始资料里的数字,例如服务器明确使用 443 时填
443。不要因为浏览器能访问该域名,就推定代理一定监听 443。 - 填写 Password。保持字符、大小写与符号完全一致,检查复制时是否带入空格或换行。Password 不是订阅地址中的整段查询字符串,也不能用登录服务商网站的密码替代。
- 核对 TLS 参数。按资料设置 SNI;若界面显示 TLS 开关,Trojan 的常规 TLS 配置应保持启用。Allow Insecure 保持关闭,不自行增加未提供的传输扩展参数。
- 保存并选中。保存后返回 Home,选中刚添加的记录,再进行连接测试。初次建立系统 VPN 配置时,按系统提示确认权限;系统权限与服务器认证是两个独立步骤。
3. Address、SNI 与证书名称如何对应
Address 决定客户端实际连接的网络地址;SNI 是 TLS 握手中发送的服务器名称,常用于让同一地址上的服务选择相应证书。两者经常相同,但并非必须相同。填写 SNI 也不是把流量改发到另一个网络地址,不能用它修复错误的 Address。
连接地址参数
- Type
- Trojan
- Address
- example.com,仅作格式示意
- Port
- 443,仅在服务器确实监听时使用
- Password
- 逐字使用用户已有配置中的密码
地址负责定位服务器,端口负责定位其监听服务。
TLS 身份参数
- SNI
- 使用原始资料要求的域名
- 证书名称
- 应覆盖客户端验证的服务器名称
- Allow Insecure
- 关闭,保留证书验证
- 设备时间
- 检查日期、时间与时区是否正确
SNI 影响握手与名称选择,不会替代证书信任验证。
当 Address 使用 IP 地址而证书签发给域名时,通常需要按配置提供正确的 SNI,不能把这个 IP 再机械地复制进 SNI。证书还必须处于有效期内,并能建立可信的证书链;域名拼写正确不代表这几项检查都会通过。若资料没有交代名称要求,应向原配置提供方确认,而不是轮换填写无关域名。
Allow Insecure 用于放宽证书验证,并不是“兼容更多网络”的通用选项。开启后可能让错误证书不再阻断连接,却也削弱服务器身份验证。遇到证书问题,应检查 SNI、设备时间、证书有效期和服务端证书链;对于需要专门信任配置的环境,应遵循该环境的证书部署说明,不以长期关闭验证作为处理结果。
4. 保存后测试:区分协议故障与规则未命中
添加成功只表示记录已保存。返回 Home 后先确认选中的是刚才的 Trojan 记录,再运行 Connectivity Test。测试结果受测试目标、网络路径与测试方式影响;有延迟结果也不代表所有网站、UDP 应用或规则策略都已验证。
- 确认连接状态。打开 Home 的连接开关,观察是否立即断开。若应用尚未建立系统 VPN 连接,先解决权限或本地配置问题,不急于修改远端端口。
- 短时隔离分流变量。在允许的网络使用范围内,将 Global Routing 临时切到 Proxy,用已选记录访问一个明确的测试目标。Proxy 用于排除大部分规则选择影响,不会修复 TLS 或密码错误。
- 恢复 Config。确认该记录可用后,把 Global Routing 切回 Config,检查 Config 中实际启用的配置。Direct 不适合作为验证 Trojan 转发的姿态,因为请求可能根本没有使用代理。
- 核对自动连接因素。排错期间检查 Settings → On Demand,避免自动连接条件改变当前测试状态。完成后恢复原有安排;On Demand 管理连接触发,不负责修正 Password 或 SNI。
下面是用于说明匹配顺序的真实规则语法,不包含任何可用服务器。它将 example.com 及子域名交给 PROXY,将文档保留地址段直连,其他请求也交给 PROXY。只把规则合并到已有配置的 [Rule] 段,不要用这个片段覆盖整个配置文件。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
FINAL,PROXY
规则从上到下检查,首条命中后不再检查后续规则,FINAL 负责兜底。这里的 PROXY 是策略标识,不是服务器地址,也不是输入 Trojan 密码的位置。确认当前策略最终选到了待测记录;如果 Proxy 能访问而 Config 不能,优先检查规则命中、策略选择与 DNS,不要立即重填同一组服务器参数。
5. 按错误阶段排查超时与认证失败
应根据出现问题的阶段缩小范围。客户端提示可能是概括性错误,不能仅凭“超时”二字认定密码错误。每次只改一个变量,记录修改前后的现象;在 Wi-Fi 与蜂窝网络之间切换测试时,也要保留同一记录和同一目标,避免同时改变过多条件。
| 可观察现象 | 优先检查 | 下一步操作 |
|---|---|---|
| Address 无法解析 | 域名拼写、当前网络 DNS | 检查是否误填 URL,确认主机名与原资料一致。 |
| 连接超时或被拒绝 | Port、网络可达性、服务器监听 | 核对端口;在另一网络用同一记录复测,并确认服务端状态。 |
| TLS 或证书错误 | SNI、设备时间、证书链 | 保持 Allow Insecure 关闭,核对名称与证书部署。 |
| 握手后关闭或认证失败 | Password、Type、服务端认证配置 | 重新复制密码并检查多余空白,确认选择 Trojan。 |
| Proxy 可用但 Config 不可用 | 规则、策略与 DNS | 确认启用的 Config 及请求实际命中的策略。 |
| 仅部分应用失败 | 目标服务、UDP 转发、应用自己的网络行为 | 分别测试网页与该应用,不用一次网页成功推断所有流量正常。 |
服务器地址能在浏览器里显示一个 HTTPS 页面,也不能证明 Trojan 的密码与转发配置正确。浏览器访问和 Trojan 认证是不同请求;同样,某个测试目标不可达也不必然说明整个服务器不可用。需要结合错误阶段与多个受控测试结果判断,本文没有提供速度或可用性实测承诺。
6. 常见填写问题
地址里带着 https://,要原样粘贴吗?
不要把网页或订阅 URL 整段放入 Address。先从原始配置确认真正的服务器主机名,Address 只填主机名或 IP,Port 单独填写。订阅地址应按订阅导入流程处理,不能靠删掉 URL 前缀把它变成 Trojan 服务器。
SNI 留空能连接,还需要填吗?
部分配置会基于 Address 使用默认名称,但不能据此推断所有服务器都允许留空。若原始资料明确给出 SNI,就填写该值;尤其是 Address 使用 IP 或名称与证书域名不同的情况,应保留资料要求的名称。
打开 Allow Insecure 就好了,可以一直开着吗?
不应把它作为长期修复。这个变化提示问题可能位于证书验证环节,应重新关闭该选项,检查 SNI、时间与证书链。把具体证书错误交给原配置提供方处理,不要用跳过验证掩盖名称错误。
订阅更新后又连不上,要重新添加吗?
先比较更新前后的 Address、Port、SNI 与所选记录,确认 Home 当前选中的不是同名旧记录。若配置确实发生变化,以用户已有的最新资料为准。手动修改订阅生成记录前先保留原值,避免下次更新覆盖后无法判断原因。