一、config.yaml 是什么?
config.yaml 是 Clash 内核的核心配置文件,它以 YAML 格式编写,定义了代理节点、策略组、分流规则和 DNS 等所有运行参数。ClashX 在 macOS 上启动时会自动读取此文件,路径通常位于 ~/.config/clash/config.yaml。
掌握 config.yaml 的编写,意味着你可以完全自定义网络流量的走向——哪些走代理、哪些直连、哪些被屏蔽,全部由你掌控。
- 灵活性高:比 GUI 界面提供更多高级选项
- 可移植性:一份配置可在多台设备间共享
- 版本管理:可用 Git 追踪配置变更历史
二、YAML 基础语法
YAML(YAML Ain't Markup Language)是一种人类友好的数据序列化格式。在编写 config.yaml 前,需要了解以下基本规则:
- 缩进:使用空格缩进(不能用 Tab),通常 2 个空格为一级
- 键值对:
key: value,冒号后必须有空格 - 列表:以
-开头,表示数组中的一个元素 - 注释:以
#开头
# 基础配置示例
port: 7890 # HTTP 代理端口
socks-port: 7891 # SOCKS5 代理端口
allow-lan: false # 是否允许局域网连接
mode: rule # 运行模式:rule/global/direct
log-level: info # 日志等级:silent/error/warning/info/debug
external-controller: 127.0.0.1:9090 # RESTful API 地址
注意:YAML 对缩进非常敏感,缩进错误会导致整个配置文件解析失败。建议使用支持 YAML 语法高亮的编辑器(如 VS Code)进行编辑。
三、proxies 代理节点配置
proxies 是你定义所有代理服务器的地方。Clash 支持多种协议,包括 Shadowsocks (SS)、VMess、Trojan 等。每个节点需要指定名称、类型、服务器地址和端口等参数。
Shadowsocks (SS) 节点
proxies:
- name: "香港节点-SS"
type: ss
server: hk.example.com
port: 8388
cipher: aes-256-gcm
password: "your-password-here"
udp: true
VMess 节点
- name: "日本节点-VMess"
type: vmess
server: jp.example.com
port: 443
uuid: a1b2c3d4-e5f6-7890-abcd-ef1234567890
alterId: 0
cipher: auto
tls: true
network: ws
ws-opts:
path: /path
headers:
Host: jp.example.com
Trojan 节点
- name: "美国节点-Trojan"
type: trojan
server: us.example.com
port: 443
password: "your-trojan-password"
sni: us.example.com
skip-cert-verify: false
udp: true
四、proxy-groups 策略组配置
策略组是 Clash 的精华功能之一,它允许你将多个节点组合起来,并定义智能选择策略。常用的策略类型有:
- select:手动选择,适合需要精确控制的场景
- url-test:自动测速选优,定期测试延迟并选择最快节点
- fallback:故障转移,按顺序尝试节点,失败时自动切换
- load-balance:负载均衡,将流量分散到多个节点
proxy-groups:
- name: "🚀 节点选择"
type: select
proxies:
- "♻️ 自动选优"
- "香港节点-SS"
- "日本节点-VMess"
- "美国节点-Trojan"
- DIRECT
- name: "♻️ 自动选优"
type: url-test
proxies:
- "香港节点-SS"
- "日本节点-VMess"
- "美国节点-Trojan"
url: http://www.gstatic.com/generate_204
interval: 300
tolerance: 50
- name: "🛡️ 故障转移"
type: fallback
proxies:
- "香港节点-SS"
- "日本节点-VMess"
- "美国节点-Trojan"
url: http://www.gstatic.com/generate_204
interval: 300
- name: "⚖️ 负载均衡"
type: load-balance
proxies:
- "香港节点-SS"
- "日本节点-VMess"
strategy: consistent-hashing
url: http://www.gstatic.com/generate_204
interval: 300
五、rules 分流规则
分流规则决定了每一条网络请求的去向。Clash 按照规则列表从上到下依次匹配,命中后立即执行。常用的规则类型包括:
- DOMAIN-SUFFIX:匹配域名后缀,如
google.com - DOMAIN-KEYWORD:匹配域名中包含的关键词
- IP-CIDR:匹配目标 IP 段
- GEOIP:匹配 IP 所属国家/地区
- MATCH:兜底规则,匹配所有未命中的请求
rules:
# 直连规则
- DOMAIN-SUFFIX,cn,DIRECT
- DOMAIN-SUFFIX,local,DIRECT
- DOMAIN-KEYWORD,baidu,DIRECT
# 代理规则
- DOMAIN-SUFFIX,google.com,🚀 节点选择
- DOMAIN-SUFFIX,youtube.com,🚀 节点选择
- DOMAIN-SUFFIX,github.com,🚀 节点选择
- DOMAIN-KEYWORD,telegram,🚀 节点选择
# IP 规则
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- GEOIP,CN,DIRECT
# 兜底规则(必须放在最后)
- MATCH,🚀 节点选择
提示:规则顺序很重要。更具体的规则应放在前面,MATCH 兜底规则必须放在最后。规则越多,匹配速度可能越慢,建议控制在合理范围内。
六、DNS 配置
DNS 配置直接影响网络访问的速度和安全性。Clash 提供了丰富的 DNS 选项,包括 nameserver、fallback 和 fake-ip 模式。
dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip # redir-host 或 fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "*.lan"
- "*.local"
- "localhost.ptlogin2.qq.com"
nameserver:
- https://doh.pub/dns-query # 腾讯 DoH
- https://dns.alidns.com/dns-query # 阿里 DoH
- 114.114.114.114
fallback:
- https://dns.google/dns-query # Google DoH
- https://cloudflare-dns.com/dns-query
- tls://8.8.4.4:853
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
- fake-ip 模式:返回虚假 IP,减少 DNS 泄漏,速度更快,推荐大多数用户使用
- redir-host 模式:返回真实 IP,兼容性更好,适合需要获取真实 IP 的场景
- fallback:当 nameserver 返回的结果被污染时,使用 fallback 中的 DNS 服务器重新解析
七、常见问题 FAQ
Q1:配置文件保存后 ClashX 没有生效?
确保 YAML 格式正确(无 Tab 缩进、冒号后有空格),然后在 ClashX 菜单栏点击"配置" → "重载配置"。可使用在线 YAML 校验工具检查语法。
Q2:如何同时使用订阅和自定义规则?
推荐使用 proxy-providers 功能引入订阅节点,再在本地配置文件中编写自定义策略组和规则,两者可以完美共存。
Q3:规则太多会影响性能吗?
一般情况下,几千条规则对性能影响很小。Clash 使用了高效的匹配算法,但建议避免重复规则,并将高频命中的规则放在前面。
Q4:fake-ip 和 redir-host 怎么选?
推荐 fake-ip 模式:速度更快、防 DNS 泄漏。只在某些应用出现兼容问题时才切换到 redir-host。可通过 fake-ip-filter 对特定域名使用真实 IP。
Q5:如何查看当前使用的配置文件路径?
在 ClashX 菜单栏点击"配置" → "打开配置文件夹",即可看到当前使用的 config.yaml 文件位置。