Shadowrocket规则不生效怎么办?按 Config、命中、DNS 逐层排查
简答:Shadowrocket规则不生效,先做三步:在 Home 将 Global Routing 设为 Config;在 Config 确认正在使用的配置文件和规则内容;用同一个目标重新发起连接,并在 Data 或诊断记录中核对实际请求。若 Proxy 模式能访问、Config 模式异常,优先查规则顺序、动作名称和 DNS,而不是先更换节点。本文是第三方使用指南,不是 Shadowrocket 官方页面;菜单名称可能随应用版本或设备布局变化。
定义:Shadowrocket规则是配置文件中根据域名、IP、区域或其他请求条件,为网络请求选择代理、直连或拒绝策略的匹配条件。
先做三步速查:确认规则真的在运行
如果你只是想尽快恢复分流,不要先同时修改节点、DNS、规则文件和系统设置。先保留当前配置,按下面顺序只改一个变量。
- 回到 Home,打开 Global Routing。选择
Config,不要停留在Proxy或Direct。App Store 对 Shadowrocket 的功能说明显示,它支持按域名、域名后缀、域名关键词、CIDR IP 范围和 GeoIP 配置规则;但只有实际使用规则配置时,规则结果才有排查意义。App Store 应用说明 - 打开 Config,确认当前使用的文件。不要只看文件已经导入。一个文件可能已经下载、更新或编辑,但没有被当前连接使用。进入当前配置文件,查看规则区、策略组和规则集状态;如果界面提供“使用配置”“测试规则”或预览功能,优先使用当前版本显示的入口。
- 断开后重新连接,再访问同一个目标。不要只刷新已经打开的网页。记录本次测试的网络、节点、Global Routing、配置文件和目标域名,改变一个设置后重新发起请求,避免旧连接、缓存或长连接造成误判。
如果完成这三步后,目标仍然没有按预期走代理或直连,再根据下表分流。
| 现象 | 优先检查 | 下一步 |
|---|---|---|
| 所有网站都不按规则走 | Global Routing、当前配置、连接开关 | 恢复 Config,确认当前文件,再测试固定域名 |
| 只有一个域名异常 | DOMAIN 类型、域名拼写、规则顺序 | 先添加精确域名规则,再用新连接复测 |
| 所有请求都走代理 | 是否误选 Proxy、是否有宽泛规则或 FINAL | 切回 Config,检查宽泛规则是否排在前面 |
| 所有请求都直连 | 是否误选 Direct、动作是否为 DIRECT | 检查规则动作和最后的兜底规则 |
| 规则看似正确但仍打不开 | 策略组、节点、DNS、IPv4/IPv6 | 先用 Proxy 做短时对照,再恢复 Config |
第一层:确认 Config、配置文件和策略组没有错
Config 是路由模式,Config 页面里的文件是配置对象,两者不是一回事。排查时要同时确认:Home 的 Global Routing 为 Config;Config 页面选中的文件是你刚刚检查的那一份;配置文件中的动作指向了当前存在的策略组或节点。
常见误区是“文件已经导入,所以规则已经启用”。导入、选中、使用或编译、远程规则集更新,可能是不同动作。你可以按当前界面依次检查:
- 在 Config 列表找到目标文件,确认文件名称与更新时间。
- 进入文件详情或编辑界面,确认规则区不是空的,并能看到目标域名相关内容。
- 如果文件来自远程地址,先保存一份当前可用副本,再执行更新或重新使用配置。远程文件更新可能覆盖本地修改,因此不要在没有备份时直接覆盖。
- 检查规则动作,例如
DIRECT、REJECT、PROXY或自定义策略组名称是否真实存在。若规则写的是一个不存在的策略组,规则即使匹配,也可能无法按预期处理。 - 如果配置依赖远程规则集,查看其预览或更新结果。返回 HTML 错误页、空内容、需要登录的页面或失效地址,都不能当作有效规则文件。
Shadowrocket 的 App Store 页面确认了规则导入、请求记录、DNS 请求记录和 HTTPS/TCP 流量处理等能力,但没有在商店页面固定承诺所有菜单在每个版本中完全一致。因此,如果你的界面没有“编译配置”或“测试规则”字样,应以当前版本实际显示的入口为准,不要照抄其他版本的截图路径。App Store 功能说明
最小化测试建议:先只保留一个明确目标和一条动作,例如把一个你有权限测试的域名设为代理或直连,暂时停用脚本、重写和不必要的远程规则集。测试结束后恢复原配置,不要把最小测试片段当作完整配置导入。
第二层:确认规则到底有没有命中
“页面能打开”或“流量增加了”都不能单独证明某一条规则命中。更可靠的做法是使用应用内请求记录、Data、规则测试或诊断入口,观察具体请求对应的处理结果。App Store 页面明确列出 Shadowrocket 可记录并显示 HTTP、HTTPS 和 DNS 请求;如果当前版本提供请求详情,应优先查看请求本身,而不是凭网页表现猜测规则。App Store 请求记录说明
按域名规则排查
DOMAIN适合精确域名;不要把它当成覆盖所有子域名的写法。DOMAIN-SUFFIX覆盖指定后缀及其子域名;后缀过宽时,可能抢先匹配不希望处理的请求。DOMAIN-KEYWORD按域名中是否包含关键词判断,范围通常比精确域名更宽,误匹配风险也更高。- 规则内容要使用英文半角逗号和正确的域名拼写。复制时混入全角标点、空格或不可见字符,可能导致规则无法按预期识别。
按顺序排查宽泛规则
当多条规则都可能覆盖同一请求时,不要只看某条规则是否存在,还要看它前面是否已有更宽泛的规则、规则集或兜底动作。建议把明确的例外放在宽泛规则之前,并把兜底规则放在规则区最后。修改后只测试一个目标,避免一次移动多条规则导致无法判断是哪一处生效。
没有命中详情时怎么办
- 固定一个域名和一个网络环境,先记录 Config 模式结果。
- 临时切换到 Proxy,再访问同一个域名;Proxy 模式只用于判断节点和目标是否基本可达,不代表原规则正确。
- 临时切换到 Direct,观察直连结果;Direct 测试可能改变整个客户端处理的请求路径,不要在敏感业务或正在进行的工作中长时间使用。
- 测试完成后立即恢复 Config,并重新连接。
如果 Proxy 能访问、Direct 不能访问,而 Config 也不能访问,重点查规则动作、策略组和 DNS;如果三种模式都不能访问,规则可能不是主要原因,应转向节点、基础网络或目标服务排查。
第三层:DNS、IPv6、DoH/DoT 与 IP 规则误判
规则命中与域名最终解析到什么地址,是两个不同问题。Shadowrocket 的应用说明列出本地 DNS 映射、IPv6、DNS over HTTPS、DNS over TLS 和 DNS over QUIC 等能力;因此,域名规则看起来正确时,仍可能因为解析路径、IPv4/IPv6 或加密 DNS 设置而出现结果不一致。App Store DNS 与 IPv6 功能说明
建议按以下顺序缩小范围:
- 先看域名请求是否出现。如果 Data 或诊断记录里完全没有目标域名请求,先查连接开关、VPN 权限、应用是否被系统暂停,或目标应用是否使用了不同的连接方式。
- 再区分域名规则和 IP 规则。域名规则依赖请求中的域名信息;IP-CIDR、IP-CIDR6 或 GEOIP 规则依赖地址和解析结果。不要因为域名已写入规则,就假设所有对应 IP 请求都会遵循同一动作。
- 逐项测试 IPv6。如果只有部分网络或部分网站异常,记录当前配置是否启用 IPv6,并用同一目标在不同网络下复测。不要在没有备份的情况下长期修改 IPv6 相关设置。
- 检查 DoH、DoT 或 DoQ。加密 DNS 不是“规则一定生效”的证明。若 DNS 查询本身失败、被错误策略接管或无法通过当前节点访问,域名规则和网页访问都可能表现异常。一次只改变 DNS 方式,改完重新连接。
- 警惕 DNS 泄漏判断过度。看到系统 DNS、加密 DNS 或某个测试网站显示的解析服务器,不等于已经证明所有请求都绕过了 Shadowrocket。应结合应用内 DNS 请求记录、实际目标请求和当前路由模式判断。
Apple 的 Network Extension 文档说明,iOS 应用可以创建 VPN 配置和系统级 DNS 配置,但具体能力受平台和应用实现限制;因此,遇到系统 DNS、VPN 配置或多个网络扩展同时存在的情况,应把系统层和应用层分开检查。Apple Network Extension 文档
规则文件异常、远程资源失败与安全回滚
如果你在导入或更新后才遇到问题,优先怀疑文件本身或远程资源,而不是立即判断节点失效。以下现象值得单独处理:
- 文件能打开但规则区为空:检查导入内容是否只是节点订阅,而不是包含规则的配置文件。
- 规则集更新后突然全部失效:保留旧文件,检查远程地址是否返回有效规则文本,而不是错误页面或登录页面。
- 本地修改重启后消失:确认是否执行了远程覆盖更新;以后先复制配置,再编辑副本。
- 策略组名称改过但规则未改:逐条核对规则动作,尤其是自定义策略组和兜底规则。
- 脚本或 HTTPS 解密介入后异常:先关闭不必要的脚本、重写和解密功能,恢复到仅有节点、规则和 DNS 的最小状态。不要为了排查随意安装陌生脚本或公开证书、订阅链接。
如果需要移除系统中遗留的配置描述文件,Apple 的支持文档给出的路径是“设置 > 通用 > VPN 与设备管理”;删除配置文件会同时删除该配置提供的相关设置和数据,操作前应确认它不是学校、公司或其他必要管理配置。Apple:在 iPhone 上安装或移除配置描述文件
回滚顺序:先恢复 Global Routing 为 Config;再恢复最近一次可用的配置文件;随后恢复原节点和原 DNS;最后重新启用规则集、脚本或重写。每一步都用同一个目标域名复测,能够明确判断是哪一项设置引发变化。
复测清单:确认是规则问题还是节点问题
完成修改后,按下面清单做一次可重复验证:
- 确认 Home 的 Global Routing 为 Config。
- 确认 Config 中选中的文件就是刚刚编辑或恢复的文件。
- 确认连接开关已开启,且当前节点或策略组有可用选择。
- 使用一个固定域名,关闭旧页面后重新发起请求。
- 在 Data、请求记录、规则测试或诊断页面查看请求结果;没有相应入口时,用 Config、Proxy、Direct 三种模式做短时对照。
- 一次只恢复一项远程规则集、DNS、IPv6、脚本或重写功能。
- 测试结束后保存一份已验证可用的配置副本,不要公开完整订阅链接、节点密码、令牌或证书信息。
判断标准可以简单归纳为:Config 失败而 Proxy 成功,优先查规则、策略组和 DNS;Config、Proxy、Direct 都失败,优先查节点、网络或目标服务;只有个别域名失败,优先查域名写法、规则顺序和解析结果。
推荐边界:客户端规则排除后,再看网络连接方案
本文只解决 Shadowrocket 规则、配置、DNS 和连接路径的定位问题。若你已经确认规则能命中、Config/Proxy 对照正常,但跨网络或跨地区连接仍持续出现延迟、丢包或办公访问不稳定,再单独评估线路和网络方案,不要把客户端规则故障直接归因于服务端。
常见问题
Shadowrocket 规则不生效,第一步应该检查什么?
先打开 Home 的 Global Routing,确认选择的是 Config;然后进入 Config,确认当前使用的文件就是包含目标规则的文件。Proxy 和 Direct 是对照模式,不能用来判断 Config 规则是否正在工作。
Shadowrocket 规则文件导入了,为什么还是没有效果?
导入不等于启用。检查文件是否被当前 Config 使用,规则区是否有内容,远程规则集是否更新成功,以及规则动作引用的策略组是否存在。完成修改后要断开并重新连接,用同一个目标重新测试。
怎么确认到底命中了哪一条规则?
优先使用当前版本提供的规则测试、请求记录、Data 或诊断详情,查看具体请求和处理结果。如果没有显示命中规则,可固定一个域名,用 Config、Proxy、Direct 三种模式逐一对照,并一次只改变一个变量。流量变化本身不能证明某条规则命中。
Shadowrocket 规则顺序为什么会影响结果?
当多个规则都可能覆盖同一请求时,前面的宽泛规则可能先处理请求,使后面的精确例外无法达到预期。建议把明确的域名例外放在范围更宽的后缀、关键词或兜底规则之前,修改后重新发起新连接。
规则命中但网站仍然打不开,是节点失效吗?
不一定。还要检查策略组是否有有效选择、节点是否能建立连接、DNS 是否正常、IPv4/IPv6 是否存在差异,以及目标服务本身是否异常。若 Proxy 模式和 Config 模式都失败,规则通常不是唯一原因。
排查 Shadowrocket 规则时可以直接开启 HTTPS 解密或陌生脚本吗?
不建议。HTTPS 解密、脚本和重写会增加变量,也涉及证书和隐私风险。先用最小配置完成节点、规则和 DNS 的基础测试,只有在确认来源可信并了解用途后,再逐项恢复高级功能。
相关阅读
- 先分清 Shadowrocket 订阅、配置文件与节点
- 查看 Shadowrocket 订阅导入与连接排查步骤
- 继续排查机场代理连不上、节点和 DNS 问题
- 如果规则正常但速度慢,按网络和节点逐层排查
- 进入连接问题排查总览