云梯VPN 免费版 CloudPN - 云梯回国VPN 免费版 BackChina

Shadowrocket怎么设置分流规则?从 Config 到规则验证

更新于 2026-10-27 · yunti.online

简答:先在 Shadowrocket 首页把 Global Routing 改为 Config,再确认当前配置文件已启用。随后按“具体规则在前、宽泛规则在后、FINAL兜底”的顺序添加规则,最后用日志和同一网址验证实际命中的策略。

定义:Shadowrocket 分流规则是根据域名、IP地址或地理区域,把请求分别交给 DIRECT、PROXY、REJECT 或其他策略处理的配置规则。

三步速查:先让分流规则真正参与路由

  1. 确认客户端和配置来源:Shadowrocket 是规则代理客户端,App Store页面明确列出域名、域名后缀、域名关键词、CIDR IP和GeoIP等规则能力,也支持从网址或iCloud Drive导入规则文件。客户端本身不提供节点或订阅,服务器信息需要自行准备。可先在App Store产品页核对应用名称、开发者和功能。
  2. 切换到 Config:打开 Shadowrocket 首页,找到 Global Routing,选择 Config。不要把首页的 Config 路由模式和底部的 Config 配置文件管理混为一谈:前者决定是否按规则路由,后者决定使用哪份配置。
  3. 验证而不是只看开关:打开当前配置,检查规则是否保存、策略名称是否存在,再访问一个需要直连或代理的目标。通过连接日志、请求记录或 Connectivity Test 对照结果;如果仍然无法判断,暂时用同一目标分别测试 Direct、Proxy 和 Config,然后恢复原来的模式。

最短结论:如果 Global Routing 不是 Config,单独修改 [Rule] 往往看不到预期效果;如果已经是 Config,优先检查当前配置、规则顺序和策略名称。

先分清:节点订阅、配置文件、规则集和策略组

这四个概念解决的是不同问题。节点订阅通常提供服务器条目,例如地址、端口、协议和认证信息;配置文件负责组织通用设置、代理策略组和[Rule]规则;规则集是一批可远程更新或单独导入的匹配条件;策略组则是规则命中后要使用的处理对象,例如一个代理节点、节点组或直连策略。

对象主要作用常见误区
节点或订阅提供可连接的服务器条目导入成功不等于服务器一定可连接
配置文件保存规则、代理组和相关设置配置文件不是节点订阅的同义词
规则集集中维护一批匹配规则远程更新可能覆盖本地修改
策略决定命中后直连、代理或拒绝PROXY必须对应当前配置中存在的策略名称
Global Routing决定当前整体使用 Config、Proxy还是Direct选中节点不代表所有请求都按规则分流

因此,导入订阅后仍要单独检查配置文件和 Global Routing。Shadowrocket的App Store说明确认了规则匹配和规则文件导入能力,但服务器、配置与实际网络连通性仍需分别验证。

最小可用规则:DOMAIN、DOMAIN-SUFFIX和FINAL怎么写

手动编辑时,规则通常放在配置文件的[Rule]段。每行一般由“匹配类型、匹配值、策略”组成;FINAL只需要策略。下面的域名和地址仅用于演示语法,不代表任何服务或节点:

[Rule]
DOMAIN,login.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
DOMAIN-KEYWORD,video,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY
规则类型匹配范围适合场景
DOMAIN精确匹配一个域名只想处理某一个主机名
DOMAIN-SUFFIX匹配域名及其子域名处理一个站点及其静态资源域名
DOMAIN-KEYWORD匹配域名中包含的关键词范围较宽,使用前要评估误匹配
IP-CIDR匹配IPv4网段已知目标地址范围时使用
GEOIP按目标IP地理归属匹配作为区域性兜底,不宜替代所有域名规则
FINAL匹配前面没有命中的请求放在规则末尾作为最终策略

注意:域名规则中不要写https://、端口或网页路径。需要代理某个站点及其子域名时,通常应优先考虑DOMAIN-SUFFIX;只处理一个精确主机名时使用DOMAIN更窄。

按需求设置:直连、代理和拒绝的示例

指定域名走代理

如果只希望某个域名及其子域名使用代理,可写成:

DOMAIN-SUFFIX,example.com,PROXY

这里的PROXY必须是当前配置中已有的节点、策略组或策略名称。它只表示规则选择了代理处理,不代表服务器认证、DNS解析或最终连接一定成功。

指定域名直连

如果某个站点应绕过代理,可把更具体的直连规则放在宽泛规则前面:

DOMAIN,login.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY

访问login.example.com时,第一条规则先命中;其他example.com子域名再由第二条规则处理。

按地区作为兜底

一种常见写法是让已识别为某地区的IP直连,再让其余请求走代理:

GEOIP,CN,DIRECT
FINAL,PROXY

这只是逻辑示例。GeoIP结果取决于目标地址和客户端可获得的解析信息,不能把它当成绝对准确的地域判断。对必须稳定处理的站点,应优先使用明确的域名规则。

拒绝请求

REJECT可以阻止命中的请求,但广告、登录、通知和页面资源可能共用域名。规则过宽时,可能出现页面能打开但图片、登录或推送异常,因此添加拒绝规则后应测试完整功能,而不是只看首页。

规则顺序决定结果:具体在前,FINAL在后

分流规则通常按配置中的顺序检查,命中后就使用对应策略。可以按下面的顺序整理:

  1. 先放精确域名或明确例外,例如DOMAIN,login.example.com,DIRECT。
  2. 再放域名后缀规则,例如DOMAIN-SUFFIX,example.com,PROXY。
  3. 然后放关键词、IP网段或GeoIP等范围更宽的规则。
  4. 最后只保留一个清晰的FINAL兜底。

最常见的错误是把宽泛的DOMAIN-KEYWORD或FINAL放在前面,导致后面的具体规则没有机会匹配。另一个错误是规则写了PROXY,但配置中实际策略组叫其他名称。遇到这种情况,应先核对策略列表,而不是不断复制规则。

导入远程配置或规则集前,先备份再验证

  1. 备份当前状态:记录当前 Global Routing模式、活动配置名称、选中的节点或策略组,并保留原配置文件副本。
  2. 确认来源和格式:远程配置应明确是完整配置文件还是单独规则集。不要把规则集链接当作完整配置导入,也不要把包含脚本、重写或证书相关内容的文件当作普通分流规则。
  3. 导入后检查:确认文件已经下载、选中并显示为当前配置;打开内容检查是否存在[Rule]段、策略名称和FINAL。
  4. 重新载入:保存后重新选择配置,必要时断开并重新连接。不同版本的菜单名称可能变化,以当前App显示为准。
  5. 验证单一目标:每次只改一条规则,使用同一网络、同一目标和相近时间测试,并查看日志中实际采用的策略。
  6. 失败时回滚:如果出现大面积打不开、DNS异常或应用功能缺失,立即恢复备份配置,先确认基础连接正常,再逐项加回规则。

App Store页面还显示,Shadowrocket支持从网址或iCloud Drive导入规则文件;但远程文件的内容、更新频率和兼容性不能仅凭“导入成功”判断,导入后仍需检查和验证。

规则不生效:按这个顺序排查

  1. Global Routing不是Config:先在首页确认当前模式,若是Proxy或Direct,规则文件可能没有按预期参与路由。
  2. 配置没有选中:进入Config,确认编辑的文件就是当前启用的文件,避免改了A文件却运行B文件。
  3. 规则顺序被提前命中:搜索同一域名是否已经被更宽泛的后缀、关键词或规则集匹配。
  4. 策略名称不存在:检查规则末尾的PROXY、DIRECT或自定义策略是否与当前配置完全一致。
  5. FINAL位置错误:把FINAL移到最后,否则它可能提前接管所有请求。
  6. DNS或目标信息不可见:域名规则和IP规则依赖不同的匹配信息。若日志没有出现预期域名,先检查DNS解析、请求类型和当前网络。
  7. 基础连接本身失败:临时切换到Proxy模式测试同一目标。如果Proxy也失败,应先排查节点、认证、协议或本地网络,而不是继续修改分流规则。
  8. 恢复并逐项重做:撤销最近一次修改,只保留一条测试规则,确认结果后再添加下一条。

完成标准:怎样确认分流已经生效

  • 首页的 Global Routing 显示为Config。
  • 当前启用的配置文件与实际编辑的文件一致。
  • 规则中的策略名称在当前配置中确实存在。
  • 具体规则位于宽泛规则之前,FINAL位于末尾。
  • 日志或请求记录能看到目标请求及其实际处理策略。
  • 修改前后使用同一目标进行对比,而不是只凭网页是否打开判断。
  • 出现异常时可以恢复到备份配置,并知道是哪一条规则造成变化。

如果只能确认“Shadowrocket已连接”,但无法确认某个请求命中了哪条规则,说明连接层已验证,分流层还没有完成验证。

常见问题

Shadowrocket的Global Routing应该选哪个?

要使用分流规则,通常先选Config;Proxy和Direct更适合临时对比代理路径与直连路径。测试结束后恢复你的原设置。

Shadowrocket规则中的PROXY是什么意思?

PROXY是命中规则后的处理策略名称,表示使用代理路径。它不等于某个具体节点,且必须对应当前配置中存在的策略。

DOMAIN和DOMAIN-SUFFIX有什么区别?

DOMAIN用于精确域名;DOMAIN-SUFFIX通常覆盖该域名及其子域名。只处理一个主机名时用DOMAIN,处理整个站点范围时优先考虑DOMAIN-SUFFIX。

为什么规则写好了却没有生效?

先检查Global Routing是否为Config,再确认当前配置、规则顺序、策略名称和FINAL位置,最后查看日志确认请求实际命中了哪条规则。

远程规则集导入后能不能继续手动修改?

可以先备份再修改,但远程更新可能覆盖本地改动。建议保留原文件,并每次更新后重新检查规则顺序和策略名称。

相关阅读

参考资料

  1. App Store:Shadowrocket产品页与功能说明
  2. Shadowrocket规则关键词与匹配顺序说明(shadow-official.com)