Clash规则配置:从基础语法到高级分流实战

Clash 的核心能力并非仅取决于节点本身,更在于 `rules`(规则)列表的编写逻辑。许多用户反馈配置后出现“部分网站无法访问”、“视频加载缓慢”或“本地局域网服务断连”等问题,绝大多数情况并非节点故障,而是规则配置存在逻辑冲突或优先级错误。

本文旨在解决 Clash 规则配置中的核心痛点,重点解析规则语法的正确写法、国内直连与代理的判定逻辑、以及常见配置错误的排查方法。通过掌握规则引擎的工作机制,你可以构建出既稳定又高效的分流网络。

规则引擎的工作原理与优先级

Clash 的规则引擎采用“自上而下、匹配即停止”的逻辑。这意味着配置文件中的规则顺序至关重要。当流量经过 Clash 时,引擎会从第一行规则开始逐一比对,一旦匹配成功,立即执行对应的动作(如 Proxy、Direct、Reject),后续的规则将不再对该流量生效。

理解这一机制是配置规则的前提。如果将“全局代理”规则放在配置文件的顶部,那么所有流量(包括本地 DNS 查询、局域网访问、国内网站)都将被强制代理,导致局域网无法访问、DNS 污染或国内网站加载极慢。因此,合理的规则配置必须遵循“特殊优先、通用兜底”的原则。

基础规则语法解析

Clash 支持多种规则类型,每种类型对应不同的流量匹配条件。掌握这些语法是编写有效规则的基础。

1. DOMAIN 与 DOMAIN-SUFFIX

`DOMAIN` 用于精确匹配域名,例如 `DOMAIN,baidu.com` 仅匹配 `baidu.com`,不匹配 `www.baidu.com` 或 `baidu.com.cn`。`DOMAIN-SUFFIX` 用于匹配域名后缀,例如 `DOMAIN-SUFFIX,.google.com` 将匹配 `google.com`、`www.google.com` 等所有以 `.google.com` 结尾的域名。

配置建议:对于知名大型服务(如 Google、YouTube、Netflix),通常使用 `DOMAIN-SUFFIX` 以确保子域名也能被正确代理。对于需要严格隔离的特定域名,使用 `DOMAIN`。

2. IP-CIDR 与 IP-CIDR6

`IP-CIDR` 用于匹配 IPv4 地址段,`IP-CIDR6` 用于匹配 IPv6 地址段。例如 `IP-CIDR,127.0.0.0/8,DIRECT` 表示所有指向本地回环地址的流量都直连。

关键参数:`no-resolve`。当规则匹配的是 IP 地址而非域名时,Clash 无需进行 DNS 解析,直接添加 `no-resolve` 可以显著减少 DNS 查询延迟,提升规则匹配速度。例如:`IP-CIDR,8.8.8.8/32,DIRECT,no-resolve`。

3. GEOIP 与 RULE-SET

`GEOIP` 是 Clash 内置的地理 IP 匹配功能,通常配合 `GEOIP,CN,DIRECT` 使用,将所有源自中国大陆的 IP 流量直连。这是避免访问国内网站时出现路由环路或延迟飙升的最有效手段。

`RULE-SET` 允许用户引用外部的规则集文件(如 `rule-set:my-rules`)。这种配置方式便于维护,可以将庞大的规则列表分离到外部文件中,通过 `external-rule` 或 `rule-providers` 动态更新,而无需修改主配置文件。

4. MATCH

`MATCH` 是兜底规则,通常放在配置文件的最后一行。它匹配所有未被前面规则匹配的流量。例如 `MATCH,Proxy` 表示将所有剩余流量走代理。如果忘记添加此规则,未匹配的流量可能会被默认丢弃或走直连,导致部分服务不可用。

国内直连与代理的逻辑构建

一个标准的 Clash 配置通常包含三个核心部分:本地局域网/系统服务、国内主流服务、以及需要代理的国际服务。

1. 保护本地服务

在规则列表的最前端,必须优先处理本地和局域网流量,否则可能导致手机热点无法共享、智能家居设备断连或本地 NAS 无法访问。

“`yaml
• DOMAIN-SUFFIX,local,DIRECT
• IP-CIDR,127.0.0.0/8,DIRECT
• IP-CIDR,192.168.0.0/16,DIRECT
• IP-CIDR,10.0.0.0/8,DIRECT
• IP-CIDR,172.16.0.0/12,DIRECT
“`

原因:这些 IP 段属于私有网络或本地回环地址,代理它们不仅没有必要,还会导致本地服务(如打印机、本地数据库)连接超时。

2. 屏蔽恶意广告与追踪

在直连国内网站之前,通常建议先拦截恶意广告和追踪域名。这不仅提升浏览体验,还能减少不必要的代理流量。

“`yaml
• DOMAIN-SUFFIX,admarvel.com,REJECT
• DOMAIN-SUFFIX,admaster.com.cn,REJECT
• DOMAIN-SUFFIX,admob.com,REJECT
• DOMAIN-SUFFIX,adsensor.org,REJECT
• DOMAIN-SUFFIX,analytics.google.com,REJECT
“`

注意:使用 `REJECT` 会主动拒绝连接,可能导致某些页面加载缓慢(因为客户端等待超时)。如果希望静默失败,可以使用 `REJECT-DROP`,它直接丢弃数据包,速度更快但调试难度稍大。

3. 国内服务直连

使用 `GEOIP,CN,DIRECT` 是覆盖大部分国内 IP 的最简单方法。但对于某些域名解析不准确或使用 CDN 的国内服务,可能需要补充 `DOMAIN-SUFFIX` 或 `DOMAIN` 规则。

“`yaml
• GEOIP,CN,DIRECT
• DOMAIN-SUFFIX,baidu.com,DIRECT
• DOMAIN-SUFFIX,qq.com,DIRECT
• DOMAIN-SUFFIX,weixin.qq.com,DIRECT
• DOMAIN-SUFFIX,tencent.com,DIRECT
• DOMAIN-SUFFIX,alibaba.com,DIRECT
• DOMAIN-SUFFIX,taobao.com,DIRECT
• DOMAIN-SUFFIX,jd.com,DIRECT
• DOMAIN-SUFFIX,bilibili.com,DIRECT
“`

常见误区:不要依赖 `GEOIP` 覆盖所有国内域名。部分国内 App 会使用海外 CDN 节点或域名解析到海外 IP,此时需要手动补充对应的 `DOMAIN-SUFFIX` 规则,否则会出现“微信能登录但朋友圈图片加载失败”等奇怪现象。

4. 国际服务代理

将需要代理的域名列表放在直连规则之后。为了避免规则过长,通常只列出核心域名,其余依靠 `GEOIP` 和兜底规则处理。

“`yaml
• DOMAIN-SUFFIX,google.com,Proxy
• DOMAIN-SUFFIX,youtube.com,Proxy
• DOMAIN-SUFFIX,netflix.com,Proxy
• DOMAIN-SUFFIX,apple.com,Proxy
• DOMAIN-SUFFIX,icloud.com,Proxy
• DOMAIN-SUFFIX,facebook.com,Proxy
• DOMAIN-SUFFIX,twitter.com,Proxy
• DOMAIN-SUFFIX,instagram.com,Proxy
“`

常见配置错误与排查方法

即使规则语法正确,配置后仍可能出现连接问题。以下是高频故障及解决方案。

1. 国内网站打开缓慢或无法访问

可能原因
• `GEOIP,CN,DIRECT` 规则缺失或位置靠后。
• 部分国内域名被错误地配置为 `Proxy`。
• DNS 解析污染:Clash 默认使用系统 DNS,若系统 DNS 被污染,可能导致域名解析到错误的 IP。

解决步骤
• 检查规则列表中是否包含 `GEOIP,CN,DIRECT`,并确保其位于 `MATCH,Proxy` 之前。
• 在 Clash 配置文件中启用 `enhanced-mode` 为 `fake-ip` 或 `redir-host`。`fake-ip` 模式能更快响应 DNS 请求,减少解析延迟。
• 在配置文件中设置 `dns` 部分,使用可靠的公共 DNS(如 `223.5.5.5` 或 `119.29.29.29`),并设置 `nameserver` 为直连 DNS。

2. 代理网站无法打开或连接超时

可能原因
• 域名规则缺失:目标网站使用了新的域名或子域名,未被现有规则覆盖。
• 协议不匹配:节点支持 VLESS/Reality,但规则或客户端设置未正确启用相关功能。
• 防火墙干扰:目标域名被深度包检测(DPI)识别,需要混淆(Obfs)或伪装(SNI)。

解决步骤
• 开启 Clash 的“调试模式”或“日志模式”,查看 DNS 解析结果和路由决策。确认目标域名是否被正确解析到代理节点。
• 检查节点配置中的 `type` 和 `server` 是否与订阅信息一致。
• 对于特定网站,尝试添加 `DOMAIN-SUFFIX` 规则,确保其被正确指向 `Proxy` 组。

3. 局域网设备无法通过手机热点代理

可能原因
• 手机热点的 DHCP 网关未正确指向 Clash 的本地监听地址。
• Clash 未开启“允许局域网连接”选项。

解决步骤
• 在 Clash 配置文件中设置 `allow-lan: true`。
• 设置 `bind-address: ‘*’` 或 `0.0.0.0`,确保监听所有网卡。
• 在 Clash 客户端设置中,开启“允许局域网连接”或“Hotspot Share”。
• 确保局域网设备连接的 WiFi 网关 IP 与 Clash 监听的 IP 一致。

高级技巧:使用 Rule-Set 优化维护

随着规则数量增加,主配置文件会变得冗长且难以维护。Clash 提供了 `rule-providers` 功能,允许从远程 URL 加载规则集。

“`yaml
rule-providers:
reject:
type: http
path: ./rules/reject.yaml
url: “”
interval: 86400
cn-domains:
type: http
path: ./rules/cn-domains.yaml
url: “”
interval: 86400

rules:
• RULE-SET,reject,REJECT
• RULE-SET,cn-domains,DIRECT
• MATCH,Proxy
“`

优势
动态更新:设置 `interval` 后,Clash 会定期自动更新规则集,无需手动修改配置文件。
模块化:可以将广告拦截、国内直连、特定服务代理等规则分离到不同文件,便于复用和调试。

注意事项
• 确保远程 URL 的稳定性。如果规则源失效,可能导致部分功能异常。
• 本地 `path` 路径需确保 Clash 进程有读写权限。
• 定期备份本地规则文件,以防远程更新失败。

总结

Clash 规则配置的核心在于逻辑的清晰与优先级的合理。通过严格区分本地、国内、国际流量,并善用 `GEOIP`、`DOMAIN-SUFFIX` 和 `RULE-SET`,可以构建出高效稳定的分流网络。遇到连接问题时,优先检查规则顺序、DNS 设置和日志输出,而非盲目更换节点。掌握这些基础与进阶技巧,你将能更自如地驾驭 Clash 的强大功能。