由于clash mini出现的各种小问题, 最终还是转向了clash for windows. 这屎山electron应用... 不过看日志确实方便, 方便我找出那些广告和收集隐私的域名.
前面折腾了一个勉强能用的便携版, 也算不错.
但是我本地有个adguard home, 就搭在路由器上, 也是我内网中唯一的dns. 上游dns是国内的ip doh, 目前没有劫持和污染.
机场规则乱七八糟, 这一看就是从网上订阅规则合并的:
- 'DOMAIN,dl.google.com,全球直连'
- 'DOMAIN,dl.l.google.com,全球直连'
- 'DOMAIN,update.googleapis.com,全球直连'
- 'DOMAIN,fonts.googleapis.com,全球直连'
- 'DOMAIN,fonts.gstatic.com,全球直连'
瞎写是吧? 照这么用, 特么十次里面得有八次字体是方块. 于是我就这么写mixin:
mixin:
dns:
enable: true
listen: 127.0.0.1:5335
nameserver:
- 192.168.10.1:5335
rules:
- 'DOMAIN-SUFFIX,local,DIRECT'
- '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'
- 'MATCH,🐟 漏网之鱼':
mixin的功能就是覆盖机场的配置, 在这段代码中, 覆盖了机场的dns和rule两个节点. 我指定dns服务器为我自己内网路由器的5335端口. 写了一些本地局域网直连(DIRECT)的规则. 比较重要的是最后两行, cn分流直连, 剩余的交给漏网之鱼select选择器.
结果他妈的cfw在adguardhome响应了NXDOMAIN(域名不存在)后, 自己跑去连上代理给我了解析域名, 代理可不管你本地拦不拦截, 全部都会解析. 妈的那我还去个锤子广告?
于是乎, 把目前上网的工具试了一圈, 没一个好使的, v2rayN一样会把拦截域名拉到代理里解析掉; v2rayA是网页GUI, 做得不错, 但也会拉到代理里; clashy根本没有mixin; HMBSbige / ShadowsocksR-Windows 是.net写的, 占用内存150M+, 不想用, 而且也会拉入代理; netchx那个还行, 但是加上千个cnip路由, cpu直接起飞; 其它的工具都已经很久没有维护了, 要么就得用2019年就停更的 shadowsocksrr / shadowsocksr-android.
这几年的工具都有一个机制, 它会认为我这些 servfail/nxdomain/refused/空noerror 等等的响应全都是污染, 于是作为后备方案, 工具就会尝试通过代理解析域名...
后来经高人指点, 得到了一个简单有效又另类的方法, 效果和nxdomain响应差不多.
在 adguard home - 设置 - DNS设置 - DNS 服务配置 - 拦截模式 这里, 设置成 自定义IP. 在IPv4这一栏填成: 255.255.255.255, 如图: (截图是255.0, 但是实际测试发现255更好, 图片懒得重新截了...)
回到cfw, 在mixin里match的上方加一行规则, 如图: (同上, 懒得重新截图了)
- 'IP-CIDR,255.255.255.255/32,REJECT,no-resolve'
最后面match跟的是Select选择器, 每个机场可能都不一样, 自己改一下就好. 重启cfw之后, 来看看dns解析情况(刚才为了截图, 解析了域名, 浏览器有缓存, 所以下面我换了个测试域名):
adguard home里面拦截的域名终于被mixin的规则干死了. REJECT, 哈哈!
浏览器访问被adguard home拦截的域名时, 会立即报这些错:
ERR_CONNECTION_RESET
ERR_CONNECTION_CLOSED
HTTP ERROR 502
找了找, 网上目前没有clash for windows和adguard home之间存在问题的文章, 所以发出来帮助大家. 感谢大佬, 开心😄
20221003更新: 实际测试选用255.255.255.255更好, 懒得截图了..
adguard home 返回IP改为:
255.255.255.255
mixin:
- 'IP-CIDR,255.255.255.255/32,REJECT,no-resolve'
mixin这破东西, 一定要注意对齐啊...