本文适合已在 iPad 或 iPhone 上使用 Shadowrocket(小火箭)、准备编辑配置文件的用户。按段落区分全局参数、分流规则、域名映射与请求重写,再通过最小示例检查规则顺序与生效条件。所有连接测试均以用户已有自己的服务商与订阅为前提;示例地址仅说明语法,不是可用服务。
先区分 .conf、订阅与当前连接
.conf 是配置文本,方括号标题标识段落,标题下的内容属于该段。[General] 主要使用键值对,[Rule] 使用逗号分隔的规则行;不能把同一种写法套用到全部段落。以 # 开头的独立行可作为注释,建议把说明单独写一行,避免注释混入参数值。
Home 主要用于连接、选择服务器与查看 Global Routing;Config 用于管理和选择配置文件;Settings 用于应用设置。已有订阅通常用于维护服务器列表,不能把服务器条目已更新理解成当前规则文件也已替换。配置文件也可能引用远程资源,检查时需要进一步确认其更新来源。
在 Config 编辑前,先保留原文件副本,记录 Home 当前选中的服务器与 Global Routing 状态。文件能够保存,不等于已经选中使用;选中配置,也不等于所有流量一定按其中的分流规则处理。排查时应把“文件内容”“当前配置”“路由姿态”分开核对。
判断方法:先确认配置已选中,再判断语法是否有误
如果编辑前后请求结果完全相同,先核对 Config 中选中的文件与 Home → Global Routing,不要立即叠加更多规则。每轮只修改一个段落,才能把结果对应到具体改动。
[General]:全局参数使用键值对
[General] 设置影响配置整体行为的参数。以下片段以系统 DNS、关闭 IPv6 及系统流量绕行为例,展示 键 = 值 格式。这是语法示范,不是所有网络都适合直接采用的参数组合。
[General]
# 使用系统提供的 DNS
dns-server = system
# 是否启用 IPv6
ipv6 = false
# 允许系统相关流量绕过
bypass-system = true
dns-server = system:使用系统提供的 DNS。切换 Wi-Fi 后,系统可用的解析环境可能变化,不能据此认定两张网络的解析结果必然一致。ipv6 = false:控制此配置的 IPv6 行为,不等于关闭路由器或整台设备的 IPv6。若连接依赖 IPv6,应先核实服务端地址与当前网络,再决定是否修改。bypass-system = true:涉及系统流量的绕行处理,并不是为某个网站指定 DIRECT 的规则;网站分流仍应到[Rule]检查。
同一个键不要重复写入多个相互冲突的值。合并两份配置时,先对照已有键,再决定保留哪一个,而不是整段追加。DNS 相关故障也要区分“服务器域名无法解析”和“目标网站域名无法解析”:二者影响的是不同的连接环节。
[Rule]:逐行匹配,具体条件放前面
[Rule] 决定请求匹配哪个目标策略。常见结构为 规则类型,匹配值,策略;FINAL 没有匹配值,直接写目标策略。规则按顺序检查,前面已经命中的请求不会继续依靠后面的宽泛条件重新分配。
[Rule]
# 匹配 example.com 及其子域名
DOMAIN-SUFFIX,example.com,PROXY
# 文档示例网段,不是实际服务地址
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
# 按目标 IP 的地区数据库结果匹配
GEOIP,CN,DIRECT
# 未命中前面规则时使用
FINAL,PROXY
PROXY 表示代理策略,仍需要可用的代理出口;DIRECT 表示直接连接。若使用自建策略组,规则末尾必须引用实际存在的名称,拼写、空格与大小写均应核对。把不存在的组名写入规则,并不能自动创建对应出口。
| 关键字 | 匹配对象 | 检查重点 |
|---|---|---|
DOMAIN-SUFFIX | 域名及其子域名 | 不写协议、路径或端口,例如只写 example.com。 |
IP-CIDR | IPv4 地址段 | /24 是网络前缀长度;no-resolve 避免仅为该规则触发域名解析。 |
GEOIP | 目标 IP 的地区归属 | 不是按设备所在地区,也不是按网站页面语言匹配。 |
FINAL | 其余未匹配请求 | 放在末尾;放在前面会使后续规则失去匹配机会。 |
要验证此段,在 Home → Global Routing 选择 Config,并确认 Config 中使用的是刚编辑的文件。Proxy 是全局代理姿态,Direct 是全局直连姿态;Scene 按已配置的场景处理,不能简单视为 Config 的另一个名称。希望验证逐条规则时,应先排除全局姿态或场景切换的干扰。
[Host]:修改域名映射,不等于修改出口
[Host] 用于指定域名对应的地址。下面将一个完整主机名映射到文档保留地址,结构为 主机名 = IP 地址。这里的地址没有部署网站,复制后请求失败属于预期结果,不能拿它判断实际服务器是否可用。
[Host]
# 仅作格式说明
portal.example.com = 192.0.2.10
api.example.com = 198.51.100.20
Host 映射既不是 HTTP 重定向,也不是 DOMAIN-SUFFIX 规则。浏览器地址栏仍可保留原域名,HTTPS 证书也仍须与请求域名匹配。若把域名指向没有该域名证书的服务器,即使网络连接成功,也可能出现证书错误;不要通过忽略证书错误来掩盖映射问题。
域名映射检查
- 段落
- [Host]
- 主机名
- portal.example.com
- 目标地址
- 192.0.2.10
- 写入格式
- portal.example.com = 192.0.2.10
指定地址不代表目标服务器已配置对应网站。
分流目标检查
- 段落
- [Rule]
- 规则类型
- DOMAIN-SUFFIX
- 匹配值
- example.com
- 目标策略
- DIRECT 或已存在的代理策略
选择出口与指定解析地址是两项独立设置。
验证时,使用完整主机名发起一次新请求;已有连接可能继续复用旧连接,不能只看网页是否仍然打开。若移除映射后恢复正常,先核对目标地址、服务监听与证书,而不是继续添加更宽泛的直连规则。远端代理是否再次解析域名也与连接方式有关,不要把本地映射理解为强制控制所有远端解析。
[URL Rewrite]:匹配 URL 后执行重写动作
[URL Rewrite] 处理 URL 匹配与动作,不使用 [Rule] 的逗号格式。下面示例把一个 HTTP 地址临时重定向到 HTTPS,动作中的 302 是重定向状态码,不是服务器端口。
[URL Rewrite]
^http://example\.com/(.*)$ url 302 https://example.com/$1
^表示从 URL 开头匹配,防止匹配范围意外落到地址中间。example\.com中的反斜杠使点号表示普通字符,而不是正则表达式里的任意字符。(.*)捕获域名之后的内容,目标中的$1引用这部分内容。url 302指定 URL 重定向动作;改写后产生的新请求仍需要正常解析、分流与建立连接。
重写不负责补齐服务器能力。目标站点必须实际支持 HTTPS,证书也必须有效。如果目标地址再次跳回原地址,可能形成重定向循环。测试应先使用一条精确域名规则,不要一开始就对所有 HTTP 地址应用宽泛正则。
保存后的验证顺序与常见问题
四段可以同时存在于一个文件,但不应理解成机械执行的四步流水线。General 影响全局行为,Rule 负责策略匹配,Host 影响域名映射,URL Rewrite 处理可见的请求 URL。故障定位应围绕实际现象拆分,而不是认为“最后一段覆盖前面所有设置”。
- 在 Config 保存副本并选择该文件,确认没有误选另一个同名配置。
- 回到 Home,确认服务器可用,再把 Global Routing 设为 Config 以验证规则分流。
- 发起一个新的目标请求,记录目标域名、预期策略、实际连接结果与错误提示;必要时查看相关请求记录。
- 撤销刚才的单项修改后再测试一次。只有修改与回退能够稳定改变结果,才继续合并下一项配置。
我改了 Rule,为什么还是全部直连?
先在 Home → Global Routing 检查是否停在 Direct,再到 Config 核对选中的文件。确认使用 Config 后,检查目标域名前是否已有更早的 DIRECT 规则,以及 FINAL 是否误放在前面。
订阅更新了,规则为什么没变?
先确认更新的是 Home 中的服务器订阅,还是 Config 中的远程配置。服务器列表更新不代表本地 .conf 被替换;若使用远程配置,还应备份本地修改,防止后续配置更新覆盖它们。
加了 Host 后出现证书错误,改 DIRECT 有用吗?
先撤销新增映射并重新请求。若错误消失,应检查映射服务器是否为原域名提供有效证书。DIRECT 只改变出口策略,不能替服务器修正证书域名。
URL Rewrite 没命中,是不是配置没保存?
先核对当前配置,再确认测试地址确实以 http:// 开头、域名与正则一致。浏览器若直接使用 HTTPS,应换用能明确发起原始 HTTP 请求的测试方式;不要为了命中示例扩大到所有域名。
配置修改后连接反复自动开启,应该检查哪里?
到 Settings → On Demand 核对自动连接条件,再检查系统中的 VPN 状态。先排除自动连接触发,再手动重连测试;不要把连接自动恢复当成某条 Rule 导致的结果。
配置文件应只保留能够说明用途、能够验证结果的设置。合并远程规则前,检查其匹配范围、目标策略以及更新是否会覆盖本地内容。需要继续核对语法时,可查看规则参考;首次连接步骤见使用教程。
App Store 正版核验与配置准备
Shadowrocket 是 Apple 平台上的闭源商业应用,通过 App Store 一次性买断获取,开发者为 Shadow Launch Technology Limited。iPhone、iPad 等设备的系统要求与兼容性以 App Store 页面标注为准。客户端买断 ≠ 线路套餐;导入与连接需要使用自己已有的订阅或配置。
去正版核验页 看教程