1839 字
9 分钟
Clash 配置文件详解:规则、策略组与分流逻辑

引言:为什么需要了解配置文件#

当你使用机场提供的订阅链接时,Clash 会自动下载配置文件。但如果想实现更精细的分流控制,比如:

  • 特定网站走特定节点
  • 国内网站直接访问不走代理
  • 根据网络情况自动选择节点

就需要了解 Clash 配置文件的结构和原理。

1. 配置文件结构概览#

1.1 基本结构#

# Clash 配置文件基本结构
mixed-port: 7890
allow-lan: false
mode: Rule
log-level: info
dns:
enable: true
nameserver:
- 114.114.114.114
- 8.8.8.8
proxies:
# 代理节点列表
proxy-groups:
# 策略组定义
rules:
# 规则列表

1.2 核心配置项#

配置项作用默认值
mixed-portHTTP/SOCKS 混合端口7890
allow-lan是否允许局域网访问false
mode模式(Global/Rule/Direct/Script)Rule
log-level日志级别info
dnsDNS 配置内置 DNS

2. Proxies 代理节点配置#

2.1 节点配置格式#

proxies:
- name: "US-Node-01"
type: vless
server: us.example.com
port: 443
uuid: your-uuid-here
flow: "xtls-rprx-vision"
cipher: auto
tls: true
servername: us.example.com
skip-cert-verify: false
- name: "JP-Node-01"
type: hysteria2
server: jp.example.com
port: 443
password: your-password
sni: jp.example.com
up: "50 Mbps"
down: "100 Mbps"
- name: "HK-Node-01"
type: shadowsocks
server: hk.example.com
port: 8443
password: your-password
cipher: aes-256-gcm
- name: "DIRECT"
type: direct
- name: "REJECT"
type: reject

2.2 常见协议配置#

协议必需字段可选字段
VLESSname, type, server, port, uuidflow, cipher, tls, servername
VLESS+Realityname, type, server, port, uuid, reality-optsflow, cipher, tls
Hysteria2name, type, server, port, passwordsni, up, down, alpn
Shadowsocksname, type, server, port, password, cipherplugin
Trojanname, type, server, port, passwordsni, alpn

2.3 DIRECT 和 REJECT#

# DIRECT:直接连接,不走代理
- name: "DIRECT"
type: direct
# REJECT:拒绝连接
- name: "REJECT"
type: reject

3. Proxy-Groups 策略组配置#

3.1 策略组类型#

类型作用适用场景
select用户手动选择节点默认策略组
url-test根据 URL 延迟自动选择自动选择最优节点
fallback依次尝试,选择第一个可用节点高可用场景
load-balance负载均衡,分摊流量多节点分担
match匹配第一个可用节点快速切换

3.2 策略组配置示例#

proxy-groups:
# 自动选择:根据延迟选择最优节点
- name: "自动选择"
type: url-test
proxies:
- US-Node-01
- US-Node-02
- JP-Node-01
- HK-Node-01
url: http://www.gstatic.com/generate_204
interval: 300
# 手动选择:用户手动切换节点
- name: "手动选择"
type: select
proxies:
- US-Node-01
- JP-Node-01
- HK-Node-01
- 自动选择
# 流媒体:专门用于流媒体服务
- name: "流媒体"
type: url-test
proxies:
- US-Node-01
- JP-Node-01
url: http://www.netflix.com
interval: 300
# 国内网站:直接访问
- name: "国内网站"
type: select
proxies:
- DIRECT
# 广告拦截:拒绝连接
- name: "广告拦截"
type: select
proxies:
- REJECT
# 最终策略:决定整体流量走向
- name: "Final"
type: select
proxies:
- 手动选择
- 自动选择

3.3 策略组优先级#

Terminal window
# 策略组执行顺序
1. rules 中的规则匹配
2. 匹配到的规则指向对应的策略组
3. 策略组内部根据类型选择节点
4. 如果没有匹配规则,走 Final 策略组
# 示例流程
访问 google.com 匹配到 Google 规则 指向"手动选择"策略组 选择 US-Node-01

4. Rules 规则配置#

4.1 规则类型#

规则类型匹配方式示例
DOMAIN精确匹配域名DOMAIN,google.com
DOMAIN-SUFFIX匹配域名后缀DOMAIN-SUFFIX,google.com
DOMAIN-KEYWORD匹配域名关键词DOMAIN-KEYWORD,google
IP-CIDR匹配 IP 地址段IP-CIDR,8.8.8.8/32
IP-CIDR6匹配 IPv6 地址段IP-CIDR6,::1/128
GEOIP匹配地理位置GEOIP,CN
DST-PORT匹配目标端口DST-PORT,443
SRC-IP-CIDR匹配源 IPSRC-IP-CIDR,192.168.1.0/24
MATCH匹配所有流量MATCH

4.2 规则优先级#

Terminal window
# 规则匹配顺序(从上到下)
1. DOMAIN(精确匹配)
2. DOMAIN-SUFFIX(后缀匹配)
3. DOMAIN-KEYWORD(关键词匹配)
4. GEOIP(地理位置匹配)
5. IP-CIDR(IP 匹配)
6. DST-PORT(端口匹配)
7. MATCH(兜底匹配)
# 重要:规则从上到下依次匹配,匹配到就执行,不再继续匹配

4.3 规则配置示例#

rules:
# 国内网站直接访问
- GEOIP,CN,国内网站
- DOMAIN-SUFFIX,baidu.com,国内网站
- DOMAIN-SUFFIX,bilibili.com,国内网站
- DOMAIN-SUFFIX,taobao.com,国内网站
# 流媒体专用节点
- DOMAIN-SUFFIX,netflix.com,流媒体
- DOMAIN-SUFFIX,disneyplus.com,流媒体
- DOMAIN-SUFFIX,hbo.com,流媒体
# Google 服务
- DOMAIN-SUFFIX,google.com,手动选择
- DOMAIN-SUFFIX,gmail.com,手动选择
- DOMAIN-SUFFIX,youtube.com,手动选择
# 社交媒体
- DOMAIN-SUFFIX,facebook.com,手动选择
- DOMAIN-SUFFIX,twitter.com,手动选择
- DOMAIN-SUFFIX,instagram.com,手动选择
# AI 服务
- DOMAIN-SUFFIX,openai.com,手动选择
- DOMAIN-SUFFIX,chatgpt.com,手动选择
# 广告拦截
- DOMAIN-KEYWORD,ad,广告拦截
- DOMAIN-KEYWORD,ads,广告拦截
# 兜底规则:所有其他流量走手动选择
- MATCH,手动选择

5. DNS 配置#

5.1 基本配置#

dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip
nameserver:
- 223.5.5.5
- 114.114.114.114
fallback:
- 8.8.8.8
- 1.1.1.1
fallback-filter:
geoip: true
ipcidr:
- 223.5.5.5/32
- 114.114.114.114/32

5.2 DNS 模式#

模式作用特点
redir-host将 DNS 请求重定向到 Clash需要配合透明代理
fake-ip返回假 IP,由 Clash 处理推荐使用
fake-ip-filter对部分域名使用真实 IP兼容性好

5.3 DNS 污染防护#

# 使用 DoH/DoT 防止 DNS 污染
dns:
nameserver:
- https://doh.pub/dns-query
- https://dns.google/dns-query
fallback:
- tls://1.1.1.1
- tls://8.8.8.8

6. 完整配置文件示例#

mixed-port: 7890
allow-lan: false
mode: Rule
log-level: info
dns:
enable: true
enhanced-mode: fake-ip
nameserver:
- 223.5.5.5
- 114.114.114.114
fallback:
- 8.8.8.8
- 1.1.1.1
proxies:
- name: "US-Node-01"
type: vless
server: us.example.com
port: 443
uuid: your-uuid
flow: "xtls-rprx-vision"
tls: true
servername: us.example.com
- name: "JP-Node-01"
type: hysteria2
server: jp.example.com
port: 443
password: your-password
sni: jp.example.com
- name: "DIRECT"
type: direct
- name: "REJECT"
type: reject
proxy-groups:
- name: "自动选择"
type: url-test
proxies:
- US-Node-01
- JP-Node-01
url: http://www.gstatic.com/generate_204
interval: 300
- name: "手动选择"
type: select
proxies:
- US-Node-01
- JP-Node-01
- 自动选择
- name: "国内网站"
type: select
proxies:
- DIRECT
- name: "广告拦截"
type: select
proxies:
- REJECT
rules:
- GEOIP,CN,国内网站
- DOMAIN-SUFFIX,baidu.com,国内网站
- DOMAIN-SUFFIX,bilibili.com,国内网站
- DOMAIN-SUFFIX,netflix.com,手动选择
- DOMAIN-SUFFIX,google.com,手动选择
- DOMAIN-SUFFIX,youtube.com,手动选择
- DOMAIN-SUFFIX,openai.com,手动选择
- DOMAIN-KEYWORD,ad,广告拦截
- MATCH,手动选择

7. 常见配置问题#

Q1:规则不生效?#

Terminal window
# 排查步骤
1. 检查规则顺序(从上到下匹配)
2. 检查规则语法是否正确
3. 检查策略组名称是否匹配
4. 检查节点名称是否匹配
5. 查看 Clash 日志确认匹配情况

Q2:DNS 泄漏?#

Terminal window
# 解决方法
1. 确保 enhanced-mode 设置为 fake-ip
2. 配置 fallback DNS 为海外 DNS
3. 启用 fallback-filter
4. 使用 DoH/DoT 协议

Q3:某些网站打不开?#

Terminal window
# 解决方法
1. 添加该网站的规则到对应的策略组
2. 检查是否需要特定地区节点
3. 尝试切换到 DIRECT 访问
4. 检查 DNS 是否解析正确

Q4:配置文件更新失败?#

Terminal window
# 解决方法
1. 检查订阅链接是否有效
2. 检查网络连接
3. 手动下载配置文件
4. 检查配置文件语法是否正确

8. 高级技巧#

8.1 自定义规则#

Terminal window
# 添加自定义规则的方法
1. rules 部分添加新规则
2. 确保规则格式正确
3. 规则顺序合理
4. 测试规则是否生效
# 示例:添加 ChatGPT 规则
- DOMAIN-SUFFIX,chatgpt.com,手动选择
- DOMAIN-SUFFIX,openai.com,手动选择

8.2 使用 Rule Provider#

Terminal window
# Rule Provider 可以从远程加载规则
rule-providers:
china:
type: http
url: "https://example.com/china-rules.txt"
path: ./rules/china.txt
interval: 86400
rules:
- RULE-SET,china,国内网站

8.3 使用 Script 模式#

Terminal window
# Script 模式可以用 JavaScript 编写复杂规则
mode: Script
script:
engine: expr
path: ./script.js
# script.js 示例
function main() {
if (dnsDomainIs(request.domain, "google.com")) {
return "手动选择";
}
if (geoip(request.ip) === "CN") {
return "国内网站";
}
return "自动选择";
}

结语#

理解 Clash 配置文件的结构和原理,可以让你更灵活地控制网络流量。对于大多数用户来说,使用机场提供的默认配置就足够了。但如果有特殊需求,可以参考本文进行自定义配置。

TIP

修改配置文件前,建议先备份原文件,以免配置错误导致无法正常使用。


想了解更多 Clash 配置技巧?请订阅我们的 Telegram 频道 或持续关注本站。

Clash 配置文件详解:规则、策略组与分流逻辑
https://888479.xyz/posts/clash-configuration-file-explained-rules-proxy-groups/
作者
888479
发布于
2026-07-08
许可协议
CC BY-NC-SA 4.0