订阅工作模式
在「订阅配置」页面中,Fluxor 允许您在两种不同类型的订阅加载逻辑间切换,满足不同用户的多机场管理需求。
通用:节点是怎么拉下来的
无论哪种模式,订阅数据的获取链路都是同一套:
- 直连优先:直接用 HTTP 请求订阅链接,按 Clash 明文 YAML 解析。此阶段限时 15 秒。
- 回退临时内核:若直连失败或被要求转换(例如链接返回的是 base64 订阅而非 Clash YAML),面板会临时启动一个独立的内核实例专门用于下载,完成后立即回收。此阶段同样限时 15 秒。
- 失败不重试:两阶段各自只尝试一次,不会自动重试,因此单次更新的最坏耗时约 30 秒,不会出现「卡好几分钟」的情况。
- 身份头透传:若订阅链接中带有
user:pass@形式的认证信息,会自动转换为请求头。
拉取到的节点文件统一存放在内核工作目录下的 proxies/ 目录中。
后台还会按每个订阅配置的
update_interval(节点更新)与health_interval(健康测速)周期运行定时任务,两者都可以在订阅编辑弹窗中按需调整。
融合模式 (Merge)
当您在页面上切换至融合模式并保存时,后台程序的合并逻辑如下:
1. 节点打散与合并
系统会并发向列表中所有启用的机场链接发起拉取。下载完成后,将每个订阅中的所有富强节点提取出来,剔除重名节点,最终混合并入同一个总的节点池中。
多订阅场景下建议为每个订阅设置节点前缀(编辑订阅时填写),生成的节点名会自动带上该前缀,便于在同一策略组内区分节点来源。
2. 生成统一的策略组
系统会加载统一的规则分流模板(标准 或 详细),并将上述合并后的所有节点写入到预设的策略组(如 节点选择、谷歌服务、苹果服务 等)中。
- 标准模版 (Base):根据国内外 IP 和网址进行分流,匹配速度快。
- 详细模版 (Full):基于 ruleset 规则进行更细粒度的分组分流,覆盖流媒体、游戏、广告等场景。
融合模式下每个订阅以
proxy-provider的形式被引用,因此节点列表由内核按需加载,面板无需把成百上千个节点字面量写进config.yaml。
优势与适用场景
- 优势:各机场节点互补。如果其中一个机场因网络波动出现断连,您可以直接在网页的同一策略组内一键切到另一个机场的节点上,体验极其连贯。
- 适用场景:适合手头拥有多个低价机场并希望自动整合为一个配置文件的用户。
3. 规则集自定义规则
融合模式下,「订阅列表」标题右侧、「添加订阅」按钮左侧有一个「自定义规则」按钮(切换模式下不显示该按钮,切换模式改用每个订阅卡片上的入口)。它用于在面板模板生成的规则之上,补几条自己的分流规则。
弹窗内按规则集分成两个页面(标准 / 详细),两边各读各的:
| 维度 | 标准 (base) | 详细 (full) |
|---|---|---|
| 可选目标 | 该档位模板自带的 5 个代理组(节点选择 / 手动选择 / 自动选择 / 漏网之鱼 / 全球直连) | 该档位模板自带的全部代理组(含香港/台湾/日本/新加坡/美国节点组、各流媒体组、私有网络、广告域名等) |
| 可选规则集 | 无(该档位没有 rule-providers,因此 RULE-SET 类型不可用) | 该档位的 31 个 rule-providers |
| 规则存放 | merge_custom_rules.base | merge_custom_rules.full |
两档的规则分开存放、分开生效:只有当前选中的规则集(「规则集」下拉框)里的规则会被写进 config.yaml,另一档的规则保持惰性,等切回该档位时再生效。因此弹窗里当前生效的那一页会标注「当前生效」。
其余交互与切换模式一致:规则类型白名单(选择类型后输入框给出取值示例)、目标下拉只列代理组(融合模式的节点由 proxy-providers 运行时加载,引用节点名会让内核拒绝加载整份配置)、插入位置 最前(默认)/ 末尾、写一条保存一条、每条可再编辑或用上下箭头调整顺序、目标失效的规则会被跳过并在列表中标注原因。
弹窗关闭时若改动的是当前生效的规则集,面板会给「规则」页打一个待刷新标记:等您切到规则页时才重新拉取规则列表(不切过去就不产生请求)。切换模式同理,只是判据换成「改动的是当前激活订阅」。
4. 流量隧道(tunnels)
同一个「自定义规则」弹窗也管流量隧道:把「类型」下拉拉到最末,选中 流量隧道 (tunnels),表单会整块换成隧道字段:
| 字段 | 说明 |
|---|---|
| 监听类型 | tcp+udp(默认)/ tcp / udp,下拉选择 |
| 本地监听地址 | host:port,例如 127.0.0.1:8888、0.0.0.0:8888 |
| 目标转发地址 | host:port(IP、域名均可,例如 8.8.8.8:8888、example.com:443);也可以只写域名(例如 example.com),此时按 http 默认端口补成 example.com:80。裸 IP 不行:8.8.8.8 会被拒绝并提示补端口(域名有约定俗成的默认端口,IP 没有,猜一个等于把流量转到别处)。列表中展示的是补全后的实际目标 |
| proxy | 关闭(不指定代理,按正常规则匹配选择出口)/ 该档位模板里的代理组。不提供 DIRECT / REJECT 等内置目标,也不提供代理节点(节点由 proxy-providers 运行时加载,静态校验看不到) |
隧道列表排在规则列表下方、独立成段,每条都带:
- 启停开关:关掉的隧道保留在列表里,但不会写进
config.yaml(既没生效也不会因它报错); - 编辑 / 上移 / 下移 / 删除:隧道没有「插入位置」的概念(它写在
rules之外的tunnels块里),列表顺序只决定产物中每条隧道的先后; - 失效提示:监听地址不是
host:port、目标缺少端口(裸 IP / 未加方括号的 IPv6)、proxy已不存在(机场改了组名)或与另一条隧道监听同一地址时,该条会标注「无效」与原因。
两档的隧道与规则一样分开存放、分开生效(merge_tunnels.base / merge_tunnels.full,只有当前档位那一份写进 config.yaml)。写一条保存一条:若当前档位正生效,改动会立即重建 config.yaml 并热重载内核。
隧道的
proxy必须是配置里真实存在的名字:内核遇到不存在的名字会拒绝加载整份配置(tunnel proxy X not found)。面板在写入前逐条校验并跳过失效条目,同时把「有 N 条隧道因配置无效未写入配置」提示出来。隧道块固定写在rule-providers/rules之前。
切换模式 (Switch)
当您在页面上切换至切换模式并保存时,后台的运行逻辑将发生变化:
1. 物理隔离与独立激活
每个机场订阅的数据都是独立的。在网页上,所有添加的订阅以独立卡片排列。当您点击某个卡片时,它会亮起蓝色边框,代表被当前激活(Active)。
2. 独立配置文件渲染
点击「保存并应用」后,系统只会加载这唯一一个被激活订阅的节点,并且直接提取并沿用该订阅源自身所自带的内置策略组和分流规则(而不是使用面板预置的 标准 或 详细 模板)。其他未选中的订阅节点文件将只作为备份存放在 shares/Fluxor/proxies/ 目录下,不加载运行。
切换模式需要该订阅文件已经在本地就绪。若您刚添加订阅就切到切换模式,面板会自动先补拉一次,避免出现「选中的订阅没有节点」的空配置。
优势与适用场景
- 优势:完美保持机场原装分流逻辑与策略树,各机场间物理隔离,互不干扰,性能损耗最少。
- 适用场景:适合购买了不同用途的高级专线机场(例如一个只用于外贸查资料,一个用于游戏加速),需要在不同场景间彻底切换隔离的用户。
3. 订阅自定义规则
切换模式下,每个订阅卡片上「编辑」与「删除」之间有一个「自定义规则」按钮(仅在切换模式且该订阅已保存后出现)。它用于在不改动机场原装规则的前提下,为某个订阅追加几条自己的分流规则。
规则按订阅分别保存,互不影响:
| 能力 | 说明 |
|---|---|
| 规则类型 | 面板提供内核支持的类型白名单(DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、DOMAIN-REGEX、GEOSITE、GEOIP、IP-CIDR、IP-CIDR6、IP-SUFFIX、IP-ASN、SRC-IP-CIDR、SRC-PORT、DST-PORT、PROCESS-NAME、NETWORK、RULE-SET),选择类型后输入框会按该类型给出取值示例 |
| 目标 | 可选该订阅自带的代理组,或内核内置的 DIRECT(直连)/ REJECT(拒绝)/ PASS(绕过)。不提供代理节点:节点名由机场随时改名或增删,而规则目标一旦解析不到,内核会拒绝加载整份配置 |
| 插入位置 | 最前(默认):插到规则最前,优先级高于机场自带规则;末尾:插在最后一条 MATCH(漏网之鱼)之前,保留机场原装分流逻辑 |
| 保存方式 | 写一条保存一条:添加 / 修改 / 上下移动 / 删除都立即持久化到 rules.json(切换模式按订阅、融合模式按档位、自定义模式独立存放),弹窗只需要「关闭」,没有整体「保存」按钮(单条规则的编辑用行内「保存」提交) |
| 修改与排序 | 每条规则都可用行内按钮再编辑(改类型/取值/目标/位置后点「保存」),或用上/下箭头调整顺序——顺序即优先级,对同插入位置的规则按列表顺序生效 |
| 生效时机 | 若该订阅正是当前激活的订阅,改动会同时重写 config.yaml 并热重载内核;未激活订阅只更新其本地记录,等切换为激活订阅时再生效 |
规则与内核语法的对应关系(面板负责组装,无需手写整行):
DOMAIN-SUFFIX,ads.example.com,REJECT → 插入位置:最前
IP-CIDR,1.1.1.0/24,🚀 节点选择,no-resolve → 插入位置:末尾插入位置决定优先级:
最前的规则会先于机场自带规则命中,末尾的规则只作为机场分流未覆盖时的补充。列表中的顺序与内核里的生效顺序一致(最前组在前、末尾组在后),上/下移动只在同一插入位置的组内进行。
注意:写规则时请留意
RULE-SET的取值必须来自该订阅自己的rule-providers(面板以下拉框列出);MATCH不支持自定义,它由机场配置提供并始终位于规则末位。
失效规则的处理:机场更新后代理组可能改名,此时旧规则的目标会解析不到。由于内核遇到无法解析的规则目标会拒绝加载整份配置(proxy [X] not found),面板在写入时会跳过这类规则并在运行日志中记录,保证 config.yaml 始终可用;这些规则仍会显示在弹窗列表中并标注失效原因,供您修正或删除。
4. 订阅流量隧道(tunnels)
同一个弹窗还管该订阅的流量隧道:把「类型」下拉拉到最末,选中 流量隧道,表单换成隧道字段(监听类型下拉 TCP+UDP/TCP/UDP、本地监听地址输入框、目标转发地址输入框、proxy 下拉「经代理转发」)。
目标转发地址既可以写 host:port(IP 或域名,如 8.8.8.8:8888、example.com:443),也可以只写域名(如 example.com)——后者按 http 默认端口补成 example.com:80,列表中展示补全后的实际目标;裸 IP(8.8.8.8、::1)会被拒绝并提示补端口。
proxy 可选 关闭(不指定代理,按正常规则匹配选择出口)或该订阅自带的代理组;不提供 DIRECT / REJECT,也不提供代理节点。隧道列表在规则列表下方独立成段,每条带启停开关(关闭的隧道不写进 config.yaml)与编辑 / 上移 / 下移 / 删除。
与规则一样按订阅分别保存、写一条保存一条:激活订阅的改动会立即重写 config.yaml 并热重载内核,未激活订阅只更新本地记录。隧道块固定写在 rule-providers / rules 之前(订阅文件本身保持原样,隧道只写进 config.yaml 副本)。
切换模式的自定义规则挂在订阅上(每个订阅一份),只有当前激活订阅的规则会进入
config.yaml。融合模式的自定义规则挂在规则集档位上(标准 / 详细各一份),见 融合模式 · 规则集自定义规则。
两种模式对比
| 维度 | 融合模式 (Merge) | 切换模式 (Switch) |
|---|---|---|
| 节点来源 | 所有启用的订阅合并去重 | 仅当前激活的那一个订阅 |
| 策略组与规则 | 使用面板内置模板(标准 / 详细) | 沿用订阅源自带的策略组与规则 |
| 多机场互补 | 支持,同一策略组内即可切换 | 不支持,需手动切换激活订阅 |
| 自定义规则 | 挂在规则集档位上(标准 / 详细各一份,仅当前档位生效) | 挂在订阅上(每订阅一份,仅激活订阅生效) |
| 流量隧道 | 挂在规则集档位上(标准 / 详细各一份,仅当前档位生效) | 挂在订阅上(每订阅一份,仅激活订阅生效) |
| 隔离性 | 所有节点混在一起 | 各订阅物理隔离,互不干扰 |
| 适用场景 | 多个低价机场互补使用 | 不同用途的专线机场彻底切换 |
修改模式后**必须点击「保存并应用」**才会重新生成
config.yaml并热重载内核。
