ClashX 配置文件完整解析:深入理解 YAML 配置

配置文件概述

ClashX 使用 YAML 格式的配置文件来定义所有的代理行为。理解配置文件的结构和每个配置项的作用,是掌握 ClashX 的关键。

配置文件通常位于 ~/.config/clash/config.yaml,也可以通过订阅链接自动更新。本文将深入解析配置文件的每个部分,帮助你创建最适合自己需求的配置。

💡
YAML 格式要点

YAML 对缩进非常敏感,必须使用空格(不是 Tab)进行缩进。建议使用 2 个空格作为一级缩进。

基础结构

一个完整的 ClashX 配置文件主要包含以下几个部分:

配置文件基本结构

# 通用设置
port: 7890
socks-port: 7891
allow-lan: false
mode: rule
log-level: info

# 代理节点
proxies:
  - name: "节点1"
    type: ss
    server: example.com
    port: 443

# 策略组
proxy-groups:
  - name: "🚀 节点选择"
    type: select
    proxies:
      - "节点1"

# 规则
rules:
  - DOMAIN-SUFFIX,google.com,🚀 节点选择
  - GEOIP,CN,DIRECT
  - MATCH,🚀 节点选择

通用设置 (General)

通用设置控制 ClashX 的基本行为和性能参数。

端口配置

# HTTP 代理端口
port: 7890

# SOCKS5 代理端口
socks-port: 7891

# 混合端口(同时支持 HTTP 和 SOCKS5)
mixed-port: 7892

# RESTful API 端口
external-controller: 127.0.0.1:9090

# API 访问密钥(可选)
secret: "your-secret-key"

网络设置

# 允许局域网连接
allow-lan: false

# 绑定地址(局域网时使用)
bind-address: "*"

# 运行模式:rule(规则) / global(全局) / direct(直连)
mode: rule

# 日志级别:silent / error / warning / info / debug
log-level: info

# IPv6 支持
ipv6: true

DNS 配置

DNS 配置影响域名解析的速度和准确性:

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 过滤(这些域名不使用 Fake-IP)
  fake-ip-filter:
    - "*.lan"
    - "localhost.ptlogin2.qq.com"

  # DNS 服务器
  nameserver:
    - 119.29.29.29
    - 223.5.5.5
    - https://doh.pub/dns-query

  # 回落 DNS(当主 DNS 失败时使用)
  fallback:
    - https://1.1.1.1/dns-query
    - https://dns.google/dns-query

  # 根据域名选择 DNS
  nameserver-policy:
    "geosite:cn":
      - 119.29.29.29
      - 223.5.5.5
    "geosite:geolocation-!cn":
      - https://1.1.1.1/dns-query
⚠️
DNS 模式选择

fake-ip:性能更好,但可能与某些应用不兼容
redir-host:兼容性好,但速度稍慢

代理节点配置 (Proxies)

proxies 部分定义所有可用的代理服务器节点。ClashX 支持多种代理协议。

Shadowsocks (SS)

proxies:
  - name: "SS节点"
    type: ss
    server: example.com
    port: 443
    cipher: aes-256-gcm
    password: "your-password"
    udp: true

ShadowsocksR (SSR)

  - name: "SSR节点"
    type: ssr
    server: example.com
    port: 443
    cipher: aes-256-cfb
    password: "your-password"
    protocol: auth_aes128_md5
    protocol-param: ""
    obfs: tls1.2_ticket_auth
    obfs-param: "cloudflare.com"

VMess

  - name: "VMess节点"
    type: vmess
    server: example.com
    port: 443
    uuid: b831381d-6324-4d53-ad4f-8cda48b30811
    alterId: 0
    cipher: auto
    tls: true
    skip-cert-verify: false
    servername: example.com
    network: ws
    ws-opts:
      path: /path
      headers:
        Host: example.com

Trojan

  - name: "Trojan节点"
    type: trojan
    server: example.com
    port: 443
    password: "your-password"
    sni: example.com
    skip-cert-verify: false
    udp: true

HTTP/HTTPS 代理

  - name: "HTTP代理"
    type: http
    server: example.com
    port: 8080
    username: user
    password: pass
    tls: true
    skip-cert-verify: false

策略组配置 (Proxy Groups)

策略组允许你组合多个节点,实现自动选择、负载均衡等高级功能。

select - 手动选择

用户手动选择使用哪个节点:

proxy-groups:
  - name: "🚀 节点选择"
    type: select
    proxies:
      - "🇭🇰 香港节点"
      - "🇯🇵 日本节点"
      - "🇺🇸 美国节点"
      - DIRECT

url-test - 自动测速

自动选择延迟最低的节点:

  - name: "♻️ 自动选择"
    type: url-test
    proxies:
      - "节点1"
      - "节点2"
      - "节点3"
    url: "http://www.gstatic.com/generate_204"
    interval: 300    # 测试间隔(秒)
    tolerance: 50    # 容差(毫秒)

fallback - 故障转移

主节点失败时自动切换到备用节点:

  - name: "🔰 故障转移"
    type: fallback
    proxies:
      - "主节点"
      - "备用节点1"
      - "备用节点2"
    url: "http://www.gstatic.com/generate_204"
    interval: 300

load-balance - 负载均衡

在多个节点间分配流量:

  - name: "⚖️ 负载均衡"
    type: load-balance
    proxies:
      - "节点1"
      - "节点2"
      - "节点3"
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    strategy: consistent-hashing  # 或 round-robin

relay - 链式代理

流量经过多个代理节点:

  - name: "🔗 链式代理"
    type: relay
    proxies:
      - "节点1"
      - "节点2"
💡
策略组最佳实践

• 为不同用途创建不同的策略组(如流媒体、游戏、下载)
• 使用 url-test 实现自动优选
• 在 select 组中包含 url-test 组作为选项

规则配置 (Rules)

规则决定哪些流量走代理,哪些直连。规则从上到下匹配,一旦匹配就不再继续。

完整规则示例

rules:
  # 局域网直连
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve

  # 屏蔽广告
  - DOMAIN-KEYWORD,adservice,REJECT
  - DOMAIN-SUFFIX,doubleclick.net,REJECT

  # 流媒体
  - DOMAIN-SUFFIX,youtube.com,🎬 流媒体
  - DOMAIN-SUFFIX,netflix.com,🎬 流媒体
  - DOMAIN-KEYWORD,spotify,🎬 流媒体

  # Apple 服务
  - DOMAIN-SUFFIX,apple.com,🍎 苹果服务
  - DOMAIN-SUFFIX,icloud.com,🍎 苹果服务

  # Google 服务
  - DOMAIN-SUFFIX,google.com,🚀 代理
  - DOMAIN-SUFFIX,googleapis.com,🚀 代理
  - DOMAIN-SUFFIX,gstatic.com,🚀 代理

  # 国内网站直连
  - GEOIP,CN,DIRECT

  # 最终规则
  - MATCH,🚀 代理

规则优先级建议

1. 局域网
最高优先级
2. 屏蔽规则
REJECT
3. 特殊服务
流媒体、游戏等
4. 地理位置
GEOIP 规则
5. 默认策略
MATCH

高级配置选项

Rule Providers - 规则集

从外部文件加载规则,便于维护和更新:

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://cdn.example.com/reject.yaml"
    path: ./ruleset/reject.yaml
    interval: 86400

  proxy:
    type: http
    behavior: domain
    url: "https://cdn.example.com/proxy.yaml"
    path: ./ruleset/proxy.yaml
    interval: 86400

rules:
  - RULE-SET,reject,REJECT
  - RULE-SET,proxy,🚀 代理

TUN 模式

系统级代理,无需配置应用:

tun:
  enable: true
  stack: system  # 或 gvisor
  dns-hijack:
    - any:53
  auto-route: true
  auto-detect-interface: true

实验性功能

experimental:
  # 忽略解析失败的域名
  ignore-resolve-fail: true

  # 接口名称检测
  interface-name: en0
⚠️
注意事项

• TUN 模式需要管理员权限
• 修改配置后需重新加载才能生效
• 建议先在测试环境验证配置