先划分同步范围:节点、规则与设备参数
Clash 多设备配置同步并不等于复制整个客户端目录。节点凭据、分流规则、系统代理状态属于不同层级。把桌面配置原样导入手机,可能遇到字段不支持、端口冲突或 TUN 启动失败。更稳妥的方案是共享节点来源与规则意图,将网卡、监听端口和系统集成留在各设备本地。
还要先区分客户端与内核。使用 mihomo 的桌面客户端可以支持同一批内核字段,但配置合并、后台更新和脚本执行由客户端实现。其他内核或移动端代理应用即使接受部分 Clash 格式,也不代表能完整使用 mihomo 配置。本文中的 YAML 片段以 mihomo 为参照,导入前应确认目标内核及其字段支持情况。
| 配置内容 | 建议范围 | 原因 |
|---|---|---|
| 节点、订阅地址 | 同一账户的设备共享 | 凭据与流量额度通常由服务端统一管理 |
| 规则、策略组名称 | 尽量统一 | 避免同一域名在不同设备走不同出站 |
mixed-port、allow-lan | 设备本地维护 | 监听需求与局域网暴露范围不同 |
tun、控制接口 | 设备本地维护 | 依赖系统权限、网络栈与客户端管理方式 |
方案一:同一订阅链接分别导入
两到三台设备使用同一服务商时,订阅链接通常是维护成本最低的入口。在每台客户端的订阅或配置页面添加相同地址,手动更新并启用该配置。这里同步的是各设备从服务端取回的内容,不是客户端之间直接传输设置。
配置更新与运行状态分开检查
- 先在电脑导入订阅,确认节点列表、策略组和规则可用,再导入手机和平板。
- 检查各设备的订阅更新设置。若客户端允许,可将检查周期设为 24 小时;该数值是维护建议,并非 Clash 统一默认值。
- 每次服务商调整节点后,逐台手动更新一次,确认当前启用的仍是这条订阅。
- 在连接页面检查实际匹配规则及出站,不能只看配置文件显示“更新成功”。
订阅更新不会自动同步策略组当前选中的节点。电脑选择某个地区节点,手机仍可能保留自己的选择;连接历史、系统代理开关和 TUN 开关也通常独立保存。需要跨设备一致的策略时,可在配置中使用相同的自动选择组设计,但各设备测得的延迟仍会因网络不同而变化。
主要限制:更新受客户端调度影响
手机应用在后台可能被系统暂停。即使设定 24 小时更新,也不能保证在指定时刻拉取成功。电脑休眠、订阅服务器不可达同样会推迟更新。计划停用旧节点时,应给设备留出过渡时间,并在手机端前台执行一次更新。
还要确认服务商的设备数、并发连接和账户使用约定。共用订阅不意味着可以无限分发。订阅 URL 常带访问令牌,拥有该地址的人可能取得节点信息,应按账户凭据处理。
方案二:私有托管 YAML,集中维护规则
当自定义规则较多,或需要审核配置变更时,可以用私有仓库保存配置源,再通过受控的 HTTPS 入口向设备分发。仓库负责版本记录,下载入口负责身份验证,两者不能混为一谈。私有仓库的网页地址通常返回登录页面,不能直接当作 YAML 订阅地址。
完整配置与独立规则集的区别
托管完整配置时,设备拉取后应得到包含代理、策略组和规则的可用配置;只托管规则集时,则需要在主配置里用 rule-providers 引用,再由 rules 调用。单独一个规则集文件不能作为完整订阅启用。
下面用本地文件说明规则集结构。先将规则文件放到内核工作目录下的 rules/shared-direct.yaml,内容如下。example.com 是保留的示例域名,用于验证规则格式,正式部署时按实际业务域名修改。
payload:
- DOMAIN-SUFFIX,example.com
在主配置中加入以下片段,并保留原有节点和策略组。示例要求现有策略组名称为“节点选择”;若名称不同,应在最后一行使用配置中的真实名称。
rule-providers:
shared-direct:
type: file
behavior: classical
format: yaml
path: ./rules/shared-direct.yaml
rules:
- RULE-SET,shared-direct,DIRECT
- MATCH,节点选择
rules 自上而下匹配,末尾的 MATCH 是兜底规则。上述列表用于说明顺序,不应直接覆盖订阅中所有原有规则。若改成 HTTP 规则提供器,需要使用 type: http,另设实际下载地址、缓存路径和 interval。例如 interval: 86400 表示更新间隔为 86400 秒,即 24 小时;它控制规则提供器更新,不是完整订阅更新。
访问权限与回退副本
- 在每一种目标客户端上验证下载入口,确认返回 YAML,而不是登录页、跳转页或错误信息。
- 需要自定义认证头时,先检查客户端及对应下载机制是否支持,不能把浏览器已登录当作客户端也能访问。
- 仓库尽量只存规则与生成逻辑。节点密码、订阅令牌和控制接口密钥应单独管理。
- 每次发布保留一个已验证的旧版本,配置解析失败时可切回本地副本。
私有仓库不等于秘密不会泄露。凭据一旦提交,后续删除文件也不会自动清除历史版本。误提交后应先撤销或轮换凭据,再处理历史记录。不要把带令牌的下载地址粘贴到公开问题区或截图中。
方案三:订阅更新后应用本地覆写
本地覆写适合“节点跟随上游,设备设置保持不变”的场景。客户端通常先获取订阅,再通过合并配置或脚本生成最终运行配置。不过,“覆写”不是所有 Clash 客户端都遵循的统一协议;文件格式、合并顺序和脚本能力需要按实际客户端确认。
桌面端可在客户端提供的合并配置或覆写功能中维护下面的设备参数。片段演示仅监听本机的混合代理端口,既不设置系统代理,也不启用 TUN。
mixed-port: 7890
allow-lan: false
bind-address: 127.0.0.1
mode: rule
如果客户端统一管理监听端口,应优先在其设置界面修改,避免界面设置与覆写文件相互覆盖。手机端的 VPN 接管与桌面系统代理不是同一个机制,不需要为了“同步”而强行复制桌面端口设置。
列表合并是最容易出错的环节
rules、proxies 和 proxy-groups 都是列表。不同客户端可能替换整个列表,也可能提供前置、后置或脚本处理能力。不要假定写入两条本地规则后,原有几千条规则仍会保留。修改后应查看最终运行配置,确认原有列表没有被意外清空。
- 自定义直连规则应放在能够命中的位置,通常需要位于末尾
MATCH之前。 - 新增规则引用的策略组必须存在,组名中的空格和大小写也要一致。
- DNS 配置应整体核对。只改
enhanced-mode,并不能保证各平台的 DNS 接管方式相同。 - TUN 的设备名、路由排除和权限设置留在本机,避免跨系统套用。
三种方案的更新时效与维护成本
| 方案 | 生效条件 | 主要维护点 |
|---|---|---|
| 统一订阅链接 | 各设备成功拉取并启用配置 | 更新周期、账户限制、上游变更 |
| 私有托管 YAML | 发布成功且客户端下载可达 | 认证、版本回退、配置兼容性 |
| 本地覆写合并 | 订阅更新后正确应用合并流程 | 每台设备的合并语义与规则顺序 |
以 1 台电脑、1 部手机和 1 台平板为例,先用统一订阅解决节点更新,再给电脑保留独立的本地监听设置。等共享规则确实需要频繁修改时,再引入托管规则集。这样只增加必要的维护环节,不需要一开始就部署配置生成服务。
若三台设备都在前台,手动更新通常比等待定时任务更容易确认结果,但不能据此承诺固定的同步秒数。实际时效至少包含发布耗时、客户端调度、网络下载和重新加载四部分。应记录实际更新时间,而不是只比较设定的检查周期。
上线与排错:用同一条连接验证
首次发布的五步检查
- 记录环境。分别记录客户端名称、客户端版本、内核名称及版本,避免只写“最新版”。
- 保存旧配置。导出当前能用的配置,并记录当前策略组选择;备份文件按含凭据资料保管。
- 逐台更新。先电脑后手机,确认每台设备的下载时间与当前启用配置,不同时修改所有设备。
- 核对运行配置。查看
mode、规则顺序和引用的组名,确认覆写已进入最终配置。 - 测试实际连接。访问同一域名,在连接记录中比较匹配规则、策略组及最终节点,再测试一个应直连的站点。
同一配置,分流结果为何不同?
先检查是否都处于规则模式。全局模式不会按同样的规则列表分流。其次检查应用流量是否进入内核:桌面浏览器可能经过系统代理,而其他程序未使用代理;手机则可能由 VPN 接管。最后再比较 DNS 结果、规则提供器缓存与策略组当前选择。
更新成功,旧规则为何还在?
按“下载文件 → 当前启用项 → 合并结果 → 内核运行配置”的顺序排查。常见情况是更新了未启用的订阅,或本地覆写在最后一步重新写入旧规则。完整订阅与 HTTP 规则集也可能各有独立缓存,更新订阅后还应核对规则提供器状态。
怎样回退,才能保留排查线索?
先保存报错文本与失败版本,再切回上一个可用配置。涉及 TUN 或系统代理的修改,还应恢复对应设备开关,避免客户端退出后系统仍指向失效监听端口。后续每次只改一个层级:先验证节点来源,再验证共享规则,最后启用本地覆写。多设备同步的目标是分流策略可追踪、设备差异可解释,而不是让所有文件逐字相同。