实战教程

ClashX 配置文件完整教程:从零开始写 YAML

不懂 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 配置文件通常由以下几部分组成:

  1. General(全局设置):定义端口、运行模式等基础参数。
  2. DNS(域名解析):解决解析污染,优化访问速度。
  3. Proxies(代理节点):定义具体的服务器信息。
  4. Proxy Groups(策略组):把节点分组,设置选择逻辑(比如自动测速)。
  5. Rule Providers(规则集,可选):引用外部的规则列表。
  6. 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)

有了节点,我们不能每次都手动去改配置文件换节点。策略组就是为了让我们更方便地切换。

常用的策略组类型有三种:

  1. select:手动选择。
  2. url-test:自动选择延迟最低的节点。
  3. 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 语法了。通常是少了空格,或者缩进对齐没做好。

常见写法错误排查

  1. 冒号后没空格port:7890 是错的,必须是 port: 7890
  2. Tab 键缩进:哪怕只用了一个 Tab,文件也会解析失败。请全程使用空格。
  3. 节点名称重复proxies 里的 name 必须是唯一的。
  4. 策略组引用了不存在的节点:如果你删掉了一个节点,记得也要在 proxy-groups 里把它去掉。
  5. 规则顺序不对:如果你把 MATCH,DIRECT 放在了第一行,那么所有流量都会直连,后面的规则全废了。

常用规则集推荐

如果你不想自己折腾规则,可以去 GitHub 上搜一些大佬维护的项目。比较著名的有:

  • Loyalsoldier/clash-rules:非常全,分门别类。
  • ACL4SSR:针对国内环境优化得非常好。

你只需要用 rule-providers 引用这些项目的链接即可。

总结

虽然现成的订阅很香,但学会写 YAML 配置能让你真正掌控自己的网络环境。你可以让特定的 App 走特定的节点,可以让看视频的流量和工作的流量分开,这种自由度是订阅链接给不了的。

当然,所有的配置都需要一个好用的客户端来承载。在 Mac 上,我强烈推荐使用 ClashX 来运行这套配置。它的界面简洁,运行稳定,而且对 macOS 的系统代理支持非常完美。

如果你在写配置的过程中遇到了什么坑,欢迎在评论区留言,我们一起讨论。我是阿明,下次见!