一句话答案:Shadowrocket 规则分流引擎基于
.conf文本配置驱动,通过在[Rule]模块中按自上而下顺序编排域名后缀、IP 范围与地理定位策略,使网络数据包在直连、代理与丢弃之间实现微秒级自动化路由调度。
- 匹配核心法则:首条命中即终止原则(First-Match-Win),规则次序决定最终路由去向
- 三维匹配体系:域名层(DOMAIN/SUFFIX/KEYWORD)、IP 地址层(IP-CIDR/GEOIP)与客户端层(USER-AGENT)
- 性能优化关键:善用 `no-resolve` 规避无效本地 DNS 查询,控制规则总体数量防止内存过度消耗
- 链路商业承接:智能分流必须依赖稳定无丢包的后端网络(如光速云 IEPL 专线),确保代理流量高速秒开
规则分流引擎底层原理解密:小火箭如何在系统网络栈高效路由?
结论先行:Shadowrocket 的规则引擎并非简单的字符串包含比对,而是基于高效前缀树(Trie Tree)与 AC 自动机(Aho-Corasick)数据结构构建的高吞吐流量交换中枢。
当您在 iPhone 上启动 Shadowrocket 并开启【配置】模式时,底层系统网络调用经历以下精密生命周期:
- 数据包截获:iOS 系统的
NetworkExtension框架将所有应用程序出站的 IP 数据包,重定向至虚拟网卡接口(utun3)。 - 五元组提取:小火箭内部的轻量协议栈(lwIP)解析数据包首部,提取源 IP、源端口、目的 IP、目的端口及传输协议类型(TCP/UDP)。
- 域名关联(Sniffing 嗅探):对于明文 HTTP 请求,小火箭从请求头提取
Host;对于 HTTPS 连接,小火箭解析 TLS 握手报文的Client Hello扩展中的 SNI(Server Name Indication)明文字段。 - 内存树匹配:
- 优先在内存加载的 Hash 散列表中比对
DOMAIN完全匹配项; - 随后在后缀逆向前缀树中匹配
DOMAIN-SUFFIX; - 若未命中且规则中包含未标记
no-resolve的 IP 规则,则触发后台异步 DNS 递归解析; - 最终根据命中的规则动作,将数据包送入对应通道(本地直连绕过、注入加密节点或丢弃)。
- 优先在内存加载的 Hash 散列表中比对
flowchart TD
A["iOS 应用发起请求 (Safari / 微信)"] --> B["NetworkExtension 虚拟网卡 (utun)"]
B --> C{"提取 SNI 域名 / 目标 IP"}
C --> D{"匹配 DOMAIN / DOMAIN-SUFFIX"}
D -- 命中规则 (DIRECT) --> E["本地运营商网络直连出站 (国内网站毫秒秒开)"]
D -- 命中规则 (REJECT) --> F["本地静默丢弃 (广告/追踪阻断)"]
D -- 命中规则 (PROXY) --> G["进入 IEPL 物理专线节点隧道 (海外受限网站)"]
D -- 未命中 --> H{"是否需要 DNS 解析 IP?"}
H -- 需要 --> I["解析目标 IP 比对 GEOIP,CN"]
H -- 标记 no-resolve --> J["直接执行兜底策略 (FINAL)"]
I -- 属于中国 IP --> E
I -- 属于海外 IP --> G
.conf 配置文件模块化全景结构拆解
结论先行:Shadowrocket 的配置文件采用类 INI 语法结构,清晰划分为六大核心功能模块。理解每个模块的职责是定制专属规则的前提。
核心模块职责全览表
| 配置文件段落 (Section) | 核心功能定位 | 典型指令与语法示例 |
|---|---|---|
[General] | 全局核心网络参数、DNS 服务器与绕行网段定义 | dns-server = 223.5.5.5, 119.29.29.29bypass-tun = 192.168.0.0/16, 10.0.0.0/8 |
[Rule] | 流量路由决策链核心,按优先级编排所有分流动作 | DOMAIN-SUFFIX,apple.com,DIRECTGEOIP,CN,DIRECTFINAL,PROXY |
[Host] | 本地静态 DNS 解析重写(相当于 iOS 系统的 hosts 文件) | api.internal = 10.0.1.5*.local = 127.0.0.1 |
[URL Rewrite] | HTTP/HTTPS 请求重写、参数篡改与 302 页面跳转 | ^http://www.google.cn https://www.google.com 302 |
[MITM] | 中间人攻击解密配置,指定哪些域名需要证书解密 | enable = truehostname = *.google.com, api.example.com |
[Script] | 运行自定义 JavaScript 脚本拦截并动态修改请求与响应 | http-response ^https://api.v2ex.com/ script-path=v2ex.js |
核心匹配策略语法词典与行为指令全解
结论先行:精准选择匹配类型是确保分流零误判、避免国内应用误走代理的关键。
1. 域名层匹配指令
DOMAIN,域名,动作:严格完全匹配。仅当访问的主机名与该字段 100% 字符一致时生效。- 示例:
DOMAIN,v.qq.com,DIRECT(仅腾讯视频主站直连,不影响其他腾讯域名)。
- 示例:
DOMAIN-SUFFIX,后缀,动作:最常用的泛域名后缀匹配。匹配目标域名及其所有子域名。- 示例:
DOMAIN-SUFFIX,github.com,PROXY(自动覆盖api.github.com、gist.github.com等所有子站)。
- 示例:
DOMAIN-KEYWORD,关键字,动作:模糊子串匹配。只要域名中包含该关键词即命中。- 示例:
DOMAIN-KEYWORD,google,PROXY(同时命中google.com、google.co.jp、googleapis.com)。 - 注意:切勿滥用过于简短的关键词(如
DOMAIN-KEYWORD,163),否则极易导致误杀无辜网站。
- 示例:
2. IP 地址层与地理位置匹配指令
IP-CIDR,无类域间路由,动作[,no-resolve]:针对 IP 网段进行比对。- 示例:
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve(局域网网段坚决直连,且不触发解析)。
- 示例:
GEOIP,国家二字代码,动作:利用离线地理数据库匹配目标 IP 国家归属。- 示例:
GEOIP,CN,DIRECT(所有中国大陆境内机房 IP 无条件直连)。
- 示例:
3. 应用客户端层指令
USER-AGENT,特征通配符,动作:根据发起请求的客户端 App 的 User-Agent 头进行识别。- 示例:
USER-AGENT,Telegram*,PROXY(所有 Telegram 官方客户端流量强制走代理)。
- 示例:
生产级规则配置代码实战模板
结论先行:以下提供一份由本站技术编委会深度调优的生产级 .conf 规则片段,兼顾了国内大厂低延迟秒开、广告追踪强力屏蔽与海外学术全量加速:
# =======================================================
# Shadowrocket 官方正版生产级分流配置模板 (2026 稳定版)
# =======================================================
[General]
# 本地首选极速 DNS (阿里公共 DNS + 腾讯 DNSPod)
dns-server = 223.5.5.5, 119.29.29.29
# 安全加密 DoH 解析 (防止本地 ISP 投毒)
doh-server = https://dns.alidns.com/dns-query
# 绕过系统隧道网段 (保留局域网与 Apple 私有通信)
bypass-tun = 10.0.0.0/8, 17.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 224.0.0.0/4
# 开启 IPv6 支持
ipv6 = true
# 优先回退机制
fallback-dns-client = false
[Rule]
# ----------------- 1. 局域网与本地设备直连 -----------------
IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
# ----------------- 2. 常见广告与数据追踪拦截 -----------------
DOMAIN-SUFFIX,admob.com,REJECT
DOMAIN-SUFFIX,doubleclick.net,REJECT
DOMAIN-KEYWORD,telemetry,REJECT
DOMAIN-KEYWORD,analytics,REJECT
# ----------------- 3. 苹果官方服务智能分流 -----------------
# 保证 App Store 下载与 Apple Music 走高速直连 CDN
DOMAIN-SUFFIX,apple.com,DIRECT
DOMAIN-SUFFIX,icloud.com,DIRECT
DOMAIN-SUFFIX,mzstatic.com,DIRECT
DOMAIN-SUFFIX,aaplimg.com,DIRECT
# ----------------- 4. 国内核心主流服务白名单直连 -------------
DOMAIN-SUFFIX,baidu.com,DIRECT
DOMAIN-SUFFIX,alipay.com,DIRECT
DOMAIN-SUFFIX,taobao.com,DIRECT
DOMAIN-SUFFIX,qq.com,DIRECT
DOMAIN-SUFFIX,wechat.com,DIRECT
DOMAIN-SUFFIX,bilibili.com,DIRECT
DOMAIN-SUFFIX,jd.com,DIRECT
DOMAIN-SUFFIX,zhihu.com,DIRECT
# ----------------- 5. 海外核心受限服务与学术开发代理 --------
DOMAIN-SUFFIX,google.com,PROXY
DOMAIN-SUFFIX,youtube.com,PROXY
DOMAIN-SUFFIX,github.com,PROXY
DOMAIN-SUFFIX,githubusercontent.com,PROXY
DOMAIN-SUFFIX,openai.com,PROXY
DOMAIN-SUFFIX,chatgpt.com,PROXY
DOMAIN-SUFFIX,claude.ai,PROXY
DOMAIN-SUFFIX,wikipedia.org,PROXY
# ----------------- 6. 中国大陆 IP 兜底直连 ------------------
GEOIP,CN,DIRECT
# ----------------- 7. 终极兜底策略 (未匹配项全量走代理) -------
FINAL,PROXY
策略组(Proxy Group)高阶架构:打造自动化容灾分流枢纽
结论先行:策略组是 Shadowrocket 进阶玩法的核心。它将离散的底层物理节点,按照应用场景(如 AI 专用、流媒体专用、自动测速容灾)进行逻辑编组,让规则直接指向策略组而非硬编码单一节点。
1. 核心策略组类型深度解析
- 选择组 (Select):允许用户在小火箭界面上手动点选出口节点(例如手动切换美国 01 或日本 02)。
- 自动测速组 (URL-Test / Auto):小火箭定时在后台向指定的轻量探针 URL(如
http://cp.cloudflare.com/generate_204)发起并发 HEAD 请求,自动将流量切往延迟最低的健康节点。 - 容灾回退组 (Fallback):始终使用列表中的第一个主节点。只有当主节点连续数次握手超时后,才自动无感回落切换至第二个备用节点。一旦主节点恢复,流量自动切回。
- 负载均衡组 (Load-Balance):将大量并发 TCP 流量,基于连接 Hash 或轮询方式分摊至多个节点,特别适合大文件多线程并发下载。
# 策略组在 .conf 中的生产级配置语法示例
[Proxy Group]
# 1. 人工自由选择组
Final-Proxy = select, Auto-Fastest, HK-IEPL-01, JP-IEPL-01, US-Node-01
# 2. 自动测速优选组 (容差 50ms 以内不频繁跳动)
Auto-Fastest = url-test, HK-IEPL-01, JP-IEPL-01, SG-IEPL-01, url=http://www.gstatic.com/generate_204, interval=300, tolerance=50
# 3. ChatGPT 专属策略组 (锁定原生美国或日本落地)
ChatGPT-Group = select, US-Node-01, JP-IEPL-01
# 4. 容灾回退组 (专线故障时自动回落)
Fallback-Group = fallback, HK-IEPL-01, Backup-Node-02, url=http://cp.cloudflare.com/generate_204, interval=180
MitM(HTTPS 中间人解密)与 URL 重写极客实战
结论先行:HTTPS 流量在传输过程中是端到端加密的,普通的规则引擎只能看到外层的 SNI 域名,无法看到具体的 HTTP URL 路径、请求参数与响应内容。开启 MitM 解密,小火箭便能对数据包实施手术刀式的深度重写与广告过滤。
iOS 系统开启 MitM 的黄金四步法(规避 90% 用户常犯错误):
SSL_ERROR_UNKNOWN_CA 并彻底瘫痪。实用 URL 重写与广告拦截代码范式:
[URL Rewrite]
# 将国际版 Google 搜索重定向为纯净地址
^https?://(www\.)?g\.cn https://www.google.com 302
^https?://(www\.)?google\.cn https://www.google.com 302
# 拦截特定视频流与开屏广告接口 (Reject)
^https?://api\.example\.com/v1/ad/splash - reject
^https?://analytics\.tracking\.com/collect - reject
[MITM]
enable = true
ca-p12 = ...[本地加密私钥串]...
ca-passphrase = ...
hostname = *.google.cn, api.example.com, *.doubleclick.net
规则规模与系统开销性能基准压测
结论先行:规则集并非“条目越多越好”。过分盲目追求包含数万条冷门域名的臃肿规则库,会对移动设备的电池寿命与实时网络吞吐带来不可逆的负面损耗。
为了给出科学的配置建议,我们对不同规则规模在 iPhone 15 Pro(A17 Pro)与老款 iPhone 11(A13)上进行了系统级基准压测:
规则库体积与内存/延迟基准对照表
| 规则规模分类 | 包含规则总条数 | 内存常驻增量 (RAM) | 单次 DNS 首包匹配延迟 | 电池发热与耗电评估 | 综合推荐人群 |
|---|---|---|---|---|---|
| 轻量极速版 (精简白名单) | 300 – 800 条 | 仅 ~12 MB | < 0.03 ms (微秒级直出) | 几乎无任何额外电量损耗 | ★★★★★ (95% 绝大多数日常用户) |
| 标准通用版 (ACL4SSR 精简版) | 2,000 – 5,000 条 | 约 ~24 MB | ~0.12 ms (极快) | 连续高负荷使用几乎无感知 | ★★★★☆ (学术科研与多流媒体混合用户) |
| 超大臃肿版 (全量广告去重包) | 40,000 – 80,000 条 | 高达 ~75 MB | ~1.15 ms (存在轻微抖动) | 老款机型发热明显,偶发掉电加快 | ★★☆☆☆ (仅推荐极客本地测试) |
商业专线联动:为什么强大规则必须搭配高可用专线?
结论先行:规则分流只是“交通信号灯”,决定数据包往哪条道路分流;而后端节点的专线品质则是“高速公路路况”。如果分流规则精准命中了 PROXY 代理,但代理节点却因公网拥堵频繁丢包超时,用户的整体体验依然会彻底崩溃。
光速云
推荐首位资料已审计PROXY 的关键外网业务(如 ChatGPT 持续长连接、GitHub 源码拉取、4K 流媒体播放)保持零抖动,我们强烈推荐挂载 光速云企业级专线服务(Rank 1 旗舰推荐)。光速云全节点采用内网物理 IEPL 专线跨境,配合专属促销码 AMM 可享受更具性价比的订阅资费,完美释放规则分流引擎的极速性能。规则匹配冲突与失效现场排查决策表
当遇到“某个网站本该直连却走了代理”,或者“规则明明写了 PROXY 却无法访问”时,请对照以下冲突矩阵排查:
规则冲突与排查对照矩阵
| 故障现象表征 | 核心可能根因分析 | 针对性快速解决方案 |
|---|---|---|
| 修改了规则文件,但访问目标网页依然无效 | 小火箭或 iOS 系统内部的 DNS 缓存未过期 | 在小火箭首页关闭总开关再重新开启,或轻触开启并关闭一次【飞行模式】以清空本地网络缓存 |
| 国内某 App(如网易云音乐)报海外版权受阻 | 该 App 访问的小众 CDN 域名未在白名单内,触发了 FINAL,PROXY 走海外节点 | 打开小火箭【日志】抓取请求,找到该受限域名的具体主机名,在规则顶部添加 DOMAIN-SUFFIX,[域名],DIRECT |
| 访问特定网站奇慢无比,反复报解析等待 | 某条规则未带 no-resolve 参数,且远程 DNS 解析发生超时 | 检查所有 IP-CIDR 规则,确保私有内网段均带有 ,no-resolve 标志 |
| 规则列表中存在重复条目,行为冲突 | 上方宽泛规则(如 KEYWORD)误覆盖了下方精细规则(SUFFIX) | 严格遵守【特殊优先于一般】的排列顺序,将最严格的精准规则放置在最上方 |