Shadowrocket(小火箭)的配置文件用于组织参数、规则和地址处理逻辑,不等于服务器订阅。本文适合已有服务资料、准备阅读或修改 .conf 文件的用户:先辨认四个段落,再在 Config 中导入、编辑并选中配置,最后通过 Global Routing 与连接记录核对结果。
一、先区分配置文件、服务资料与运行模式
.conf 是文本配置文件,段名由方括号包围,每个段名下面放对应内容。把规则写进 [General],或把 DNS 参数放进 [Rule],都不能表达原本想要的设置。阅读文件时应先找段名,再看每行语法,不要只搜索某个域名后直接粘贴修改。
本文以用户已有自己的服务商与订阅为前提。Home 中的服务器资料描述连接目标、端口和认证方式;Config 中的文件描述请求如何分流。导入配置文件不会自动补齐缺失的服务器信息,更新服务器订阅也不等于更新当前选中的配置文件。
- Home:核对已有服务器资料、选择连接目标,并查看 Global Routing。
- Config:导入、选择和编辑配置文件;文件存在于列表中,不代表它已经被选中。
- Settings:调整应用设置,例如通过 Settings → On Demand 管理按需连接条件;On Demand 不代替分流规则。
二、[General]:全局参数按键值填写
[General] 使用 键 = 值 的形式。这里适合放 DNS 等全局参数,不写 DOMAIN-SUFFIX 规则。排查时先记录旧值,每次只改一项;同时改 DNS、规则和连接目标,会让后续很难判断是哪一步影响了结果。
[General]
dns-server = system
这段示例让 DNS 使用系统提供的解析服务器。它不是对所有网络环境都适用的固定方案:如果当前网络本身存在解析问题,保留 system 并不会自动修复问题。需要指定其他解析服务器时,应使用自己确认可用的地址,并按应用支持的格式填写。
参数行检查
- 段名
[General]- 参数名
dns-server- 赋值符号
- 英文半角
= - 本文示例值
system
先确认参数所在段落,再核对值的格式与实际网络条件。
规则行检查
- 段名
[Rule]- 规则类型
DOMAIN-SUFFIX- 匹配内容
example.com- 执行策略
PROXY
规则字段使用英文逗号分隔,不采用参数行的等号形式。
不要为了“配置完整”把网上看到的所有参数一起加入。先保留可以解释清楚的设置;如需更改 IPv6、超时等行为,应先核对应用内说明和对应参数的取值,而不是沿用来源不明的数值。
三、[Rule]:自上而下匹配,FINAL 放最后
[Rule] 决定请求采用哪条策略。规则按顺序检查,命中后采用对应策略,因此范围更小的例外通常放在范围更大的规则前面。下面的示例只演示语法;example.com 是示例域名,需要按自己的实际目标调整。
[Rule]
DOMAIN,login.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,DIRECT
| 关键字 | 本例的匹配对象 | 检查重点 |
|---|---|---|
DOMAIN | 精确匹配 login.example.com | 该例外先于后面的域名后缀规则处理。 |
DOMAIN-SUFFIX | example.com 及其子域名 | 不填写 URL 路径、协议头或端口。 |
IP-CIDR | 192.168.0.0/16 地址范围 | no-resolve 避免仅为这条 IP 规则主动触发域名解析。 |
GEOIP | IP 地理数据库中归属 CN 的地址 | 依据 IP 数据库,不是依据域名后缀判断。 |
FINAL | 未命中前面规则的请求 | 放最后;其后的规则没有正常参与匹配的机会。 |
本例中,访问 login.example.com 会先命中第一行并使用 DIRECT;访问 www.example.com 则会命中第二行并使用 PROXY。若把前两行交换,登录域名也会先被后缀规则匹配,第一行原本表达的例外便失去作用。
四、[Host]:域名映射不等于代理规则
[Host] 用于给域名指定本地映射。它回答“这个名称对应哪个地址”,而 [Rule] 回答“这个请求采用什么策略”。两者属于不同层面:添加映射后,仍应检查相应请求命中了哪条规则。
[Host]
device.example.com = 192.0.2.10
192.0.2.10 属于文档示例地址,不是可供连接的真实设备。此处只展示“域名等号地址”的格式,不能照抄后期待网页打开。真正使用时,填写自己确认的目标地址,并确认当前网络能够到达该地址。
- 左侧写域名,不写
https://,也不附加/path。 - 映射不会修改浏览器地址栏中的域名,也不会自动改变 HTTPS 证书要求。
- 指向错误地址时,可能出现连接失败或证书不匹配;不要通过关闭证书校验来掩盖映射错误。
- 如果应用自行使用其他解析方式或复用旧连接,观察结果可能不会立刻变化;应结合新建连接与记录核对。
没有明确映射需求时,可以不写这个段落。若临时添加了一行用于定位问题,验证结束后应删除或恢复原值,避免远端服务地址发生变化后仍被旧映射固定。
五、[URL Rewrite]:按地址模式改写请求
[URL Rewrite] 描述 URL 匹配与改写,不负责选择代理策略。常见写法包含匹配表达式、目标地址和处理方式。下面以 HTTP 地址跳转为例,展示匹配开头、转义域名中的点,以及使用 302 返回临时重定向的语法。
[URL Rewrite]
^http://example\.com/ https://example.com/ 302
按目标选择段落,不混用两种规则
需要改变连接策略
- 使用
[Rule]。 - 例如让 example.com 使用
PROXY。 - 通过连接记录核对命中规则与策略。
需要改变请求地址
- 使用
[URL Rewrite]。 - 例如把匹配的 HTTP 地址重定向到 HTTPS。
- 核对匹配表达式、目标地址及重定向循环。
“走哪条连接路径”与“请求哪个地址”是两件事,应分别验证。
示例中的 ^ 限定字符串开头,\. 匹配字面上的点。表达式写得过宽,可能影响不相关的地址;目标地址又匹配回原规则时,还可能形成重定向循环。HTTPS 请求受到加密保护,不能认为写入一行规则就一定能读取并改写其中的路径;是否需要额外配置取决于具体处理方式。本文不涉及 HTTPS 解密设置。
六、Config 导入、编辑与启用步骤
先保留现有可用文件,再导入或编辑副本。远程配置地址应来自用户自己确认的来源,返回内容应是配置文本,而不是登录页或网页说明。含令牌的地址属于敏感资料,不应出现在公开截图或求助记录中。
-
保留原件
进入 Config,记录当前选中的文件名,并保留原始文本副本。后续测试失败时,用原文件恢复,不要继续在未知状态上叠加修改。
-
导入文件
在 Config 点右上角「+」,填写自己已有的配置 URL,并通过 Download 获取配置。导入后核对列表中的文件与实际内容,不要把服务器订阅地址误当成 .conf 地址。
-
编辑文本
在 Config 打开目标文件右侧的信息按钮,进入 Edit Plain Text。先核对段名,再按行编辑;若界面使用本地化标签,以当前显示的对应文本编辑入口为准。
-
选中配置
保存后回到 Config,点选目标文件并确认选中标记。回到 Home → Global Routing,选择 Config;仅保存文本并不会把其他模式自动改为 Config。
-
重新验证
确认 Home 中已有连接目标可用,重新建立连接后测试一个目标域名和一个非目标域名。查看连接记录中的目标、策略与命中规则,必要时恢复原文件对照。
远程配置更新可能覆盖本地修改。需要持续保留的规则应另存副本,并在更新后比较段落内容。配置文件中如含服务器资料、认证信息或专用地址,分享前也要逐项清理,不只遮住文件名。
七、用 Global Routing 与记录确认是否生效
“已经导入”和“正在按文件分流”不是同一状态。对本文的 [Rule] 示例,应先确认 Global Routing 为 Config。其他模式适合不同用途,不能把临时切换模式后的结果直接当成规则文件已经生效的证据。
Config
推荐按当前配置文件的规则决定策略。本文示例的域名例外、后缀匹配和 FINAL 兜底都应在此模式下验证。
适合:阅读、修改和验证本文的分流规则。
Proxy
将可代理的流量统一交给代理路径,用于检查已有连接目标是否能够工作;不用于验证本文逐条分流规则。
适合:临时隔离规则因素,排查代理连接。
Direct
使用直连路径,可作为网络对照。切到此模式后出现访问变化,不等于原配置中的域名规则写错。
适合:检查当前网络的直连可达性。
Scene
按已设置的场景条件决定路由行为。排查时需要同时核对场景条件与实际采用的模式,避免只看配置文件。
适合:已经明确设置并了解场景切换条件的使用情形。
测试应围绕可观察结果进行,而不是只看连接开关是否打开。浏览器缓存、旧连接和应用自身的请求方式都可能干扰判断;修改后使用新请求,并以连接记录辅助核对。下表列出的是排查方向,不是对所有应用访问行为的保证。
| 观察现象 | 优先检查 | 下一步 |
|---|---|---|
| 规则已保存,但策略不变 | 当前文件是否选中、Global Routing 是否为 Config | 确认选择后重新连接,再查看新请求记录。 |
| 只有指定域名失败 | 靠前的 DOMAIN、DOMAIN-SUFFIX 或 REJECT | 按文件顺序找到首条命中规则。 |
| 域名解析到旧地址 | Host 映射、DNS 缓存和已有连接 | 恢复映射并用新连接对照。 |
| 地址反复跳转 | URL Rewrite 的匹配范围与目标地址 | 先移除该条改写,再逐条恢复验证。 |
| 更新后自定义规则消失 | 是否更新了同名远程配置 | 恢复本地副本,并对比更新前后文本。 |
完成检查后,应能说明当前使用哪个文件、请求命中哪条规则,以及为什么采用该策略。能够回答这三点,再继续增加复杂规则;无需映射或改写时,保持相应段落为空或不添加即可。