本文将深入探讨如何在 Clash 中添加自定义规则并防止更新覆盖的问题,为您提供清晰的操作指南。
在 Clash 中,自定义规则是用户根据自己的需求编写的特殊流量控制策略。自定义规则可以帮助您:
Clash 支持多种规则类型,常见如下:
DOMAIN-SUFFIX:匹配域名后缀,例如 DOMAIN-SUFFIX,example.com,DIRECT,表示所有 example.com 后缀的流量直连。 DOMAIN:完全匹配某个域名,例如 DOMAIN,custom.example.com,PROXY。 IP-CIDR:匹配特定 IP 范围,例如 IP-CIDR,192.168.0.0/16,REJECT,表示拒绝访问该 IP 网段。 GEOIP:匹配某个国家的 IP,例如 GEOIP,CN,DIRECT,表示中国的流量直连。这些规则以顺序匹配的方式工作,第一条匹配到的规则会生效。
在 Clash 中添加自定义规则可以通过两种主要方式实现:直接修改Clash主配置文件或使用独立规则文件。下面将详细介绍这两种方式的操作步骤。
这是最常见的方式,但如果您使用订阅生成的配置文件,直接修改主文件可能会被覆盖。
Clash 的配置文件路径因操作系统而异:
C:\Users\<用户名>\.config\clash\config.yaml~/.config/clash/config.yaml使用支持 YAML 格式的文本编辑器(如 VS Code、Sublime Text 或 Notepad++)。
rules 字段(一般在文件末尾),按以下格式添加规则:rules:
- DOMAIN-SUFFIX,example.com,DIRECT
- DOMAIN,custom.example.com,PROXY
- IP-CIDR,192.168.1.0/24,REJECT注意:缩进必须严格对齐,否则会导致 Clash 无法正常运行。确保保存后重新启动 Clash。
为防止配置文件被覆盖,可以将自定义规则存储在单独的文件中,并通过主配置文件引用该文件。
在 Clash 配置目录下创建一个新文件,例如 `custom_rules.yaml`,内容如下:
rules:
- DOMAIN-SUFFIX,custom.com,PROXY
- DOMAIN,example.org,DIRECT在主配置文件(如 `config.yaml`)中,通过 `RULE-SET` 引用自定义规则文件:
rules:
- RULE-SET,custom_rules.yaml使新规则生效。
如前文所述,将规则放在单独的文件中可以有效避免覆盖问题。订阅更新时,主配置文件会被替换,但独立的规则文件不会受到影响。
如果您的 Clash 客户端不支持 `RULE-SET`,可以借助脚本实现订阅更新后的规则合并。
#!/bin/bash
# 自动将自定义规则追加到订阅配置中
SUBSCRIBE_FILE="config.yaml"
CUSTOM_RULES="custom_rules.yaml"
# 检查文件是否存在
if [ -f "$SUBSCRIBE_FILE" ] && [ -f "$CUSTOM_RULES" ]; then
# 追加自定义规则到订阅配置末尾
cat "$CUSTOM_RULES" >> "$SUBSCRIBE_FILE"
echo "自定义规则已成功合并到配置文件。"
else
echo "配置文件或自定义规则文件不存在!"
fibash update_rules.sh部分 Clash 客户端(如 Clash for Windows)允许禁用自动覆盖功能:
添加规则后,您需要验证其是否正常工作。以下方法可以帮助您检查规则匹配情况:
Clash 客户端日志会显示每次流量匹配的规则。例如:
[Info] [DNS] example.com --> DIRECT从日志中确认规则是否正确匹配到流量。
通过 Clash Dashboard(如 Clash for Windows 内置的规则页面)可以实时查看规则的应用情况。
访问您配置的域名或 IP,观察是否符合预期的代理策略。
检查以下几点:
RULE-SET 引入独立文件。Clash 从上到下按顺序匹配规则,第一条匹配成功的规则将生效。建议将通用规则放在后面,特定规则放在前面。
通过本文介绍的多种方法,您可以轻松实现 Clash 自定义规则的添加,并有效防止更新时规则被覆盖。无论是修改主配置文件、使用独立规则文件,还是借助脚本,选择适合自己的方式即可。希望本文对您有所帮助!