教程

Clash YAML 配置文件详解与标准配置模板

什么是 Clash YAML 配置文件

在 ClashFX 以及基于 Mihomo(Clash Meta)核心的客户端中,所有的代理节点、分流策略、DNS 解析规则与运行参数都通过一个遵循 YAML 语法 的文本文件进行定义(通常为 config.yaml 或服务商提供的订阅文件)。

理解 Clash YAML 配置文件的层级结构,不仅可以帮助你排查「配置文件导入失败」或「分流不生效」等常见故障,还能让你根据日常工作流,定制低延迟策略组与去广告规则。


核心字段详细解析

一个标准的 Clash / Mihomo 配置文件通常由以下六大顶层板块构成:

├── 基础通用设置 (General Settings)
├── DNS 解析配置 (DNS Settings)
├── 代理节点定义 (Proxies)
├── 代理策略组 (Proxy Groups)
├── 外部规则集 (Rule Providers)
└── 路由分流规则 (Rules)

1. 基础通用设置 (General Settings)

控制 ClashFX 核心的监听端口、工作模式与运行权限:

# HTTP 与 SOCKS5 混合代理监听端口(macOS 常用 7890)
mixed-port: 7890

# 是否允许局域网设备连接(在家庭或办公室共享代理时开启)
allow-lan: false

# 绑定监听地址(默认仅本机)
bind-address: '*'

# 运行模式:rule(规则分流)、global(全局代理)、direct(全直连)
mode: rule

# 日志级别:info、warning、error、debug、silent
log-level: info

# 是否允许 IPv6 流量解析与路由
ipv6: false

# 外部控制面板端口与访问密钥(供面板或 API 控制)
external-controller: 127.0.0.1:9090
secret: ''

2. DNS 解析配置 (DNS Settings)

在开启 ClashFX 的增强模式 (TUN) 时,精准的 DNS 设置是避免 DNS 泄漏与加速域名解析的关键:

dns:
  enable: true
  listen: 127.0.0.1:1053
  ipv6: false
  
  # 推荐模式:fake-ip(虚拟 IP 映射,极大提升首包解析速度)
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  
  # 不走 fake-ip 的纯直连域名(如 Apple 局域网服务、本地局域网等)
  fake-ip-filter:
    - '*.lan'
    - 'localhost.ptlogin2.qq.com'
    - '+.msftconnecttest.com'
    - '+.msftncsi.com'

  # 用于解析 DoH / DoT 上游服务器域名的基础 DNS
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29

  # 国内常规直连解析的上游 DNS
  nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query

  # 匹配境外代理规则时的备用与防污染 DNS
  fallback:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query

3. 代理节点定义 (Proxies)

定义单个节点的连接协议、服务器地址、加密方式与证书:

proxies:
  - name: "香港 01 | 优质专线"
    type: shadowsocks
    server: hk01.example.com
    port: 8388
    cipher: aes-128-gcm
    password: "your_strong_password"

  - name: "日本 01 | VLESS Reality"
    type: vless
    server: jp01.example.com
    port: 443
    uuid: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
    network: tcp
    tls: true
    udp: true
    flow: xtls-rprx-vision
    servername: gateway.icloud.com
    reality-opts:
      public-key: "base64_encoded_public_key"
      short-id: "abcd1234"

4. 代理策略组 (Proxy Groups)

策略组用于将多个节点组合在一起,实现手动切换、按延迟自动优选或负载均衡:

  • select:手动选择,用户可以在 ClashFX 菜单栏随时切换。
  • url-test:自动测速,每隔一定时间向指定 URL 发送探测,自动路由至最低延迟节点。
  • fallback:故障转移,按顺序检测健康状态,主节点异常时自动切换备用节点。
  • load-balance:负载均衡,将并发连接分摊到不同节点。
proxy-groups:
  - name: PROXY
    type: select
    proxies:
      - AUTO-FAST
      - 香港 01 | 优质专线
      - 日本 01 | VLESS Reality
      - DIRECT

  - name: AUTO-FAST
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    tolerance: 50
    proxies:
      - 香港 01 | 优质专线
      - 日本 01 | VLESS Reality

5. 路由分流规则 (Rules)

规则按从上到下的顺序匹配,一旦命中立即跳出:

rules:
  # 常用类型:DOMAIN-SUFFIX(域名后缀)、DOMAIN-KEYWORD(关键词)
  - DOMAIN-SUFFIX,google.com,PROXY
  - DOMAIN-KEYWORD,github,PROXY
  
  # GEOIP 匹配(由 Mihomo 的 GeoIP 数据库提供)
  - GEOIP,CN,DIRECT
  
  # 兜底匹配:未被上方规则命中的全部流量走 PROXY 或 DIRECT
  - MATCH,PROXY

标准开箱即用配置模板

以下是一个适配 ClashFX 1.1.11(Mihomo 核心)的标准精简配置模板。你可以直接将其复制到 ~/.config/clashfx/config.yaml 中,并替换 proxies 中的节点信息即可使用:

# ==========================================
# ClashFX 标准基础配置模板 (Mihomo 核心)
# ==========================================

mixed-port: 7890
allow-lan: false
bind-address: '*'
mode: rule
log-level: info
ipv6: false
external-controller: 127.0.0.1:9090

# DNS 模块配置(推荐 fake-ip,配合增强模式更佳)
dns:
  enable: true
  listen: 127.0.0.1:1053
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - '*.lan'
    - '*.local'
    - '+.msftconnecttest.com'
    - '+.msftncsi.com'
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query
  fallback:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query

# 代理节点列表(请替换为你的实际服务商节点)
proxies:
  - name: "示例 Shadowsocks 节点"
    type: ss
    server: server1.example.com
    port: 8388
    cipher: aes-256-gcm
    password: "Password_Here"
    udp: true

# 策略组设计
proxy-groups:
  - name: 节点选择
    type: select
    proxies:
      - 自动优选
      - 示例 Shadowsocks 节点
      - DIRECT

  - name: 自动优选
    type: url-test
    url: http://www.gstatic.com/generate_204
    interval: 300
    tolerance: 50
    proxies:
      - 示例 Shadowsocks 节点

  - name: 国外媒体
    type: select
    proxies:
      - 节点选择
      - 自动优选
      - DIRECT

# 分流路由规则
rules:
  # 本地回环与局域网
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT
  - IP-CIDR,172.16.0.0/12,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT

  # 常见开发与国际服务走代理
  - DOMAIN-SUFFIX,github.com,节点选择
  - DOMAIN-SUFFIX,githubusercontent.com,节点选择
  - DOMAIN-SUFFIX,google.com,节点选择
  - DOMAIN-SUFFIX,youtube.com,国外媒体
  - DOMAIN-SUFFIX,twitter.com,节点选择
  - DOMAIN-SUFFIX,openai.com,节点选择

  # 国内常见服务直连
  - DOMAIN-SUFFIX,baidu.com,DIRECT
  - DOMAIN-SUFFIX,qq.com,DIRECT
  - DOMAIN-SUFFIX,alipay.com,DIRECT
  - DOMAIN-SUFFIX,taobao.com,DIRECT
  - DOMAIN-SUFFIX,cn,DIRECT
  - GEOIP,CN,DIRECT

  # 最终兜底规则
  - MATCH,节点选择

常见 YAML 语法陷阱与排查技巧

在编辑或手动编写 Clash 配置文件时,YAML 解析器对格式非常敏感,以下是 90% 用户的报错根源:

1. 严禁使用制表符(Tab 键)

YAML 语法规范严格禁止使用 Tab 制表符进行对齐。所有层级缩进必须使用纯空格(空格数通常保持为统一的 2 个空格)。在文本编辑器中输入了 Tab 往往会导致 mapping values are not allowed here 或 found character that cannot start any token 错误。

2. 键值冒号后必须包含半角空格

正确的语法是 key: value(冒号后紧跟一个空格)。如果写成 mixed-port:7890 或 mode:rule,解析器会将其视作一个未分割的字符串而报错。

3. 特殊字符与纯数字密码必须加引号

如果节点的密码中含有 #(YAML 注释符号)、@、:、! 等特殊符号,或者密码是一串纯数字(如 password: 12345678),必须用单引号或双引号包裹(如 password: "12345678#abc"),否则会被识别为注释或整型导致连接失败。


使用 ClashFX 内置编辑器修改与验证

ClashFX 免费核心内置了专业的 YAML 配置编辑器,具备以下开发辅助特性:

  1. 语法高亮着色:对键名、字符串、布尔值和注释有鲜明的色彩区分,迅速发现未闭合引号或拼写失误。
  2. 实时行号标注:当核心日志报告「第 45 行解析失败」时,可直接定位到对应行号。
  3. 安全保存与重新加载:保存(快捷键 Cmd + S)后,ClashFX 会立即向 Mihomo 核心提交新配置,无需繁琐重启客户端。

如需开始编辑,点击 macOS 菜单栏的 ClashFX 图标 → 配置 → 编辑当前配置 即可立即调用内置编辑器。

开始使用 ClashFX

免费下载并使用 ClashFX 当前的核心功能。Pro 正在筹备中,价格与最终功能待公布。

常见问题

ClashFX 1.1.11 的默认配置目录位于 ~/.config/clashfx。用户可以通过 ClashFX 菜单栏中的「配置 → 打开配置文件夹」快速定位。

最常见的原因是缩进使用了 Tab 键(YAML 规范强制要求纯空格缩进,通常为 2 个空格)、键值冒号后缺少空格(应为 key: value),或者密码中包含 # 等特殊符号未用单双引号包裹。

不需要。在 ClashFX 内置 YAML 编辑器中保存后,客户端会自动重新加载配置并应用新的规则与节点。