不懂 YAML 也能看懂的 ClashX 配置教程。本文从最基础的配置结构出发,带你一步步写出属于自己的 Clash 配置文件。
大家好,我是阿明。
很多刚接触 ClashX 的朋友可能都有过这种经历:下载了软件,却不知道怎么用。虽然现在有很多现成的订阅链接,点一下就能导入,但如果你想根据自己的需求深度定制,或者你的机场没提供适配的订阅,这时候就得学会自己看懂、甚至动手写 Clash 的 YAML 配置文件。
YAML 听起来很高端,其实它就是一种简单的文档格式。今天这篇文章,我会陪着你从零开始,一行行拆解 Clash 的配置文件。看完之后,你也能写出高效、稳定的配置。
YAML 基础语法:别被缩进坑了
在写配置之前,咱们先花两分钟了解一下 YAML。YAML 最核心的逻辑就是:用缩进来表示包含关系。
1. 键值对(Key-Value)
这是最基本的单位,冒号后面一定要跟一个空格。
port: 7890
mode: rule
2. 列表(List)
用短横线表示,短横线后面也要有空格。
proxies:
- name: "香港节点"
type: ss
- name: "美国节点"
type: vmess
3. 严格的缩进
YAML 不允许使用 Tab 键缩进,只能用空格。通常每一级缩进两个空格。如果你的缩进乱了,ClashX 就会直接报错,提示配置格式有误。
Clash 配置文件的 6 个核心板块
一个完整的 Clash 配置文件通常由以下几部分组成:
- General(全局设置):定义端口、运行模式等基础参数。
- DNS(域名解析):解决解析污染,优化访问速度。
- Proxies(代理节点):定义具体的服务器信息。
- Proxy Groups(策略组):把节点分组,设置选择逻辑(比如自动测速)。
- Rule Providers(规则集,可选):引用外部的规则列表。
- Rules(分流规则):决定哪些网站走哪个策略组。
接下来,我们一个一个细说。
第一步:基础全局设置
这部分通常放在文件的最顶端,决定了 Clash 怎么在你的电脑上运行。
# 混合端口,同时支持 HTTP 和 SOCKS
mixed-port: 7890
# 允许局域网连接,方便手机连接电脑代理
allow-lan: true
# 运行模式:rule(规则)、global(全局)、direct(直连)
mode: rule
# 日志等级:info, warning, error, debug, silent
log-level: info
# 外部控制地址,ClashX 内部面板会用到
external-controller: 127.0.0.1:9090
mixed-port 是最推荐的写法,它把 HTTP 和 SOCKS 代理合二为一。如果你设为 7890,那么你在设置其他软件代理时,协议选 HTTP 或 SOCKS5,端口都填 7890 即可。
第二步:配置 DNS 解析
DNS 是很多新手容易忽略的地方。如果配置不好,可能会遇到“虽然能上 YouTube 但加载很慢”或者“国内网站打不开”的情况。
dns:
enable: true
ipv6: false
listen: 0.0.0.0:53
enhanced-mode: fake-ip # 推荐模式,响应速度最快
fake-ip-range: 198.18.0.1/16
nameserver:
- 223.5.5.5 # 阿里 DNS
- 119.29.29.29 # 腾讯 DNS
fallback:
- 8.8.8.8 # Google DNS
- 1.1.1.1 # Cloudflare DNS
- tls://dns.google # 安全的 DNS 解析
这里要重点解释一下 enhanced-mode: fake-ip。这个模式下,Clash 会先给浏览器返回一个假的 IP 地址,然后自己在后台进行解析和分流。这大大减少了等待 DNS 解析的时间,是目前最为主流的选择。
第三步:定义代理节点(Proxies)
这里是填入你服务器信息的地方。无论你是 VMess、SS 还是 Trojan,都得在这里按格式写好。
VMess 示例
- name: "我的美国 VMess"
type: vmess
server: us.example.com
port: 443
uuid: your-uuid-here
alterId: 0
cipher: auto
tls: true
VLESS 示例
- name: "高端 VLESS 节点"
type: vless
server: server.com
port: 443
uuid: your-uuid
udp: true
tls: true
network: ws
Shadowsocks (SS) 示例
- name: "经典 SS 节点"
type: ss
server: ss.example.com
port: 8388
cipher: aes-256-gcm
password: "your-password"
Trojan 示例
- name: "Trojan 节点"
type: trojan
server: trojan.com
port: 443
password: "your-password"
sni: trojan.com
如果你有多个节点,就把它们一个接一个写在 proxies: 下面。
第四步:策略组配置(Proxy Groups)
有了节点,我们不能每次都手动去改配置文件换节点。策略组就是为了让我们更方便地切换。
常用的策略组类型有三种:
- select:手动选择。
- url-test:自动选择延迟最低的节点。
- fallback:主节点挂了自动跳到备份节点。
proxy-groups:
# 手动选择主出口
- name: 🚀 节点选择
type: select
proxies:
- ⚡️ 自动选择
- 🇭🇰 香港节点
- 🇺🇸 美国节点
- DIRECT # 直连
# 自动选最快的
- name: ⚡️ 自动选择
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
proxies:
- 🇭🇰 香港节点
- 🇺🇸 美国节点
注意,策略组里的 proxies 既可以引用上面定义的具体节点 name,也可以引用另一个策略组的名字。这种嵌套结构非常强大。
第五步:分流规则(Rules)
规则决定了流量怎么走。Clash 按照从上到下的顺序匹配,一旦匹配中一条,后面的就不看了。
rules:
# 域名关键字匹配
- DOMAIN-KEYWORD,google,🚀 节点选择
- DOMAIN-KEYWORD,facebook,🚀 节点选择
- DOMAIN-KEYWORD,youtube,🚀 节点选择
# 后缀匹配
- DOMAIN-SUFFIX,netflix.com,🚀 节点选择
- DOMAIN-SUFFIX,github.com,🚀 节点选择
# 常见的广告屏蔽
- DOMAIN-KEYWORD,adserver,REJECT
# IP 段匹配
- IP-CIDR,127.0.0.0/8,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
# 地理位置匹配(需要数据库支持)
- GEOIP,CN,DIRECT
# 兜底规则:如果上面的都没匹配中,走这个
- MATCH,🚀 节点选择
REJECT 表示直接拦截该连接,常用于去广告。DIRECT 表示不经过代理,直接访问。
第六步:利用 Rule Providers 简化维护
如果手动写几千行规则,那得累死。这时候就需要 rule-providers,它可以引用别人维护好的规则列表(通常是 .yaml 格式)。
rule-providers:
google:
type: http
behavior: domain
url: "https://example.com/google.yaml"
path: ./ruleset/google.yaml
interval: 86400
rules:
- RULE-SET,google,🚀 节点选择
- GEOIP,CN,DIRECT
- MATCH,🚀 节点选择
这种方式让你的主配置文件非常简洁,维护起来也方便。
实战:从零写一个完整的配置文件
把上面的知识点串起来,这就是一个能直接跑的完整配置:
mixed-port: 7890
allow-lan: true
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
dns:
enable: true
enhanced-mode: fake-ip
nameserver:
- 223.5.5.5
fallback:
- 8.8.8.8
proxies:
- name: "香港 01"
type: ss
server: hk1.example.com
port: 8388
cipher: aes-256-gcm
password: "pwd"
- name: "美国 01"
type: vmess
server: us1.example.com
port: 443
uuid: uuid-here
alterId: 0
cipher: auto
tls: true
proxy-groups:
- name: 🌍 代理出口
type: select
proxies:
- ⚡️ 自动测速
- 香港 01
- 美国 01
- name: ⚡️ 自动测速
type: url-test
url: http://www.gstatic.com/generate_204
interval: 300
proxies:
- 香港 01
- 美国 01
rules:
- DOMAIN-SUFFIX,google.com,🌍 代理出口
- DOMAIN-KEYWORD,youtube,🌍 代理出口
- DOMAIN-SUFFIX,apple.com,DIRECT
- GEOIP,CN,DIRECT
- MATCH,🌍 代理出口
调试技巧:怎么看日志?
写完配置导入后,如果没效果,别着急。打开 ClashX 的菜单,选择“控制面板”(或者 Logs 窗口)。
在日志里,你可以清晰地看到每一个请求是怎么匹配规则的。比如:
[Inbound] 127.0.0.1:56789 --> www.google.com match DomainSuffix(google.com) using 🌍 代理出口
如果看到红色的 Error,那就得仔细检查你的 YAML 语法了。通常是少了空格,或者缩进对齐没做好。
常见写法错误排查
- 冒号后没空格:
port:7890是错的,必须是port: 7890。 - Tab 键缩进:哪怕只用了一个 Tab,文件也会解析失败。请全程使用空格。
- 节点名称重复:
proxies里的name必须是唯一的。 - 策略组引用了不存在的节点:如果你删掉了一个节点,记得也要在
proxy-groups里把它去掉。 - 规则顺序不对:如果你把
MATCH,DIRECT放在了第一行,那么所有流量都会直连,后面的规则全废了。
常用规则集推荐
如果你不想自己折腾规则,可以去 GitHub 上搜一些大佬维护的项目。比较著名的有:
- Loyalsoldier/clash-rules:非常全,分门别类。
- ACL4SSR:针对国内环境优化得非常好。
你只需要用 rule-providers 引用这些项目的链接即可。
总结
虽然现成的订阅很香,但学会写 YAML 配置能让你真正掌控自己的网络环境。你可以让特定的 App 走特定的节点,可以让看视频的流量和工作的流量分开,这种自由度是订阅链接给不了的。
当然,所有的配置都需要一个好用的客户端来承载。在 Mac 上,我强烈推荐使用 ClashX 来运行这套配置。它的界面简洁,运行稳定,而且对 macOS 的系统代理支持非常完美。
如果你在写配置的过程中遇到了什么坑,欢迎在评论区留言,我们一起讨论。我是阿明,下次见!