Felix_SANA 'S BLOG
1760 words
9 minutes
使用clash的mixin功能进行自定义规则

前言#

由于某些原因,规避了一些敏感内容,请自行脑补。

因为在使用过程中会使用各种不同的机场和网站,由于各个网站质量和规则参差不齐,导致切换不同的配置进行上网体验不佳。不过好在clash有mixin功能,可以进行自定义规则组,实现不同机场同样的上网体验。

本篇的演示为clash Premium版本。

Mixin功能简介#

由于众所周知的原因,官网现在已不可查,所以介绍我就尽可能简短,毕竟这篇博客是一个应用文不是原理文。

mixin官网

mixin功能说白了就和很多的软件一样,可以用你的自定义规则覆盖clash原有的配置,包括各个机场的规则组。

基于这个功能,我们只需要写一套规则组,然后用mixin功能覆盖各个机场的配置文件规则组即可。

简单使用方法#

首先我们来到clash的首页,点击混合代理右边的齿轮。

mixin配置处

由于mixin文件书写的缩进很重要,所以请注意缩进的格式!!

下面是我目前使用的mixin配置:「请不要直接复制过去使用!需要进行进阶配置!!」

我的配置文件使用并参考了了此GitHub项目,再次感谢各位开源作者们。

我不会对该配置文件做详细解释,有需求的请自行Google

mixin: # object
    dns:
        enable: true
        listen: 0.0.0.0:53
        ipv6: true
        default-nameserver:
            - 1.1.1.1
            - 8.8.8.8
        enhanced-mode: fake-ip
        fake-ip-range: 198.18.0.1/16
        nameserver:
            - https://doh.pub/dns-query
            - https://dns.alidns.com/dns-query
            - https://1.1.1.1/dns-query
        fallback:
            - https://max.rethinkdns.com/
            - https://sky.rethinkdns.com/
            - https://doh.dns.sb/dns-query
            - https://dns.cloudflare.com/dns-query
            - https://dns.twnic.tw/dns-query
            - tls://8.8.4.4:853
        fallback-filter:
            geoip: true
            geoip-code: CN
            ipcidr:
                - 240.0.0.0/4
            domain:
                - '-bing.com'
                - '+systemannounce.com'
    rule-providers:
        reject:
            type: file
            behavior: domain
            path: ./local/rule/reject.yaml
            interval: 86400

        icloud:
            type: file
            behavior: domain
            path: ./local/rule/icloud.yaml
            interval: 86400

        apple:
            type: file
            behavior: domain
            path: ./local/rule/apple.yaml
            interval: 86400

        google:
            type: file
            behavior: domain
            path: ./local/rule/google.yaml
            interval: 86400

        proxy:
            type: file
            behavior: domain
            path: ./local/rule/proxy.yaml
            interval: 86400

        direct:
            type: file
            behavior: domain
            path: ./local/rule/direct.yaml
            interval: 86400

        private:
            type: file
            behavior: domain
            path: ./local/rule/private.yaml
            interval: 86400

        gfw:
            type: file
            behavior: domain
            path: ./local/rule/gfw.yaml
            interval: 86400

        tld-not-cn:
            type: file
            behavior: domain
            path: ./local/rule/tld-not-cn.yaml
            interval: 86400

        telegramcidr:
            type: file
            behavior: ipcidr
            path: ./local/rule/telegramcidr.yaml
            interval: 86400

        cncidr:
            type: file
            behavior: ipcidr
            path: ./local/rule/cncidr.yaml
            interval: 86400

        lancidr:
            type: file
            behavior: ipcidr
            path: ./local/rule/lancidr.yaml
            interval: 86400

        applications:
            type: file
            behavior: classical
            path: ./local/rule/applications.yaml
            interval: 86400

    
    rules:
        - RULE-SET,applications,DIRECT
        - DOMAIN,clash.razord.top,DIRECT
        - DOMAIN,yacd.haishan.me,DIRECT
        - RULE-SET,private,DIRECT
        - RULE-SET,reject,REJECT
        - RULE-SET,icloud,DIRECT
        - RULE-SET,apple,DIRECT
        - RULE-SET,google,🚀 节点选择
        - RULE-SET,proxy,🚀 节点选择
        - RULE-SET,direct,DIRECT
        # - RULE-SET,lancidr,DIRECT
        - RULE-SET,cncidr,DIRECT
        - RULE-SET,telegramcidr,🚀 节点选择
        - GEOIP,LAN,DIRECT
        - GEOIP,CN,DIRECT
        - MATCH,🚀 节点选择

开盖即用法#

将下面的配置文件复制进你的mixin配置文件处,然后用你当前机场的订阅组名称替换掉 REPLACE 即可。

什么叫当前订阅组名称?请看:

订阅组名称

mixin: # object
    dns:
        enable: true
        listen: 0.0.0.0:53
        ipv6: true
        default-nameserver:
            - 1.1.1.1
            - 8.8.8.8
        enhanced-mode: fake-ip
        fake-ip-range: 198.18.0.1/16
        nameserver:
            - https://doh.pub/dns-query
            - https://dns.alidns.com/dns-query
            - https://1.1.1.1/dns-query
        fallback:
            - https://max.rethinkdns.com/
            - https://sky.rethinkdns.com/
            - https://doh.dns.sb/dns-query
            - https://dns.cloudflare.com/dns-query
            - https://dns.twnic.tw/dns-query
            - tls://8.8.4.4:853
        fallback-filter:
            geoip: true
            geoip-code: CN
            ipcidr:
                - 240.0.0.0/4
            domain:
                - '-bing.com'
                - '+systemannounce.com'
    rule-providers:
        reject:
            type: http
            behavior: domain
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
            path: ./ruleset/reject.yaml
            interval: 86400

        icloud:
            type: http
            behavior: domain
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/icloud.txt"
            path: ./ruleset/icloud.yaml
            interval: 86400

        apple:
            type: http
            behavior: domain
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
            path: ./ruleset/apple.yaml
            interval: 86400

        google:
            type: http
            behavior: domain
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
            path: ./ruleset/google.yaml
            interval: 86400

        proxy:
            type: http
            behavior: domain
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
            path: ./ruleset/proxy.yaml
            interval: 86400

        direct:
            type: http
            behavior: domain
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
            path: ./ruleset/direct.yaml
            interval: 86400

        private:
            type: http
            behavior: domain
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/private.txt"
            path: ./ruleset/private.yaml
            interval: 86400

        gfw:
            type: http
            behavior: domain
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/gfw.txt"
            path: ./ruleset/gfw.yaml
            interval: 86400

        tld-not-cn:
            type: http
            behavior: domain
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/tld-not-cn.txt"
            path: ./ruleset/tld-not-cn.yaml
            interval: 86400

        telegramcidr:
            type: http
            behavior: ipcidr
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/telegramcidr.txt"
            path: ./ruleset/telegramcidr.yaml
            interval: 86400

        cncidr:
            type: http
            behavior: ipcidr
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
            path: ./ruleset/cncidr.yaml
            interval: 86400

        lancidr:
            type: http
            behavior: ipcidr
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt"
            path: ./ruleset/lancidr.yaml
            interval: 86400

        applications:
            type: http
            behavior: classical
            url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/applications.txt"
            path: ./ruleset/applications.yaml
            interval: 86400

    
    rules:
        - RULE-SET,applications,DIRECT
        - DOMAIN,clash.razord.top,DIRECT
        - DOMAIN,yacd.haishan.me,DIRECT
        - RULE-SET,private,DIRECT
        - RULE-SET,reject,REJECT
        - RULE-SET,icloud,DIRECT
        - RULE-SET,apple,DIRECT
        - RULE-SET,google,REPLACE
        - RULE-SET,proxy,REPLACE
        - RULE-SET,direct,DIRECT
        # - RULE-SET,lancidr,DIRECT
        - RULE-SET,cncidr,DIRECT
        - RULE-SET,telegramcidr,REPLACE
        - GEOIP,LAN,DIRECT
        - GEOIP,CN,DIRECT
        - MATCH,REPLACE

深度自定义法#

那么如果这个开源项目的规则组还是不能满足你的需求,有些网站还是被误杀了,访问不了,请看接下来的方法。

这里需要注意你的clash的资料夹路径,这个路径可以在设置中查找到:

clash资料夹路径

在你的资料夹文件夹下面创建一个local文件夹,然后再在local文件夹下面创建一个rule文件夹,下载这个压缩包,解压缩在rule文件夹下即可,完成后路径和文件夹如下所示:

rule文件夹

然后将下面的配置文件复制进你的mixin配置文件处,然后用你当前机场的订阅组名称替换掉 REPLACE 即可。

什么叫当前订阅组名称?请看:

订阅组名称

mixin: # object
    dns:
        enable: true
        listen: 0.0.0.0:53
        ipv6: true
        default-nameserver:
            - 1.1.1.1
            - 8.8.8.8
        enhanced-mode: fake-ip
        fake-ip-range: 198.18.0.1/16
        nameserver:
            - https://doh.pub/dns-query
            - https://dns.alidns.com/dns-query
            - https://1.1.1.1/dns-query
        fallback:
            - https://max.rethinkdns.com/
            - https://sky.rethinkdns.com/
            - https://doh.dns.sb/dns-query
            - https://dns.cloudflare.com/dns-query
            - https://dns.twnic.tw/dns-query
            - tls://8.8.4.4:853
        fallback-filter:
            geoip: true
            geoip-code: CN
            ipcidr:
                - 240.0.0.0/4
            domain:
                - '-bing.com'
                - '+systemannounce.com'
    rule-providers:
        reject:
            type: file
            behavior: domain
            path: ./local/rule/reject.yaml
            interval: 86400

        icloud:
            type: file
            behavior: domain
            path: ./local/rule/icloud.yaml
            interval: 86400

        apple:
            type: file
            behavior: domain
            path: ./local/rule/apple.yaml
            interval: 86400

        google:
            type: file
            behavior: domain
            path: ./local/rule/google.yaml
            interval: 86400

        proxy:
            type: file
            behavior: domain
            path: ./local/rule/proxy.yaml
            interval: 86400

        direct:
            type: file
            behavior: domain
            path: ./local/rule/direct.yaml
            interval: 86400

        private:
            type: file
            behavior: domain
            path: ./local/rule/private.yaml
            interval: 86400

        gfw:
            type: file
            behavior: domain
            path: ./local/rule/gfw.yaml
            interval: 86400

        tld-not-cn:
            type: file
            behavior: domain
            path: ./local/rule/tld-not-cn.yaml
            interval: 86400

        telegramcidr:
            type: file
            behavior: ipcidr
            path: ./local/rule/telegramcidr.yaml
            interval: 86400

        cncidr:
            type: file
            behavior: ipcidr
            path: ./local/rule/cncidr.yaml
            interval: 86400

        lancidr:
            type: file
            behavior: ipcidr
            path: ./local/rule/lancidr.yaml
            interval: 86400

        applications:
            type: file
            behavior: classical
            path: ./local/rule/applications.yaml
            interval: 86400

    
    rules:
        - RULE-SET,applications,DIRECT
        - DOMAIN,clash.razord.top,DIRECT
        - DOMAIN,yacd.haishan.me,DIRECT
        - RULE-SET,private,DIRECT
        - RULE-SET,reject,REJECT
        - RULE-SET,icloud,DIRECT
        - RULE-SET,apple,DIRECT
        - RULE-SET,google,REPLACE
        - RULE-SET,proxy,REPLACE
        - RULE-SET,direct,DIRECT
        # - RULE-SET,lancidr,DIRECT
        - RULE-SET,cncidr,DIRECT
        - RULE-SET,telegramcidr,REPLACE
        - GEOIP,LAN,DIRECT
        - GEOIP,CN,DIRECT
        - MATCH,REPLACE

随后我们将混合配置的开关给打开就会发现我们下面多了一个提供的选项窗口,点击进入发现类似于这样就成功了。

rule providers

如何自定义#

文件是配置好了,如果再次遇到规则配置错网站那该怎么办呢?

首先我们打开clash的日志页,将日志的信息呈现调成「详细」和「信息」。

再次打开我们需要调整的网站,我们会在日志里面看到该请求所使用的规则组,使用的代理还有状态。

如何看懂日志

比如,我们一个 www.systemannounce.com 的请求错误使用了代理组proxy,而我们想让它直连,那我们首先来到clash刚刚新多出来的提供选项窗口,找到proxy代理组,点击右边的edit file,找到 systemannounce.com 类似的请求,然后删除,再把域名加到direct代理组里即可。

clash更改代理组1

clash更改代理组2

需要说明的是,这前面的 +. 的意思是匹配当前域名下的所有小一级域名。比如 +.example.com ,表示匹配任何以example.com结尾的域名,包括 ww1.example.commail.example.com 等等。但是不匹配 aexample.comww1.aexample.com 等域名。

结语#

到目前为止,你已经掌握了自定义规则组的能力,虽然本文还有很多没说到的内容,但是相信凭借你的聪明才知一定可以攻破难关。

比如相信你已经发现了:

rules

这里的意思是,将applications,private,icloud等规则组文件内的域名全部直连,将Google和proxy文件内的域名全部代理,走🚀 节点选择这个规则组下的节点。

好了让我们下次再见。

使用clash的mixin功能进行自定义规则
https://blog.systemannounce.com/posts/other/clash-mixin1/
Author
Felix_SANA
Published at
2025-08-07