Skip to content

Clash 配置文件详解:2026 完整 YAML 语法剖析与逐行注释指南 ​

直接答案(TL;DR 配置文件核心骨架速查):
一个标准的 Clash 配置文件(通常命名为 config.yaml)在逻辑上严格由四大核心功能模块组成:

  1. 基础环境层:定义本地监听端口(HTTP 7890 / SOCKS5 7891 / Mixed 7890)与分流运行模式(Rule / Global / Direct);
  2. DNS 防污染层:配置 Fake-IP 模式与上游权威解析服务器(Nameserver);
  3. 节点与策略组层:声明可用服务器节点池(Proxies)并组织为自动测速选优、故障转移或手动分组(Proxy-Groups);
  4. 分流规则匹配层:由上至下匹配目标域名与 IP(Rules),决定连接是直连、拦截还是走特定策略组。

一、配置文件的四大核心模块系统架构 ​

理解 Clash 配置文件并不需要掌握复杂的编程知识,只需将其视作一套流水线规则:

mermaid
flowchart TD
  ConfigYAML["config.yaml 核心配置体系"] --> Mod1["1. 基础环境配置 (Port & Mode)<br/>监听端口、允许局域网、运行模式"]
  ConfigYAML --> Mod2["2. 增强 DNS 解析模块 (DNS)<br/>Fake-IP 缓冲池、Nameserver、防污染上游"]
  ConfigYAML --> Mod3["3. 节点与策略组 (Proxies & Groups)<br/>节点定义、URL-Test 自动测速、Fallback 容灾"]
  ConfigYAML --> Mod4["4. 规则匹配路由表 (Rules)<br/>DOMAIN-SUFFIX、IP-CIDR、GEOIP 逐行判定"]

二、一手代码:标准全功能 config.yaml 逐行语法注解范例 ​

以下为评测实验室在真实生产环境中经过精细调优的完整配置范例,包含了最核心的字段说明:

yaml
# ==============================================================================
# 第一部分:基础运行环境与网络端口监听
# ==============================================================================
port: 7890                  # HTTP 代理监听端口 (传统协议)
socks-port: 7891            # SOCKS5 代理监听端口
mixed-port: 7890            # 混合端口 (同时支持 HTTP 和 SOCKS5,现代客户端推荐)
allow-lan: false            # 是否允许局域网其他设备连接当前主机的代理 (家庭共享设为 true)
bind-address: "*"           # 允许局域网连接时的绑定网卡地址
mode: rule                  # 运行模式:rule (规则分流) / global (全局代理) / direct (全部直连)
log-level: info             # 日志级别:silent / error / warning / info / debug
ipv6: false                 # 是否开启 IPv6 (若本地网络不支持,开启容易导致解析变慢,建议 false)
external-controller: 127.0.0.1:9097 # 外部控制器 API 监听端口 (供 WebUI 前端面板调用)

# ==============================================================================
# 第二部分:内置防污染 DNS 解析模块
# ==============================================================================
dns:
  enable: true              # 开启内置 DNS 引擎 (TUN 模式必须开启)
  listen: 0.0.0.0:1053       # DNS 监听端口
  enhanced-mode: fake-ip    # 增强模式:fake-ip (首推,极低延迟防污染) / redir-host
  fake-ip-range: 198.18.0.1/16 # 虚假 IP 响应网段
  fake-ip-filter:           # 白名单:跳过 Fake-IP 机制,强制真实解析的域名
    - "*.lan"
    - "*.local"
    - "router.asus.com"
  nameserver:               # 基础国内快速解析 DNS 服务器
    - 223.5.5.5             # 阿里公共 DNS
    - 119.29.29.29          # 腾讯公共 DNS
  fallback:                 # 加密防污染备用 DNS (通过代理或加密协议解析境外域名)
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query

# ==============================================================================
# 第三部分:代理节点定义 (Proxies)
# ==============================================================================
proxies:
  # 节点示例 1:现代 VLESS 专线节点
  - name: 🇭🇰 香港 01 IEPL
    type: vless
    server: hk01.example.com
    port: 443
    uuid: b831381d-6324-4d53-ad4f-8cda48b30811
    network: tcp
    tls: true
    udp: true

  # 节点示例 2:经典 Shadowsocks 节点
  - name: 🇯🇵 日本 01 专线
    type: ss
    server: jp01.example.com
    port: 8388
    cipher: aes-128-gcm
    password: "MySecretPassword123"

# ==============================================================================
# 第四部分:策略组调度器 (Proxy-Groups)
# ==============================================================================
proxy-groups:
  # 策略组 1:主入口手动选择组
  - name: 🚀 节点选择
    type: select            # 类型:select (手动单选)
    proxies:
      - ♻️ 自动选优
      - 🇭🇰 香港 01 IEPL
      - 🇯🇵 日本 01 专线
      - DIRECT

  # 策略组 2:自动化健康检查选优组
  - name: ♻️ 自动选优
    type: url-test          # 类型:url-test (自动选用延迟最低节点)
    url: https://www.gstatic.com/generate_204 # 测试连通性的探测地址
    interval: 300           # 测速周期 (秒)
    tolerance: 50           # 容差范围 (毫秒,只有延迟差大于该值时才触发切换,防频繁跳动)
    proxies:
      - 🇭🇰 香港 01 IEPL
      - 🇯🇵 日本 01 专线

  # 策略组 3:高可用故障转移组
  - name: 🛡️ 故障转移
    type: fallback          # 类型:fallback (按顺序优先使用第 1 个,挂掉秒切第 2 个)
    url: https://www.gstatic.com/generate_204
    interval: 180
    proxies:
      - 🇭🇰 香港 01 IEPL
      - 🇯🇵 日本 01 专线

# ==============================================================================
# 第五部分:分流路由匹配规则 (Rules) - 由上至下优先匹配
# ==============================================================================
rules:
  # 规则 1:局域网私有地址强制直连
  - GEOIP,lan,DIRECT,no-resolve
  # 规则 2:指定高频域名后缀分流至代理策略组
  - DOMAIN-SUFFIX,google.com,🚀 节点选择
  - DOMAIN-SUFFIX,github.com,🚀 节点选择
  - DOMAIN-KEYWORD,twitter,🚀 节点选择
  # 规则 3:国内 IP 库地理位置匹配直连
  - GEOIP,cn,DIRECT
  # 规则 4:兜底匹配规则 (未命中的其他所有流量走向)
  - MATCH,🚀 节点选择

三、YAML 语法三大致命陷阱与避坑指南 ​

YAML 是一种对格式要求极度严苛的语言,初学者手写或修改配置时,99% 的解析报错源于以下三个细节:

语法陷阱类型错误示范 (触发崩溃)正确示范 (规范标准)语法规范原理说明
Tab 制表符混用使用键盘 Tab 键缩进必须全部使用空格(Space)缩进YAML 规范严禁包含 Tab 字符,否则内核直接报 unmarshal error
冒号后缺少空格port:7890 或 name:香港port: 7890 或 name: 香港所有冒号 : 与减号 - 后面必须保留一个空格,用于区分键值对
特殊字符未加引号name: [专线] 2.5Gname: "[专线] 2.5G"方括号 [] 在 YAML 中被视作数组语法,若节点名称包含特殊符号必须使用双引号包裹

四、本地修改配置的最佳实践:使用 Merge 代替直接编辑 ​

在日常使用中,强烈不建议直接打开服务商下发的远程订阅文件进行修改:

  • 原因:每次客户端执行 Update(更新订阅)时,远程服务器会重新下载整份文件,您先前辛辛苦苦手写的所有规则会被瞬间无情覆盖。
  • 最佳实践:在 Clash Verge Rev 中,使用其自带的 Merge(配置合并) 功能。将您的个性化规则(如补充域名、自定义策略组)写在独立的 Merge 文件中,客户端在内存中会自动将两份配置完美叠加,实现“既能享受机场每天的节点更新,又能永久保留自己的私人规则”。

五、常见问题解答 (FAQ) ​

Q1: Fake-IP 和 Redir-Host 两种 DNS 模式有什么区别? ​

  • Fake-IP(强烈推荐):客户端查询域名时,Clash 秒回一个 198.18.x.x 的伪造内部 IP,真实的 DNS 查询交由海外落地节点代劳。解析延迟近乎 0ms,且完全防 DNS 污染;
  • Redir-Host:由 Clash 本地真实解析出 IP 再进行路由。该模式容易受国内运营商 DNS 污染影响,新版内核中已逐步弃用。

Q2: 为什么我的配置文件保存后,软件提示“端口被占用”? ​

请检查配置中的 mixed-port、port 或 socks-port。两个不同用途的设置项如果填入了相同的端口号(例如同时把 HTTP 和 SOCKS 设为 7890),内核在尝试绑定端口时就会发生自冲突崩溃。

Q3: tolerance(容差)参数有什么用? ​

在 url-test 自动选优策略组中,如果设为 tolerance: 50,当主节点延迟为 40ms,另一个节点为 38ms 时,系统不会触发切换;只有新节点比老节点快 50ms 以上时才发生切换。这能有效防止节点在毫秒级微小波动时频繁跳动导致网页连接重置。

Q4: 怎么检查我手写的 YAML 配置语法是否正确? ​

除了在客户端查看日志报错外,您可以使用 VS Code 安装 YAML 插件进行语法高亮检查,或者将文本粘贴到在线 YAML 校验器中快速查找格式缩进错误。


六、延伸阅读与下一步指引 ​

本站为独立第三方 Clash 教程与技术资料站,与 Clash / Clash Verge / Clash Meta / Mihomo 官方项目无隶属关系。