1839 字
9 分钟
Clash 配置文件详解:规则、策略组与分流逻辑
引言:为什么需要了解配置文件
当你使用机场提供的订阅链接时,Clash 会自动下载配置文件。但如果想实现更精细的分流控制,比如:
- 特定网站走特定节点
- 国内网站直接访问不走代理
- 根据网络情况自动选择节点
就需要了解 Clash 配置文件的结构和原理。
1. 配置文件结构概览
1.1 基本结构
# Clash 配置文件基本结构mixed-port: 7890allow-lan: falsemode: Rulelog-level: info
dns: enable: true nameserver: - 114.114.114.114 - 8.8.8.8
proxies: # 代理节点列表
proxy-groups: # 策略组定义
rules: # 规则列表1.2 核心配置项
| 配置项 | 作用 | 默认值 |
|---|---|---|
| mixed-port | HTTP/SOCKS 混合端口 | 7890 |
| allow-lan | 是否允许局域网访问 | false |
| mode | 模式(Global/Rule/Direct/Script) | Rule |
| log-level | 日志级别 | info |
| dns | DNS 配置 | 内置 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: reject2.2 常见协议配置
| 协议 | 必需字段 | 可选字段 |
|---|---|---|
| VLESS | name, type, server, port, uuid | flow, cipher, tls, servername |
| VLESS+Reality | name, type, server, port, uuid, reality-opts | flow, cipher, tls |
| Hysteria2 | name, type, server, port, password | sni, up, down, alpn |
| Shadowsocks | name, type, server, port, password, cipher | plugin |
| Trojan | name, type, server, port, password | sni, alpn |
2.3 DIRECT 和 REJECT
# DIRECT:直接连接,不走代理- name: "DIRECT" type: direct
# REJECT:拒绝连接- name: "REJECT" type: reject3. 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 策略组优先级
# 策略组执行顺序1. rules 中的规则匹配2. 匹配到的规则指向对应的策略组3. 策略组内部根据类型选择节点4. 如果没有匹配规则,走 Final 策略组
# 示例流程访问 google.com → 匹配到 Google 规则 → 指向"手动选择"策略组 → 选择 US-Node-014. 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 | 匹配源 IP | SRC-IP-CIDR,192.168.1.0/24 |
| MATCH | 匹配所有流量 | MATCH |
4.2 规则优先级
# 规则匹配顺序(从上到下)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/325.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.86. 完整配置文件示例
mixed-port: 7890allow-lan: falsemode: Rulelog-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:规则不生效?
# 排查步骤1. 检查规则顺序(从上到下匹配)2. 检查规则语法是否正确3. 检查策略组名称是否匹配4. 检查节点名称是否匹配5. 查看 Clash 日志确认匹配情况Q2:DNS 泄漏?
# 解决方法1. 确保 enhanced-mode 设置为 fake-ip2. 配置 fallback DNS 为海外 DNS3. 启用 fallback-filter4. 使用 DoH/DoT 协议Q3:某些网站打不开?
# 解决方法1. 添加该网站的规则到对应的策略组2. 检查是否需要特定地区节点3. 尝试切换到 DIRECT 访问4. 检查 DNS 是否解析正确Q4:配置文件更新失败?
# 解决方法1. 检查订阅链接是否有效2. 检查网络连接3. 手动下载配置文件4. 检查配置文件语法是否正确8. 高级技巧
8.1 自定义规则
# 添加自定义规则的方法1. 在 rules 部分添加新规则2. 确保规则格式正确3. 规则顺序合理4. 测试规则是否生效
# 示例:添加 ChatGPT 规则- DOMAIN-SUFFIX,chatgpt.com,手动选择- DOMAIN-SUFFIX,openai.com,手动选择8.2 使用 Rule Provider
# 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 模式
# Script 模式可以用 JavaScript 编写复杂规则mode: Scriptscript: 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/