本文速览

本文适合已有可用服务、准备阅读或修改 .conf 文件的用户。先区分 Config 文件与 Home 中的服务器,再按四个配置段核对语法,最后通过切换配置和单项测试确认修改是否生效。示例只说明字段与匹配方式,不包含可用服务信息。

1. .conf 文件与 Home、Config、Settings 的关系

Shadowrocket(小火箭)的 .conf 文件是文本配置,使用方括号段名划分职责。[General] 下通常是全局参数,[Rule] 下是分流规则,[Host] 下是域名映射,[URL Rewrite] 下是请求 URL 的改写规则。四个段落是本文的阅读范围,不代表完整配置只能包含这四段。

Home 主要用于选择用户已有的服务器并控制连接,Config 用于管理和选择配置文件,Settings 用于应用级设置。服务订阅更新与远程配置更新是两种操作:前者通常更新服务器资料,后者更新配置内容。判断是否覆盖本地修改,应先确认正在更新哪一类资源。

4 段
本文解析 General、Rule、Host、URL Rewrite
3 处
核对位置:Home / Config / Settings
1 项
每轮只修改一个参数或一条规则

判断:先确认活动配置,再解释文件内容

打开 Config,确认当前选中的文件与正在编辑的文件一致;随后回到 Home,将 Global Routing 设为 Config 再验证分流。仅保存一个未选中的文件,不会让其中的规则自动接管连接。

2. [General]:全局参数与 DNS 基线

[General] 使用 键 = 值 的写法。DNS 相关参数决定域名查询采用的设置,不能仅凭服务器延迟测试成功就认定解析正常。延迟测试只反映对应测试路径;实际网页还涉及目标域名、解析结果与后续连接。

[General]
dns-server = system
ipv6 = false

dns-server = system 表示使用系统 DNS 设置,适合作为对照基线,不表示当前网络提供的解析服务一定可用。需要使用指定解析器时,应填写自己确认可达且受信任的地址,并保持与网络环境相符;不要把多个来源不明的参数整段叠加。

ipv6 = false 用于关闭此项 IPv6 支持,示例目的是建立便于对照的测试条件,并非要求所有网络关闭 IPv6。它也不等于修改整个设备的网络栈。若原环境依赖 IPv6,应保留原值,结合解析记录与实际连接结果判断。

  • 修改前记录原有 dns-server 值,保留一份可恢复的配置。
  • 使用同一域名测试,分别记录是否解析成功、是否建立连接,不把两种失败混为一谈。
  • 传统 DNS 通常使用端口 53;解析请求可达与网页的 443 端口可达属于不同检查项。
  • 测试期间不要同时更换 DNS、服务器和规则,否则无法确定是哪项修改产生影响。

3. [Rule]:按顺序匹配与 FINAL 兜底

[Rule] 通常按自上而下的顺序检查,命中后使用该条规则的策略。更具体的规则应放在宽泛规则之前;FINAL 用于承接此前未命中的请求,应放在末尾。下面使用保留示例域名和文档地址,不代表推荐访问目标。

[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
GEOIP,CN,DIRECT
FINAL,PROXY

DOMAIN-SUFFIX,example.com,PROXY 匹配该域名及其子域名,不需要写成 *.example.com。IP-CIDR 按目标 IP 所在网段匹配;示例中的 no-resolve 表示不为了这一条 IP 规则额外发起域名解析,因此不要期待它主动把所有域名解析后再检查网段。

GEOIP,CN,DIRECT 按目标 IP 的地理归属数据匹配,不是判断网页内容、域名后缀或运营主体。归属结果依赖所用数据库,不能据此保证某个域名必然走 DIRECT。域名策略需要确定性时,应在前面写明确的域名规则。

匹配字段

DOMAIN-SUFFIX
example.com:域名后缀
IP-CIDR
192.0.2.0/24:IPv4 网段
GEOIP
CN:目标 IP 归属代码

明确域名规则放前面,IP 类规则按实际需求排列。

策略字段

PROXY
使用代理策略处理连接
DIRECT
直接连接目标
REJECT
拒绝该请求

FINAL 是规则关键字,其后仍需填写策略,例如 FINAL,PROXY。

这里的 PROXY 不包含服务器地址、端口或认证信息,也不会创建可用服务。实际出站仍取决于用户已有的服务器与当前选择。遇到未知策略名称时,先检查配置中是否另有相应策略定义,不要直接把名称替换成协议名。

4. [Host]:本地映射不等于分流规则

[Host] 用于为特定域名提供本地映射。最直接的写法是域名等于 IP 地址,适合已知固定地址的测试环境。下面的 192.0.2.10 是文档示例地址,不能用来验证真实站点能否打开。

[Host]
lab.example.com = 192.0.2.10

这条记录表达“为 lab.example.com 使用指定地址”,并不表达“走 DIRECT”。解析或映射确定目标地址后,连接仍需按适用的路由设置处理。如果需要给该域名指定出站策略,应另外在 [Rule] 中编写规则。

  • 域名迁移:服务端更换地址后,固定映射可能仍指向旧 IP,应同步核对。
  • HTTPS:映射不改变证书校验要求,服务端证书仍需与请求域名相符。
  • 应用缓存:修改映射后应重新发起连接;已经建立的连接未必重新解析。
  • 输入格式:左侧填写域名,不添加 https://、路径或端口。

不要把某次查询得到的地址长期固定到使用动态调度的站点上。若网站依赖 CDN 或按网络分配地址,过时的映射会绕过正常解析过程,表现为部分资源超时,而非所有请求同时失败。

5. [URL Rewrite]:匹配 URL 并指定改写动作

[URL Rewrite] 面向请求 URL,而不是选择代理出站。规则通常包含匹配表达式、目标地址与动作。下面演示将一个测试域名的 HTTP 请求重定向到 HTTPS,末尾 302 是重定向状态码,不是端口号。

[URL Rewrite]
^http://example\.com/(.*)$ https://example.com/$1 302

表达式开头的 ^ 与末尾的 $ 限定匹配范围;\. 表示域名中的普通句点;(.*) 捕获路径及后续内容,目标中的 $1 引用第一组捕获结果。若把句点直接写成 .,在正则语义中它会匹配任意单个字符,范围可能比预期更宽。

  1. 先用一个自己可控制的 HTTP 测试地址验证规则,不从复杂登录页面开始。
  2. 检查是否发生重定向,以及路径、查询参数是否按预期保留。
  3. 确认目标不会再跳回原地址,避免形成重定向循环。
  4. 验证后再逐步扩大匹配范围,保留修改前的原规则以便回退。

6. 在 Config 编辑、选择与验证 .conf

编辑前先保留当前可用文件的副本。若文件来自远程配置,另存本地副本后再实验,避免下一次远程更新覆盖修改。副本名称只用于自己辨认,例如 local-test.conf;名称本身不决定它是否生效。

备份原配置 编辑单项 保存并选中 重建连接 核对请求
  1. 进入 Config:找到目标文件,从文件操作中进入文本编辑。编辑入口的图标或呈现方式可能随界面调整,以实际可见项目为准。
  2. 检查段落边界:确认键值位于正确段名下。不要把 dns-server = system 粘到 [Rule] 中,也不要把 FINAL,PROXY 写成 General 参数。
  3. 保存并选择:返回 Config 文件列表,确认活动标记位于刚保存的文件;只进入编辑器查看文件不等于切换配置。
  4. 核对模式:回到 Home → Global Routing,选择 Config。Proxy 与 Direct 用于整体代理或直连姿态的对照,不适合用来证明文件内分流规则有效;Scene 则需结合已配置的场景条件判断。
  5. 重建测试连接:在允许短暂断网时重新连接,再重新打开测试页面,避免沿用旧连接。检查请求记录中的目标、策略与错误信息。

Settings → On Demand 用于按已设置的条件自动连接,与选择 .conf 文件是不同维度。排查时若连接状态自行变化,应同时核对 On Demand 条件;不要把自动重连误认为刚保存的配置触发了连接。

验证时应保存可对照的现象。例如,同一个测试域名在修改前能解析但连接超时,修改后仍能解析且规则命中变为 DIRECT,这只能说明匹配与出站发生了变化;是否真正恢复访问,还要继续确认页面请求完成,不能只看连接开关。

7. 配置编辑常见问题

保存了规则,为什么访问还是走原来的策略?

先检查 Config 当前选中的文件,再检查 Home → Global Routing 是否为 Config。确认这两项后,查看目标规则上方是否已有更宽泛的规则命中,并重新发起请求,排除已有连接仍在使用旧策略的情况。

把 FINAL 放到第一行,会有什么影响?

FINAL 会承接走到该位置的请求,放在前面会让后续普通规则失去匹配机会。将它移到 [Rule] 末尾,再把特定域名、网段与其他条件放在前面,逐条检查顺序。

为什么更新后,手动改过的内容消失了?

先确认更新的是远程配置还是 Home 中的服务订阅。远程配置重新获取后可能覆盖本地内容;需要长期保留的实验修改,应写入独立本地副本,并确认后续仍选中这个副本。

删掉 Host 映射后,域名还是访问异常怎么办?

保存并重新连接,关闭目标页面后重新打开,再检查是否仍有其他映射、规则或应用连接缓存。随后核对 DNS 返回结果与实际目标地址,区分解析失败、连接超时和证书错误,不用重复添加固定 IP 作为通用修复。

完成配置后,保留一份已验证可用的本地副本,并记录自己修改的字段与测试结果。后续遇到异常,先回到这个基线,再逐项恢复修改,比同时替换整个配置和服务器更容易定位原因。