Shadowrocket 协议参数
与连接类型选择
从已有服务器信息出发,区分协议、传输与路由,再核对字段、速度和电量。
本页是按问题查阅的系统手册,重点解释为什么选择某个协议、参数之间怎样关联,以及连接失败时先查哪一层。首次使用请先按使用说明完成导入与连接,再返回本页核对细节;这里不替代快速上手主线,也不提供订阅或服务器信息。
iPhone / iPad 版在 App Store $2.99 一次性付费,系统要求以 App Store 页面标注为准;Mac(Apple 芯片与 Intel)、Windows、安卓、Linux 版免费。获取方式统一见全平台下载,其他平台安装包由本站下载页通过站内 /dl/ 提供。
- 协议与传输分开核对
- 速度与电量分别测量
- 一次只改变一个参数
连接分层:协议不是整条链路
先分清三个不同的问题
在 Shadowrocket 中,协议回答“客户端怎样和服务器交换请求”,传输回答“这些数据通过什么通道送达”,路由回答“某个连接应当交给哪种策略”。三个问题有关联,却不能互相替代。例如选择 VLESS 不等于选择 WebSocket,启用 TLS 不等于所有应用流量都已经走代理,选中某台服务器也不表示 Config 中的每条规则都会使用它。排错前先把这三个层次写清,可以避免在错误的位置反复改参数。
一次访问通常经历本地应用发起请求、名称解析、Global Routing 与规则判断、服务器连接、认证或握手、服务器访问目标等阶段。某些阶段会因缓存、连接复用或远程解析而改变顺序,但基本分工不变。Home 中能看到服务器条目,只能说明配置已经存在;Connectivity Test 返回结果,也只证明所选测试方法涉及的链路可用,不能证明目标网站、UDP 应用和所有规则都正常。
理解代理协议与隧道协议
Shadowsocks、VMess、VLESS、Trojan、HTTP 和 SOCKS5 通常面向连接或请求转发。WireGuard 面向 IP 数据包隧道,字段里会出现地址、路由前缀和对端公钥;Hysteria2 以 QUIC 为基础承载代理通信。它们不只是不同的名称:服务器必须运行对应协议,客户端的认证材料和协商方式也必须匹配。不能把一份 Trojan 密码填进 SOCKS5,再期望仅靠相同端口建立连接。
| 层次 | 常见内容 | 主要检查问题 |
|---|---|---|
| 协议与认证 | Type、Password、UUID、PublicKey | 服务器类型与身份材料是否对应 |
| 传输与安全 | TCP、UDP、TLS、WebSocket | 通道、证书名称与路径是否一致 |
| 路由与策略 | Config、Proxy、Direct、Rule | 实际请求是否交给预期策略 |
| 目标与解析 | DNS、目标地址、端口 | 名称能否解析,目标服务是否可达 |
速度同样需要拆开观察。首次打开页面的等待时间包含解析、连接和握手,下载大文件时更容易体现吞吐量,视频通话则更关注抖动、丢包与 UDP 路径。协议减少一轮握手,可能改善首次请求,却未必提高持续下载速度。服务器拥塞、出口带宽、跨网络路径和目标限速都可能成为更大的约束,因此不宜给协议制作固定的快慢排名。
把可变项限制在能够解释的范围
选型应从已有资料开始:先核对服务器声明的协议,再核对其提供的传输、安全设置和可用端口。订阅导入后保留原始条目,复制一份再试验;若 Subscribe 更新会重建条目,应记录哪些值来自订阅,哪些是本地调整。不要同时改变协议类型、DNS、规则和服务器,否则即使恢复连接,也很难知道究竟是哪项调整生效。
iOS 上的电量消耗也属于整条链路。协议加密会占用计算资源,重传会增加传输量,保活会唤醒无线连接,而应用本身的同步与媒体解码还会继续耗电。显示 VPN 状态只表明系统网络扩展处于工作状态,并不是功耗测量。后文的测试方法会把这些变量分开,避免把应用后台活动错误归因于协议。
Shadowsocks:精简代理与加密方法
设计背景与边界
Shadowsocks 的设计重心是提供较精简的加密代理通道。客户端把目标地址与业务数据按约定封装,服务器验证并转发请求。它不是完整的虚拟局域网方案,也不会因为被选为 Type 就自动设置应用路由。对用户而言,最关键的不是记住协议历史,而是识别同名协议下仍存在不同加密方法与格式:服务器接受哪种方法,客户端就必须选择相同的方法,不能把名称相近视为兼容。
较早的流加密方式与后来的 AEAD 方式在数据格式和认证能力上不同。AEAD 把加密与完整性验证结合起来,能够检测被修改的数据;这并不意味着所有含 AEAD 名称的条目彼此通用。部分较新的方法还会对密钥长度与编码提出特定要求。实际填写应以已有服务器配置为准,客户端列表未出现的方法不能通过选另一个相似名称来替代。
Address、Port、Method 与 Password
在 Add Server 中选择 Shadowsocks 后,先检查 Address 与 Port。Address 是提供代理服务的主机名或 IP,不是订阅链接,也不是要访问的网站;Port 是该服务监听的端口。主机名不能混入整段网页路径,IPv6 地址也应按字段要求填写。若资料来自二维码或订阅,优先保留自动解析结果,再逐项和原资料对照,避免手工拆分时把端口或附加参数漏掉。
Method 决定双方如何处理密钥与密文,Password 则必须逐字符一致。某些方法使用普通口令派生密钥,另一些方法要求规定格式的密钥材料,所以不能简单地认为“密码越长越兼容”。复制时注意尾部换行、全角符号和不可见空格;不要把服务器面板展示的编码串再次自行编码。发生认证失败时,先核对方法与密码这组配对关系,而不是立即修改 DNS。
| 字段 | 含义 | 容易混淆的内容 |
|---|---|---|
| Address / Port | 代理服务的入口 | 订阅地址、目标网站地址 |
| Method | 加密与认证格式 | 仅凭名称接近就替换方法 |
| Password | 该方法使用的认证材料 | 额外编码、粘贴空白 |
| UDP | 数据报转发能力 | 只验证 TCP 后推断 UDP 正常 |
UDP、附加传输与 iOS 表现
Shadowsocks 的 TCP 和 UDP 路径需要分别验证。网页可以打开,不代表游戏或通话的数据报也能到达。客户端设置、服务端转发能力以及沿途网络都可能限制 UDP;目标应用本身还可能使用不同端口。若服务器资料包含附加传输参数,应确认当前客户端确实提供对应选项,并完整照填。基础协议名称相同,并不能说明附加传输具有相同兼容性。
在 iPhone 上,较精简的数据封装有机会减少部分处理开销,但实际速度仍会受到加密方法、设备能力和网络路径影响。大流量持续下载时,计算开销比较容易显现;偶尔打开消息时,连接建立和无线唤醒反而可能更重要。不能仅凭协议结构简洁就断言它必定更省电,也不应把一次测速中较高的峰值当作长期吞吐量。
排错可分三支:入口始终超时,先确认主机、端口和当前网络;连接建立后立即失败,检查 Method 与 Password;网页正常但部分应用失败,检查 UDP、规则命中和名称解析。若修改的是从 Subscribe 获得的条目,先复制保留原值,以免后续更新覆盖修正。按这条顺序逐项核对,每次只调整一个设置并验证结果。
VMess 与 VLESS:认证、传输与 TLS
同一份配置里可能有多层名称
VMess 与 VLESS 都需要区分协议本身和外层传输。它们的配置可能同时出现 UUID、TLS、WebSocket、Host、Path 等字段,这些字段分属不同职责。UUID 用于身份识别,传输设置决定数据如何承载,TLS 负责相应通道的加密与服务器身份验证。把其中一个值填对,并不能弥补其余层次的不一致;尤其不能只看到 UUID 就推断该条目属于哪种协议。
VMess 的设计包含自己的认证和数据保护机制,配置还可能涉及安全方法等选项;VLESS 则采用较精简的协议设计,不把内建内容加密作为核心职责,通常与外部安全层配合。这里的区别不应简化为“复杂的一定慢、精简的一定快”。实际连接可能叠加 TLS 和其他传输,握手次数、连接复用以及服务端实现都会改变最终开销。
UUID、安全方法与系统时间
UUID 应完整使用服务器分配的值,不随意重新生成,也不把另一个用户的标识混用到当前条目。VMess 某些认证流程与时间有关,设备时间明显不准可能导致看似参数正确却无法通过认证。遇到这类问题,应先让系统日期与时间正常同步,再确认原始资料是否还有效。调整时间不是绕过认证的办法,只是排除本地时钟错误。
VMess 的安全方法应按服务器要求选择。若导入结果出现历史兼容字段,不要依据其他教程中的截图自行改成某个固定数值;不同部署的接受条件并不相同。VLESS 的身份字段也不能拿来替代外层安全配置。特别是关闭 TLS 后仍显示 VLESS 的情况,协议名称并不会自动补回缺失的加密层,必须回到服务器提供的完整参数判断。
| 字段 | 作用 | 检查方式 |
|---|---|---|
| Address | 实际建立连接的服务器入口 | 确认可解析且端口对应服务 |
| Server Name / SNI | TLS 握手与证书身份核对 | 与服务器要求及证书名称匹配 |
| Host | 部分 HTTP 类传输的请求主机 | 按传输入口配置填写 |
| Path | WebSocket 等传输的请求路径 | 核对大小写、斜杠与完整内容 |
WebSocket、TLS 与连接开销
WebSocket 会先建立相应的 HTTP 交互,再承载后续数据;启用 TLS 时还需要完成安全握手。因此首次连接延迟可能包含多层准备过程,但一个已建立并复用的连接不必为每个数据包重复全部步骤。测试时若第一次慢、之后快,应考虑名称缓存、TLS 会话恢复与连接复用,而不是立即认定协议存在不稳定问题。
Address、SNI 与 Host 有时相同,有时由部署方式决定而不同,不能强行把它们统一。使用 IP 作为 Address 时,证书仍可能需要通过域名验证;Path 的一个字符不符,也可能让请求到达服务器却没有进入正确的代理服务。遇到证书错误,应查名称、有效期与设备时间,不建议把跳过验证当作长期配置。
对 iOS 来说,额外封装可能增加建立连接的工作量,但连接复用又可能减少重复握手。频繁切换 Wi-Fi 与蜂窝网络时,底层连接往往需要重新建立,短时间内的重连次数可能比单次加密开销更影响体验。比较 VMess 与 VLESS 时,应固定相近的服务器路径、相同外层传输和相似负载,否则无法把结果归因到协议差别。
Trojan、HTTP 与 SOCKS5:连接代理的不同职责
Trojan 的 TLS 前提
Trojan 的设计把代理认证与 TLS 通道结合起来。客户端首先需要到达服务器并建立合适的安全连接,再由服务端识别认证信息和转发请求。因此 Password、服务器地址、端口和 TLS 身份设置缺一不可。密码正确但证书名称不符,连接仍可能在认证之前失败;端口能够建立 TCP 连接,也不代表那里运行的就是预期的 Trojan 服务。
填写时,Address 决定连接入口,Server Name 或 SNI 对应 TLS 握手所需名称,Password 则对应代理认证。若服务器使用域名证书而入口给的是 IP,应按已有资料保留相应名称。证书有效期、系统时间及信任链都有可能影响验证。不要为了消除报错长期跳过证书检查,这会削弱对服务器身份的确认,也会掩盖原本应修正的配置错误。
HTTP 代理不等于访问 HTTP 网站
HTTP 代理通过代理请求或 CONNECT 等机制代为建立连接。Type 写 HTTP,描述的是客户端与代理的交互方式,并不表示只能访问 HTTP 网站;HTTPS 目标通常通过隧道机制传输。另一方面,目标使用 HTTPS 也不表示客户端到代理的全部交互都经过 TLS。应单独核对代理入口是否提供加密连接,以及认证信息经过哪一层保护。
HTTP 代理常见于已有组织网络或明确提供此入口的环境。Address、Port、Username 与 Password 应来自同一份配置,空用户名和未填写用户名也可能被服务端区别处理。服务端是否允许 CONNECT 到目标端口、是否限制目标范围,属于代理策略的一部分。某网站可用而另一类服务失败时,应考虑这些限制,不能只通过更改目标 DNS 来解决。
SOCKS5 的认证与 UDP 条件
SOCKS5 定义了客户端向代理请求连接的交互方式,并可包含用户名密码认证。基础 SOCKS5 本身不提供传输内容加密;是否另有受保护的承载通道,需要按实际部署确认。已有受控网络中的 SOCKS5 入口可以具有明确用途,但不应把登录密码误认为等同于加密通道,也不能因为网页使用 HTTPS 就忽略其他流量的保护边界。
| 协议 | 关键前提 | 常见失败点 |
|---|---|---|
| Trojan | TLS 与代理认证都匹配 | 证书名称、密码或端口不一致 |
| HTTP | 入口接受所需请求与目标端口 | 认证、CONNECT 权限或入口类型错误 |
| SOCKS5 | 服务端支持所需认证与命令 | UDP 转发不可用、认证方式不匹配 |
SOCKS5 的 UDP 使用需要服务端及网络路径共同支持。即使 TCP CONNECT 正常,UDP ASSOCIATE 对应的协商或后续数据报仍可能被限制。代理若返回一个客户端无法到达的数据报地址,也会出现控制连接成功而应用失败的现象。此时应分别检查 UDP 入口、返回地址和目标应用,而不是把 TCP 测试结果当成所有功能均已通过。
如何理解 iOS 上的差异
Trojan 的 TLS 握手有一定建立成本,但稳定连接可能持续承载后续数据;HTTP 与 SOCKS5 的协议交互相对直接,却不因此保证路径更短或速度更高。真正比较时,还应确认是否使用相同目标、相同服务器出口和相近的连接复用条件。若某协议只在当前 Wi-Fi 可用,先调查该网络允许的传输与端口,不要给协议贴永久优劣标签。
选择顺序应是“已有入口提供什么、用途需要什么、保护边界是否明确”。需要 TLS 身份验证时,核对 Trojan 的安全参数;已有组织 HTTP 或 SOCKS5 入口时,照其权限使用。更多普通连接问题可查问答。更换 Type 并不会让服务端自动增加相应协议,也不会改变用户已有账号的访问权限。
WireGuard:密钥、地址与路由前缀
为什么字段与普通代理不同
WireGuard 面向 IP 数据包隧道,设计上采用固定的现代密码组件与相对精简的握手机制。它不依靠用户名密码表单识别对端,而是用密钥建立身份关系,并把允许通过对端的地址范围与路由联系起来。因此在 Shadowrocket 中查看 WireGuard 条目时,应把密钥、隧道地址、Endpoint 和 AllowedIPs 分开理解,不能套用普通代理“地址加密码”的填写习惯。
PrivateKey 是本端的私钥,PublicKey 通常指对端公钥。两者虽然都表现为编码字符串,却属于不同身份和方向。私钥不能放进对端公钥字段,也不能因为字符串长度相近就互换。PresharedKey 是可选的额外共享材料,只有双方约定使用时才应填写;自行添加一段值不会提高可用性,反而会使双方握手条件不一致。
Endpoint 与隧道地址
Endpoint 是对端实际接收 UDP 通信的主机和端口,隧道 Address 则是本端在隧道内使用的地址。二者处于不同层次:入口公网地址可达,并不证明内部地址分配正确;内部地址正确,也无法弥补入口端口不可达。把已有配置拆进界面时,应保留地址的前缀长度,并检查 IPv4 与 IPv6 是否分别按资料配置,不要凭本地局域网地址自行替换。
AllowedIPs 同时关系到哪些目标地址交给某个对端,以及收到的数据应具备怎样的源地址归属。较宽的前缀覆盖更多目标,较窄的前缀只覆盖指定网段,但它不是普通的访问网站白名单。客户端的 Global Routing、Config 规则与系统网络扩展还会影响业务流量是否进入这一条目,所以不能只看到一个全范围前缀就判断所有应用已经使用隧道。
| 字段 | 职责 | 需要核对的关系 |
|---|---|---|
| PrivateKey | 本端身份材料 | 与服务端登记的本端公钥对应 |
| PublicKey | 对端身份 | 来自当前对端,不是本端公钥 |
| Endpoint | 外部 UDP 入口 | 主机、端口与当前网络可达性 |
| AllowedIPs | 对端关联的地址范围 | 覆盖所需目标且避免误解路由范围 |
| MTU | 隧道可承载的数据包大小 | 适应底层路径与封装开销 |
MTU、保活与移动网络
MTU 决定隧道数据包大小上限。底层路径承载不了较大的封装包时,可能表现为小请求可用、大页面或上传卡住。调整 MTU 应在排除认证和路由错误之后进行,并保留原值逐步验证;不要把某个网络下有效的数值当作所有设备的固定答案。若 IPv6 与 IPv4 路径不同,也应分别测试,而不是只观察一次网页加载。
PersistentKeepalive 用于按约定间隔维持某些网络地址转换映射,并非越频繁越稳定。较短间隔可能增加后台数据与无线唤醒,较长间隔又可能不适应某些映射寿命。应先确认实际存在空闲后无法恢复的问题,再按服务器建议调整。移动网络切换时,入口可达性、地址变化和应用重试行为也都会影响恢复过程。
WireGuard 的握手成功只说明密钥关系及部分通信条件成立;要访问内部服务,还需要对端转发、返回路由、地址分配和 DNS 正常。若握手正常但没有业务流量,先核对 AllowedIPs、隧道地址和服务端返回路径,再查规则命中。字段逐项解释可继续阅读WireGuard 参数说明,分享问题时应隐藏私钥与真实内部网络信息。
Hysteria2:QUIC、UDP 与带宽参数
设计目标与实际约束
Hysteria2 以 QUIC 为基础承载代理通信,面向吞吐、丢包条件和不同网络路径进行设计。QUIC 运行于 UDP 之上,提供安全连接及多路传输能力,但这不意味着应用数据丢失后不需要恢复,也不表示底层网络会自动允许 UDP。选用前先确认已有服务器提供 Hysteria2,并确认当前客户端能够使用服务器要求的认证与传输设置。
它与基于 TCP 的方案相比,数据恢复与拥塞控制位于不同的实现层次,可能在某些有丢包或路径变化的环境里表现不同。不过“使用 UDP”不是更快的充分条件。某些网络对 UDP 限速或限制较大数据报,服务器出口与目标站点也可能成为瓶颈。只有实际路径与负载相匹配时,协议设计上的潜力才会反映为使用体验。
入口、认证与 TLS 身份
Address 与 Port 指向服务器的 QUIC 入口,认证字段须使用已有配置提供的内容。认证材料可能含有分隔符,复制时不要依据自己的理解拆成另一个协议的用户名和密码。若通过 Subscribe 导入,应先观察解析后的 Type 与字段是否完整;历史名称相似或文字中都含 Hysteria,并不能证明配置格式可以直接互换。
QUIC 中的 TLS 身份验证仍然重要。Server Name 应符合服务器配置与证书要求;使用 IP 入口时,证书名称也可能来自指定域名。证书错误、认证错误和 UDP 超时发生在不同阶段,应分别处理。前者查名称与信任链,中者查授权材料,后者查入口与网络路径。把全部错误都归结为“带宽值不对”,会偏离真正的问题。
| 设置 | 用途 | 注意事项 |
|---|---|---|
| Address / Port | 建立 QUIC 连接 | 验证 UDP 路径,不只测试 TCP 端口 |
| 认证材料 | 识别获准使用的客户端 | 完整复制,不自行拆分或编码 |
| Server Name | 确认 TLS 对端身份 | 与服务器要求及证书匹配 |
| 上传 / 下载带宽 | 参与相应速率控制设置 | 核对单位与方向,按实际链路填写 |
| 附加参数 | 匹配服务器指定配置 | 仅在资料要求且客户端支持时设置 |
带宽值不是性能承诺
客户端若提供上传、下载带宽字段,应先确认单位与方向。Mbps 与 MB/s 并非同一单位,上传和下载也不应互换。填写更大的数字不会增加物理带宽;在相应控制模式下,不符合实际链路的目标可能加剧排队、丢包或其他应用的等待。字段是否生效还取决于具体协商和服务端配置,因此不要把任意高值当作通用优化方法。
合理做法是在相同网络下先测量稳定区间,再按已有服务器说明填写,并同时观察网页响应、持续下载和通话表现。只看下载峰值,可能忽略满载时延迟明显增大的情况。蜂窝网络可用容量会随信号和小区负载变化,固定参数不一定始终适合;测试应记录当时网络条件,并保留能够正常工作的原始配置。
iOS 电量与失败分支
持续高吞吐、丢包恢复和用户态数据处理都可能增加计算与无线传输负担,所以不能把 Hysteria2 一概归为省电或耗电。若相同任务能够更早完成,也可能减少无线连接保持高活动状态的时间;若空闲时不断重连,结果又会相反。比较电量时必须固定任务量和时长,不能把一次大文件下载与另一协议的待机时段放在一起比较。
若只在某个网络下完全无法握手,先确认 UDP 可用性;若连接建立后持续吞吐不稳,再检查路径承载、带宽设置与服务端负载;若仅部分应用失败,回到路由与目标协议排查。不要为了让 Hysteria2 连接而随意改变与其无关的规则。已有资料未给出的附加项保持默认或向配置提供方确认,比从不相关示例拼接参数更可靠。
iOS 速度与电量:建立可比较的测试
先固定网络与测试对象
在 iPhone 或 iPad 上比较协议,首先要排除场景差异。固定设备、网络、目标资源与测试时段,关闭不相关的大型下载,等待照片同步或系统更新结束。测试前记录当前是 Wi-Fi 还是蜂窝网络,以及设备是否发热、是否处于低电量模式。信号明显变化或设备开始热限制时,本轮结果不适合继续和先前数据直接比较。
服务器条件也需要控制。不同协议若位于不同机房、使用不同出口,测到的结果只能代表两条完整路径,不能证明协议本身有差距。即使同一主机,也应确认没有不同的带宽限制或并发负载。若用户只有一份已有订阅,无法得到等条件入口,就把测试目标改为“哪个条目更适合当前用途”,而不是试图建立普遍有效的协议排名。
把连接、业务与路由分别记录
Connectivity Test 适合做初步筛查,但结果取决于具体测试方式。纯连接检查不会完整覆盖目标业务,HTTP 类测试又会受到测试目标影响。应继续打开真实需要使用的应用,并观察首次响应、持续传输和空闲后恢复。记录失败发生在解析、建立连接、加载内容还是切换网络之后,远比只写“有时很慢”更有助于判断。
| 姿态 | 用途 | 测试时的注意点 |
|---|---|---|
| 配置 Config | 依据当前配置中的规则处理请求 | 先确认目标命中了哪条规则与策略 |
| 代理 Proxy | 按该模式把相应流量交给代理 | 可用于隔离规则因素,仍需检查实际日志 |
| 直连 Direct | 按该模式进行直接连接 | 用于观察基础网络,不用于证明代理可用 |
在 Config 下,若目标命中 DIRECT,就不能用它的加载速度评价当前代理协议。临时切换 Proxy 可以帮助区分规则和服务器问题,但应记录模式变化,测试结束后恢复原配置。策略组、DNS 与本地连接仍可能影响具体请求,因此最终要结合连接记录确认实际路径,不要只根据界面上高亮的服务器名称下结论。
怎样测量电量而不误读结果
系统电池页面提供的是一段时间内的归因与活动信息,不是某个协议的独立功耗仪表。屏幕亮度、媒体解码、应用刷新、信号强弱和连接重试都会参与耗电。建立对照时,可分别观察固定时长的空闲连接、相同内容的浏览、相同任务量的下载;尽量重复多个时段,并记录前后台活动,不要只凭几分钟内电量百分比变化判断。
空闲连接的重点是后台唤醒、保活和重复重连;持续传输的重点是单位任务耗时、传输量与设备温度;移动场景则关注 Wi-Fi 与蜂窝网络切换后的恢复。On Demand 影响何时按条件建立连接,不是加速开关。其规则若导致频繁建立和断开连接,也会改变电量表现,应先核对触发条件再讨论协议消耗。
测试还应区分 TCP 与 UDP。网页正常但通话断续,可能是 UDP 路径、抖动或丢包问题;大文件正常而首次访问慢,可能是解析或握手;空闲一段时间后第一次请求失败,则应查映射、保活和应用重试。把这些现象分别记录,才能选择正确的下一步,不必每次都从更换协议开始。
最终选择应看重复结果而不是峰值。某条配置只在一次短测里很快,却经常需要手工重连,未必适合日常使用;另一条持续吞吐稍低,但响应稳定、空闲恢复正常,可能更适合消息与办公。这里比较的是用户当前网络和任务下的适配程度,不构成任何线路服务质量的保证。
按场景选型:规则验证与故障闭环
从需求倒推,而不是从名称倒推
需要普通网页与日常应用时,先选择已有资料中参数完整、能稳定连接的条目,不必为了协议名称更换服务器。已有内部网络和地址路由需求时,检查 WireGuard 对端与允许网段;已有 HTTP 或 SOCKS5 组织入口时,核对其认证和访问权限;需要使用 UDP 的应用,则单独验证相应能力。某项需求不满足时,再判断是配置问题、服务端能力还是网络限制。
VMess、VLESS 和 Trojan 的选择应保留各自所需的传输与 TLS 组合,Shadowsocks 应确认加密方法与数据报支持,Hysteria2 应确认 UDP 路径及速率参数。没有一种协议能够仅靠切换 Type 自动兼容另一种服务。若已有订阅包含多种类型,可以保留原条目逐一测试;不要通过混用 UUID、密码和传输路径创造未经服务端配置的组合。
先确认规则真的调用了该协议
协议验证和规则验证应分两步。先用明确的测试请求确认服务器可用,再在 Config 下核对目标是否进入预期策略。下面是用于说明匹配顺序的 Shadowrocket .conf 规则片段,不是完整配置;使用前必须确保当前配置已经定义可用的 PROXY 策略。示例域名只是教学文本,不代表应当访问的服务。
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
规则通常按顺序匹配,命中后采用相应策略。DOMAIN-SUFFIX 覆盖指定域名及其子域,IP-CIDR 表示地址段,no-resolve 用于避免该条规则为匹配而主动解析域名;已有目标地址仍可能参与地址匹配。GEOIP 根据地址归属数据库判断,不等同于网站所属地区。FINAL 是兜底,必须放在需要先行判断的规则之后,否则后面的意图可能无法实现。
如果目标命中 REJECT,连接在策略层就会被阻止,更换协议无法修复;若命中 DIRECT,应先确认是否符合预期。关于拒绝策略的作用与同域内容边界,可查REJECT 规则说明。规则调整也应复制配置后进行,避免为了验证一个目标而让其他应用的原有路径全部改变。
按失败阶段收敛检查范围
| 现象 | 优先检查 | 暂不急于调整 |
|---|---|---|
| 入口完全超时 | 地址、端口、TCP / UDP 路径 | 规则细节与业务应用设置 |
| 握手或认证失败 | 协议、身份材料、TLS 名称、时间 | 带宽目标与测速方式 |
| 连接成功但目标打不开 | DNS、规则命中、返回路径与权限 | 无依据地更换加密方法 |
| 小请求正常,大传输卡住 | MTU、路径承载、丢包与服务端负载 | 重新填写全部认证信息 |
| 空闲后或切网后失败 | 保活、映射、重连与 On Demand | 把偶发现象判为协议永久不兼容 |
若只有域名访问失败而直接目标测试正常,应检查名称解析位置、返回地址类型及 DNS 请求的路由;不要把所有问题都处理为修改证书验证。若只在 IPv6 网络异常,应分别确认服务器入口、目标地址与隧道地址支持情况。恢复一个可用配置后,再逐项加回所需规则,能够找到具体引入故障的变更,而不是留下难以解释的一组开关。
保留能复现的结论
完成排查后,记录实际使用的协议、外层传输、成功的测试任务与仍存在的边界,并删除不再需要的实验条目。Subscribe 更新可能改变服务器参数,系统网络变化也可能让旧结论失效;出现新故障时应重新核对当前资料,而不是机械重复旧调整。配置、二维码和日志都可能包含敏感信息,分享前应逐项检查,不直接公开原始导出文件。
需要重新走操作主线时,返回使用说明;需要按现象查找短答案时,进入问答。本手册的目标是让每一次类型选择都有服务器资料作为依据、每一次参数修改都有可验证的原因,而不是用协议名称代替对连接条件的判断。