在154号文章中讲到, 利用混合配置 Mixin 将 Clash For Windows 和 AdGuard Home 组合起来使用, 但是 mixin 使用的 Yaml 是静态的, MATCH后面跟的是组名, 每个订阅的组名又不一样, 这就是说, 每次切换节点我还得改, 十分蛋疼.
于是我在这里找到了解决方法, 从 Yaml 切换成 Javascript. 博主的代码中好像有些错误, 因为它在我这运行报错... 规则也会反过来, MATCH跑到第一位去了... 我也都将其改正了.
注意 'GEOIP,CN,DIRECT', 'IP-CIDR,255.255.255.255/32,REJECT,no-resolve', 这两句的顺序不能写反了, 我测试发现写反了会导致 AdGuard Home 屏蔽掉的域名又特么被拉进代理解析了...
我的需求: DNS 走我的 AdGuard Home, 局域网流量直连, 解析出来的 CN IP 直连, 其余一律走代理, 无流媒体需求.
自己按需修改规则即可. 注意, 如果用 tun 不要使用 fakeip dns 模式, 不然你外部自建的 dns 就废了.
module.exports.parse = ({ content, name, url }, { yaml, axios, notify }) => {
// 通用设置
content['mixed-port'] = 1081;
content['allow-lan'] = true;
content['ipv6'] = false;
content['bind-address'] = '*';
content['mode'] = 'rule';
content['log-level'] = 'error';
content['unified-delay'] = true;
//DNS
content.dns = {
'enable': true,
//'listen' : '127.0.0.1:5335',
'nameserver': [
'192.168.10.1:5335'
],
'default-nameserver': [
'192.168.10.1:5335'
]
};
// 自定义 DIRECT / REJECT 条目
//先清空 rules 以达到覆盖的效果
content['rules'] = [];
[
'IP-CIDR,192.168.0.0/16,DIRECT,no-resolve',
'IP-CIDR,10.0.0.0/8,DIRECT,no-resolve',
'IP-CIDR,172.16.0.0/12,DIRECT,no-resolve',
'IP-CIDR,127.0.0.0/8,DIRECT,no-resolve',
'IP-CIDR,100.64.0.0/10,DIRECT,no-resolve',
'IP-CIDR6,::1/128,DIRECT,no-resolve',
'IP-CIDR6,fc00::/7,DIRECT,no-resolve',
'IP-CIDR6,fe80::/10,DIRECT,no-resolve',
'IP-CIDR6,fd00::/8,DIRECT,no-resolve',
'GEOIP,CN,DIRECT',
'IP-CIDR,255.255.255.255/32,REJECT,no-resolve',
].forEach(rule => {
content.rules.push(rule);
});
// 自定义走梯子的条目, 无需写尾部的后缀, 末尾带上逗号
const customProxy = [
'MATCH,',
];
// 需要对每个 Plan 配置相应的 GroupName
var proxyGroupName = '';
if (name == '订阅名1.yaml') {
proxyGroupName = 'proxy';
} else if (name == '订阅名2') {
proxyGroupName = '🚀 节点选择';
} else if (name == '订阅名3') {
proxyGroupName = '🔰国外流量';
}
// 还可以继续添加
customProxy.forEach(rule => {
content.rules.push(rule + proxyGroupName);
});
// Debug
// axios.get('http://localhost:4016/openFile?path=' + yaml.stringify(content));
return content;
}
更新: 其实 yaml 也行, 只不过它那个空格太厦碧, 我从网上东拼西凑总是报错, 下面是测试能用的. 成功的标志是, 常规 - Clash 核心( API 端口) 右边有个小芯片图标, 点开有你修改的 mixin 的内容, 而且主界面左侧会多出来一个 "服务商". 博客复制出来的代码可能还会有缩进问题, 请仔细检查, 妈的真的服了 yaml 了...
mixin:
mixed-port: 1081
allow-lan: true
bind-address: '*'
mode: rule
log-level: error
ipv6: false
dns:
enable: true
#listen: 127.0.0.1:5335
nameserver:
- 192.168.10.1:5335
default-nameserver:
- 192.168.10.1:5335
proxy-providers:
机场1:
type: http
url: "填节点订阅网址, 如果是v2board的机场面板, 记得加上 &flag=clash"
path: 机场1.yaml
interval: 21600
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
机场2:
type: http
url: "https://v2board的面板订阅/api/v1/client/subscribe?token=123&flag=clash"
path: 机场2.yaml
interval: 21600
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
机场3:
type: http
url: "https://sspanel的面板订阅/link/123?clash=1"
path: 机场3.yaml
interval: 21600
health-check:
enable: true
url: http://www.gstatic.com/generate_204
interval: 300
proxy-groups:
- name: Proxy
type: select
proxies:
- cnix #这里填机场提供的订阅里面, 含有一堆节点的那个组名(proxy-groups底下的name, 一般在type: select的前面, 我这里是随便举例写了个cnix)
- 代理流量
- amy
- name: cnix #和上面对应
type: select
use:
- 机场1
- name: 代理流量
type: select
use:
- 机场2
- name: amy
type: select
use:
- 机场3
rules:
#- 'PROCESS-NAME,clash,REJECT' #安卓上防止回环, win上没见出问题
- 'GEOIP,PRIVATE,DIRECT'
- 'GEOIP,CN,DIRECT'
- 'IP-CIDR,255.255.255.255/32,REJECT,no-resolve'
- 'MATCH,Proxy'
0 条评论:
发表评论