多台设备共用一套 Clash 配置:订阅、同步与备份的可行方案

对比订阅链接统一更新、配置文件云盘同步、自建配置托管三种方案,说明各客户端配置目录位置与跨平台字段差异的处理方式。

先确定同步对象:节点、规则还是完整运行配置

“多台设备共用一套配置”通常包含三种不同需求:让 Windows、macOS 和手机取得同一批节点;让各设备使用相同的规则与代理组;或者直接复制完整的 config.yaml。三者的同步范围不同。节点订阅最容易统一,规则与代理组适合集中维护,完整运行配置则经常受到系统、客户端和内核版本影响。

Clash 与 mihomo 配置不仅包含代理服务器。监听端口、控制器地址、TUN 网卡、DNS 劫持、局域网访问、GeoData 模式以及本地文件路径都可能写在同一个 YAML 文件里。把 Windows 正在运行的完整配置直接覆盖到 macOS,可能造成网卡名称不匹配、端口被占用或规则集路径失效。

按稳定性拆成三层

  • 共享数据层:代理节点、远程规则集、代理组结构。这部分适合在所有设备之间统一。
  • 平台参数层:TUN、DNS、监听地址、端口、进程匹配和网卡选择。这部分应按系统分别维护。
  • 客户端状态层:窗口大小、主题、托盘行为、日志级别、最近选择的配置。通常留在本机,不进入同步。

方案一:各设备使用同一个订阅链接

订阅链接统一更新是最省维护成本的方案。每台设备独立保存订阅记录,在需要时向同一个地址拉取配置。Windows 上的 Clash Verge Rev、macOS 上的 Clash Verge Rev,以及 Android 上使用 mihomo 内核的兼容客户端,都可以分别导入同一地址。设备之间不直接传输本地文件,因此不会互相覆盖运行状态。

典型操作路径

  1. 在桌面客户端进入「订阅」或「配置」页面。
  2. 选择「新建」或「导入」,粘贴 HTTPS 订阅地址。
  3. 下载完成后选中该配置,再执行「设为当前配置」。
  4. 在自动更新设置中指定周期,例如 1440 分钟,即每天更新一次。
  5. 在另一台设备重复导入,不复制第一台设备生成的缓存文件。

不同客户端的菜单文字可能略有差别。以 Clash Verge Rev 2.x 为例,订阅通常在「订阅」页面管理,内核、系统代理与 TUN 则位于「设置」页面。排查时应明确区分“订阅已经更新”和“当前配置已经切换”:前者只下载新内容,后者才决定内核实际加载哪份配置。

自动更新周期怎样设置

节点信息每天变化不频繁时,12 至 24 小时更新一次通常足够。把周期设成 5 分钟会增加服务端请求,也可能在网络切换时反复写入配置。临时排查节点缺失时,可以手动更新一次,并检查客户端显示的更新时间是否改变。

项目 是否统一 处理方式
节点列表 统一 所有设备导入同一订阅地址
代理组 通常统一 由订阅内容或转换模板生成
当前节点选择 各设备独立 根据本地网络延迟选择
系统代理与 TUN 各设备独立 在客户端设置页分别开启
自动更新时间 可不同 桌面端可设 1440 分钟,移动端按使用频率设置

方案二:使用云盘同步 YAML 配置

云盘同步适合维护过自定义规则、代理组和 DNS 配置的用户。常见做法是把一份人工维护的 YAML 放进 OneDrive、iCloud Drive 或其他同步目录,再由各客户端导入该文件。关键点是把云盘里的文件当作“源文件”,而不是直接同步客户端正在读写的整个配置目录。

为什么不建议同步整个客户端目录

  • 客户端目录可能包含 SQLite 数据库、窗口状态、日志、缓存和锁文件,这些内容会频繁变化。
  • 两台设备同时运行时,云盘可能生成“冲突副本”,内核仍在读取旧文件。
  • 不同系统使用不同路径分隔符,Windows 的盘符路径无法直接用于 macOS 或 Linux。
  • 客户端升级后可能迁移目录结构,直接同步旧目录会把过期状态重新写回。

更稳妥的流程是:云盘保留 shared-base.yaml,各设备下载或复制到本地,再通过客户端执行「配置」→「导入本地文件」。修改规则时只编辑源文件,确认 YAML 能加载后再让其他设备取得新版本。若客户端支持覆写、合并或脚本功能,也可以让共享文件只负责规则和代理组,本地覆写负责 TUN 与端口。

配置目录以客户端入口为准

配置目录不是 Clash 生态中的统一标准。mihomo 以命令行启动时,常见主配置是 Linux 下的 ~/.config/mihomo/config.yaml;旧版 Clash 常见目录则是 ~/.config/clash/。图形客户端通常还有自己的应用数据目录和订阅数据库,文件位置会随应用标识与版本变化。

因此,查找目录时应优先使用客户端提供的按钮,例如 Clash Verge Rev 2.x 的「设置」→「配置目录」→「打开目录」。如果界面中没有该入口,再查看日志开头显示的工作目录或启动参数。不要因为目录中出现 config.yaml 就直接覆盖,先确认日志中的实际加载路径。

云盘同步的安全操作顺序

  1. 退出准备修改配置的客户端,避免它同时写入同一个文件。
  2. 等待云盘状态显示同步完成,再打开 YAML。
  3. 保存后检查是否产生冲突副本,例如 shared-base-conflicted-copy.yaml
  4. 在一台设备上导入并重新载入配置,确认代理组、规则和 DNS 均可解析。
  5. 其他设备再取得该版本,并保留上一份可用副本。

方案三:自建配置托管与远程规则集

设备较多、规则需要持续维护时,可以把配置拆成主配置、代理提供者和规则提供者,通过 HTTPS 统一托管。每台设备只保存一个较短的入口配置,节点与规则由 mihomo 定时拉取。这种方式比手动复制 YAML 更适合台式机、笔记本、家庭服务器和移动设备共同使用。

使用 proxy-providers 集中节点

proxy-providers:
  shared:
    type: http
    url: "https://config.example.net/proxies.yaml"
    path: ./providers/shared.yaml
    interval: 86400
    health-check:
      enable: true
      url: "https://www.gstatic.com/generate_204"
      interval: 600

proxy-groups:
  - name: PROXY
    type: select
    use:
      - shared
    proxies:
      - DIRECT

rules:
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

interval: 86400 表示每 86400 秒更新一次,也就是 24 小时。健康检查每 600 秒执行一次,只用于判断节点能否完成指定测试请求,不代表真实下载速度。远程文件下载后会写入 ./providers/shared.yaml;这个相对路径基于内核工作目录,所以应确保客户端有写入权限。

使用 rule-providers 统一规则

rule-providers:
  private:
    type: http
    behavior: domain
    format: yaml
    path: ./rules/private.yaml
    url: "https://config.example.net/rules/private.yaml"
    interval: 86400

rules:
  - RULE-SET,private,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

behavior: domain 适用于域名类规则。若文件包含 CIDR 网段,应使用与内容相符的行为类型;混合多种 Clash 规则语法时,可按 mihomo 支持情况使用 classical。行为类型与文件内容不一致会导致规则载入失败,日志一般会显示 provider 名称与解析错误位置。

远程托管需要处理的细节

  • 服务器应提供 HTTPS,并返回正确的 YAML 文本内容。
  • 私有地址需要访问令牌时,应控制令牌权限与有效期。
  • 更新主配置前保留上一版本,避免一处语法错误影响全部设备。
  • 规则集应使用稳定 URL,避免每次提交后文件地址变化。
  • 远程文件更新后,客户端可能还要执行「重新载入」才能应用新的代理组结构。

跨平台字段差异:哪些内容必须留在本机

共享配置能否跨平台运行,取决于是否包含系统相关字段。规则语法、代理组和远程提供者通常容易复用;网卡、进程、端口和本地路径则需要逐台检查。采用 mihomo 内核也不代表所有图形客户端支持同一套界面选项,客户端可能通过覆写文件生成最终配置。

TUN 模式与网卡设置

TUN 会创建虚拟网络接口并接管路由。Windows、macOS、Linux 和 Android 的权限模型不同,图形客户端通常要求在本机完成授权。共享文件可以保留基础结构,但 interface-namedeviceroute-address-set 等依赖本机环境的字段不宜硬编码。

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53

auto-detect-interface: true 能减少固定网卡名称带来的跨平台问题,但双网卡、虚拟机、公司 VPN 同时运行时仍需检查默认路由。若某台设备开启 TUN 后断网,先在「设置」→「TUN 模式」关闭该功能,再查看日志中的路由与权限错误,不要立即修改共享规则。

监听端口与局域网访问

mixed-port: 7890
allow-lan: false
bind-address: "*"
external-controller: 127.0.0.1:9090

mixed-port: 7890 同时接收 HTTP 和 SOCKS 代理连接。端口在某台设备上被其他程序占用时,可以只在本地改为 7891。external-controller 若只供本机客户端连接,建议监听 127.0.0.1:9090。需要局域网共享时,再按实际需求开启 allow-lan,同时检查系统防火墙和 WiFi 网络类型。

本地路径与规则资源

Windows 路径可能写成 C:\Users\Public\Clash\rules,macOS 与 Linux 则使用以 / 开头的路径。为了跨平台,规则提供者尽量采用相对路径,例如 ./rules/private.yaml。如果客户端把工作目录放在受保护位置,还要确认当前用户能够创建 rulesproviders 子目录。

进程规则的系统差异

PROCESS-NAME 依赖操作系统报告的进程名称。Windows 可能匹配 example.exe,macOS 应用对应的可执行文件名称可能是 Example,Android 则可能按包名匹配。需要精确进程分流时,可以为各平台保留单独规则集,再在本地配置中引用。

推荐结构:共享基础配置加本地覆写

对于同时使用 Windows、macOS 和 Linux 的环境,可以维护一份共享基础配置,再为每个平台准备一份短覆写。基础配置放代理提供者、规则提供者、代理组和通用 DNS 逻辑;覆写文件只处理端口、TUN、进程规则和控制器地址。

文件组织示例

clash-config/
├── shared-base.yaml
├── overlays/
│   ├── windows.yaml
│   ├── macos.yaml
│   └── linux.yaml
├── rules/
│   ├── direct.yaml
│   └── reject.yaml
└── backups/
    └── shared-base-2026-08-04.yaml

是否能直接合并覆写,取决于客户端功能。部分客户端提供 Merge、Mixin、覆写或脚本入口;另一些客户端只能导入最终 YAML。不能自动合并时,可以在电脑上生成最终文件,例如 windows-final.yaml,再由对应设备导入。合并后必须检查同名键的覆盖结果,尤其是 rulesdnsproxy-groups 这类列表或嵌套对象。

同步时不要统一当前节点

家中宽带、办公网络和移动网络的路由条件不同。同一节点在 Windows 台式机上延迟 42 ms,在手机蜂窝网络上可能达到 180 ms。各设备应独立保留代理组选择,或者使用 url-testfallback 等自动策略。共享的是候选节点和测试规则,不必强制共享最后一次选择。

备份、回滚与冲突处理

配置同步不能替代备份。同步会把删除、错误缩进和错误规则一起传播到其他设备;备份的作用是保留过去可恢复的版本。至少应保留当前可用配置、最近一次修改前配置,以及一个经过长期验证的稳定版本。

每次修改前执行四项检查

  1. 复制当前文件,并用日期命名,例如 config-2026-08-04.yaml
  2. 确认 YAML 使用空格缩进,不混入 Tab 字符。
  3. 检查代理组引用的 provider、节点名称和其他代理组是否存在。
  4. 重新载入后查看日志,确认 rules、proxy-providers 与 rule-providers 均成功载入。

如果更新后所有设备同时出现问题,先暂停云盘同步或远程发布,避免错误版本继续扩散。随后恢复上一份稳定文件,关闭自动更新一次,重新载入内核。确认基础连接恢复后,再逐段加入本次修改,定位是 DNS、规则、代理组还是远程资源导致失败。

常见冲突的处理顺序

  • 出现两个同名副本:比较修改时间与内容,不直接按文件名判断新旧。
  • 客户端提示 YAML 错误:从日志给出的行号向上检查缩进和引号。
  • 规则更新但行为没变:确认当前配置已重新载入,并检查规则匹配顺序。
  • 某一台设备断网:先关闭该设备的 TUN 和系统代理,再验证共享配置本身。
  • 远程 provider 下载失败:检查 HTTPS 地址、访问权限、DNS 与本地缓存路径。

三种方案怎样选择

使用场景 建议方案 主要维护点
两三台个人设备,只需相同节点 同一订阅链接 各设备独立更新与选择节点
有自定义规则,修改频率较低 云盘同步源 YAML 避免同步客户端数据库和缓存
设备较多,规则长期维护 自建 HTTPS 托管 版本管理、权限与回滚
跨 Windows、macOS、Linux 共享基础配置加平台覆写 TUN、端口、路径与进程规则

多数个人使用场景从订阅链接开始即可。只有在规则、DNS 或代理组需要自行维护时,再引入云盘源文件。设备数量增加后,可以把节点与规则拆成 provider,通过 HTTPS 定时更新。无论采用哪一种方案,都应让系统相关设置留在本机,并保留可直接回滚的稳定配置。

完成同步后,可以在每台设备分别检查四个结果:订阅更新时间正确、当前配置已切换、规则命中符合预期、TUN 或系统代理能够正常关闭与恢复。把这四项分开验证,比直接判断“能否打开网页”更容易发现配置差异。

下载Clash客户端 查看各平台安装包