进阶玩法 当默认配置已经不够用

把配置文件
真正用透

完成入门教程之后,这里是给愿意深入配置文件的人准备的六个方向:策略组的自动测速与容灾、规则集的订阅式管理、DNS 与域名嗅探优化、局域网共享网关、多订阅本地覆写,以及用外部面板接管配置。每节都附带可直接抄的 YAML 片段。

策略组进阶用法

策略组决定了一条规则命中后具体走哪个节点,合理组合能实现自动测速、容灾切换与负载均衡。

类型行为适合场景
select 手动在列表中选择一个节点,不会自动切换 需要长期固定使用某个节点
url-test 按固定周期测速,自动选用延迟最低的节点 希望始终保持较低延迟,免去手动切换
fallback 按顺序使用列表中第一个可用节点,失败后自动下一个 主节点不稳定,需要自动容灾备用线路
load-balance 按策略(轮询 / 一致性哈希)在多个节点间分摊连接 节点数量充足,希望分摊带宽压力
proxy-groups.yaml
proxy-groups:
  # 自动测速,选延迟最低的节点
  - name: Auto
    type: url-test
    proxies: [HK-01, HK-02, SG-01]
    url: http://www.gstatic.com/generate_204
    interval: 300      # 每 300 秒测速一次
    tolerance: 50      # 延迟差小于 50ms 不切换,避免抖动
  # 主节点组异常时按顺序自动切换备用
  - name: Fallback
    type: fallback
    proxies: [Auto, HK-01, SG-01]
    url: http://www.gstatic.com/generate_204
    interval: 180
  # 最终暴露给规则使用的入口,可随时手动切换
  - name: PROXY
    type: select
    proxies: [Auto, Fallback, HK-01, SG-01, DIRECT]

提示:规则里通常只引用最外层的 select 组(如上例中的 PROXY),把测速与容灾逻辑都封装在它的候选列表里,规则本身不需要关心具体走哪个节点。

用规则集订阅化管理规则

规则集(Rule Provider)把成百上千条规则托管为独立文件,定期自动更新,不用再手动逐条维护。

behavior 决定规则集里存放的是什么类型的数据:domain(域名列表)、ipcidr(IP 段列表)或 classical(完整的规则语法行)。 type 决定来源:http 为远程订阅,会按 interval 自动更新;file 为本地文件,需自行维护。

rule-providers.yaml
rule-providers:
  reject:
    type: http
    behavior: domain
    url: https://example.com/reject.txt
    path: ./ruleset/reject.yaml
    interval: 86400   # 每 24 小时自动拉取更新
  direct:
    type: http
    behavior: classical
    url: https://example.com/direct.txt
    path: ./ruleset/direct.yaml
    interval: 86400

rules:
  # 引用规则集,写法是 RULE-SET,规则集名称,策略
  - RULE-SET,reject,REJECT
  - RULE-SET,direct,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

提示:常见的公共规则集(如 ACL4SSR、blackmatrix7 系列)已经维护了广告拦截、国内直连、常用 App 分流等多种现成列表,直接引用即可,没有特殊需求不必自己重新造轮子。

DNS 配置优化

DNS 解析方式直接影响规则匹配的准确度与访问速度,是进阶配置里最值得花时间调的一项。

enhanced-mode 建议使用 fake-ip:客户端会先返回一个虚拟 IP,连接建立时再还原出真实域名用于规则匹配,兼顾速度与准确性;fallback-filter 可以让境外 DNS 只在结果不是中国大陆 IP 时才采用,避免污染。

dns.yaml
dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  default-nameserver: [223.5.5.5, 119.29.29.29]   # 解析 DoH/DoT 域名本身用的基础 DNS
  nameserver: ['https://doh.pub/dns-query', 'tls://dot.pub:853']
  fallback: ['https://1.1.1.1/dns-query', 'https://dns.google/dns-query']
  fallback-filter:
    geoip: true
    geoip-code: CN   # 结果非中国大陆 IP 时才采用 fallback 的解析结果

提示:开启 fake-ip 后如果某些局域网设备(如智能音箱、NAS 局域网发现)出现异常,可以在 fake-ip-filter 中把对应域名加入例外,让它们始终返回真实 IP。

开启域名嗅探(Sniffer)

在 TUN 模式下,部分连接只有目标 IP 没有域名信息,嗅探能从流量中还原出真实域名,让基于域名的规则依然生效。

Sniffer 会在不解密流量内容的前提下,读取 TLS 握手中的 SNI、HTTP 请求头中的 Host 等明文字段来判断目标域名,再交给规则模块匹配,常用于 TUN 模式或某些不传递域名信息的转发场景。

sniffer.yaml
sniffer:
  enable: true
  force-dns-mapping: true
  parse-pure-ip: true
  sniff:
    TLS:
      ports: [443, 8443]
    HTTP:
      ports: [80, 8080]
    QUIC:
      ports: [443]

局域网共享给其他设备

把运行 Clash 的这台设备变成局域网内的代理网关,让手机、平板、智能电视等不方便单独安装客户端的设备也能共享代理。

  1. 开启 allow-lan,并将监听地址改为 0.0.0.0 或具体的局域网 IP。
  2. 在其他设备的 Wi-Fi 设置中,把 HTTP / SOCKS 代理指向运行 Clash 设备的局域网 IP 与 mixed-port 端口。
  3. 如果需要覆盖设备上所有流量(而非仅浏览器),可以考虑把该设备设为路由器,或在路由器上做策略路由。
lan.yaml
mixed-port: 7890
allow-lan: true
bind-address: '*'
authentication:
  # 局域网共享时建议加上账号密码,避免被同网络内其他设备白嫖
  - user1:strong-password

提示:开启局域网共享后请确认系统防火墙允许对应端口的入站连接,并优先设置认证账号密码,避免公共 Wi-Fi 环境下被陌生设备接入。

多订阅合并与本地覆写

直接修改订阅拉取到的配置文件,在下次更新时会被机场提供的新内容整体覆盖,需要用覆写机制单独保留自定义部分。

大多数图形客户端(Clash Verge、Clash for Windows 系列)都提供“覆写 / Override”或“合并配置”的功能:先加载机场订阅生成的基础配置,再叠加一份你自己维护的本地 YAML 片段,两者合并后生效。更新订阅时只替换基础部分,覆写片段不受影响。

  1. 在客户端的订阅设置里找到 覆写 / Override 入口,新建一份本地覆写文件。
  2. 在覆写文件中只写你想追加或修改的字段,例如自定义的 rulesdnsproxy-groups
  3. 保存后,客户端会在每次加载订阅时自动叠加这份覆写,更新订阅不会再丢失你的自定义内容。

如果手上有多个机场的订阅,也可以借助合并功能把多份订阅的节点汇总到同一套规则与策略组下,统一调度。

通过外部控制面板接管配置

开启 RESTful API 后,可以用浏览器面板(如 yacd、metacubexd)实时查看连接、切换节点、热重载配置,而不必每次都重启客户端。

大多数图形客户端已经内置了这类面板,若你使用的是纯内核(Mihomo core)部署,可以手动开启外部控制并搭配开源面板项目使用。

external-controller.yaml
external-controller: 127.0.0.1:9090
secret: 'replace-with-a-strong-secret'   # 面板访问密钥,务必自行修改

提示:保持监听地址为 127.0.0.1 并设置足够复杂的 secret,不要将该端口暴露到公网,可有效避免配置被未授权访问或篡改。

FAQ

进阶配置常见疑问

关于覆写、DNS 与外部面板的几个高频问题

修改本地配置后为什么订阅更新一次就没了?

订阅更新会用机场返回的新内容整体覆盖配置文件,直接改动的字段会被还原。建议使用客户端的“覆写 / Override”功能单独维护自定义片段,更新订阅时只替换机场内容,覆写部分会在之后自动重新应用。

fake-ip 和 redir-host 应该怎么选?

fake-ip 性能更好、能更早识别真实目标域名以匹配规则,是目前的主流推荐;但少数依赖真实 IP 返回值的场景(如某些局域网设备发现协议)可能需要 redir-host 或对特定域名做 fake-ip 例外。

开启外部控制面板会不会不安全?

只要将监听地址保持为 127.0.0.1 并设置一个足够复杂的 secret,风险就非常低;不建议将外部控制端口绑定在 0.0.0.0 并暴露到公网或不受信任的局域网中。

还不熟悉基础用法?

先看使用教程:安装、导入订阅、代理模式与主界面详解。

前往下载页面 →

Windows / macOS / Android / iOS / Linux 全平台支持,全部免费。