主题外观
Clash 配置文件详解:2026 完整 YAML 语法剖析与逐行注释指南
直接答案(TL;DR 配置文件核心骨架速查):
一个标准的 Clash 配置文件(通常命名为config.yaml)在逻辑上严格由四大核心功能模块组成:
- 基础环境层:定义本地监听端口(HTTP 7890 / SOCKS5 7891 / Mixed 7890)与分流运行模式(Rule / Global / Direct);
- DNS 防污染层:配置 Fake-IP 模式与上游权威解析服务器(Nameserver);
- 节点与策略组层:声明可用服务器节点池(Proxies)并组织为自动测速选优、故障转移或手动分组(Proxy-Groups);
- 分流规则匹配层:由上至下匹配目标域名与 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.5G | name: "[专线] 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 订阅导入教程
- 选购优质节点:配合高速专线使用,请查阅 2026 机场推荐指南