本帖最后由 super131 于 2024-3-19 20:31 编辑
通知:该贴不再更新!
烦请移步此处:【2024-3-19】OpenClas.h,史上最全面教程(没有之一),让套娃都见鬼去吧!
https://www.right.com.cn/forum/thread-8353048-1-1.html
论坛很多关于DNS泄露,污染等教程都是教你如何去套娃,套各种插件:其实真没这个必要
一、小猫咪自己就能解决这个问题:
1、首先我们内核要用Meta,不要用Dev内核,其次模式要用Fake IP模式,其他设置保持默认,
勾选覆写设置的自定义上游DNS,NameServer,FallBack跟Default-NameServer清空自带所有DNS,
NameServer只需要填上一个或者两个运营商分配的DNS即可,这样才能获得更好的CDN优化,就不要填第三方的了。
运营商的DNS都不稳定?说明你的网也快断了
2、普通用户一般用的订阅方式,订阅后会生成一个.yaml的配置文件,我们要去修改这个配置文件:
把rules下的一些规则都清空,复制粘贴以下配置:
rules:
- GEOSITE,category-ads-all,REJECT
- GEOSITE,private,DIRECT
- GEOSITE,cn,DIRECT
- GEOSITE,geolocation-!cn,PROXY
- MATCH,PROXY
3、相信看过不良林视频的都知道,DNS泄露是因为我们使用了基于IP分流的规则而导致,比如说很多人的策略里都有一条- GEOIP,CN,DIRECT,
就是基于ip进行策略匹配,但是大家都知道,我们请求的都是域名,假设我们要访问谷歌的域名请求发给了小猫咪,Fake IP返回一个假IP,小猫咪会构建一条查询谷歌域名进行rules匹配规则
到了- GEOIP,CN,DIRECT这一条,由于要匹配IP,就必然要发起DNS请求去解析谷歌的域名,那么NameServer配的是什么DNS?是国内的对吧,所以产生了泄露,于是大家喜欢在后面加上no-resolve
意思就是不要反解析 IP 为域名,所以这条规则就只有那些直接发起IP直连请求的能匹配,我们域名肯定是无法匹配。其实说白了这条规则就跟去掉没两样
4、所以我们只需要用GEOSITE作为匹配规则,因为GEOSITE都是域名匹配。
- GEOSITE,category-ads-all,REJECT 去广告,匹配上的丢弃
- GEOSITE,private,DIRECT 内网地址,匹配上走直连
- GEOSITE,cn,DIRECT 国内域名,匹配上走直连,使用NameServer的运营商DNS解析真实IP
- GEOSITE,geolocation-!cn,PROXY 国外域名,匹配上走代理
- MATCH,PROXY 兜底的策略,如果上面4条规则都没匹配上就走代理
5、Fake IP发起访问国外网址都会交给节点去处理,自然不会发起本地DNS请求,所以不存在泄露,DNS污染也不存在。
唯一有个问题,那就是小众国内网站也会走代理出去,要自己手动添加到规则中去,但是这个我觉得可以忽略。
所以其实我们要做的是完善自己的分流策略,不是套娃!
二、如果你已经理解了上面的内容,那么我们就可以进行一个进阶设置,提高效率和规避一些小问题:1、首先我们需要开启一些功能,Fake-IP 持久化,实验性:绕过中国大路 IP,启用流量(域名)探测,探测(嗅探)纯 IP 连接,自定义流量探测(嗅探)设置把这几个功能开启,实验性:绕过中国大路 IP处的域名DNS解析填一个运营商DNS即可。
rules:
- GEOSITE,geolocation-!cn,PROXY
- GEOSITE,cn,DIRECT
- GEOSITE,private,DIRECT
- MATCH,PROXY
3、由于开启实验性:绕过中国大路 IP这个功能会导致Dnsmasq 加载时间过长,所以需要点时间绕过大路才会开始生效, 可以从小猫咪日志看到显示:提示:检测到 Dnsmasq 正常工作,还原防火墙 DNS 劫持规则...,此时绕过大路就正常生效了。 如果没生效前,如果没有加 - GEOSITE,cn,DIRECT这条规则匹配,在绕过大路功能恢复前,你的所有流量就都走代理了
那么实验性:绕过中国大路 IP的工作机制是什么
所以,在我们访问百度域名请求的时候,会先查询域名是否在dnsmasq的这份国内域名表内,如果匹配上就会使用上面我们填写的运营商DNS进行解析成真实的IP,接着IP会进行匹配,匹配上被iptables放行,
因此就不会转发到小猫咪的内核。提高国内网站的访问效率,比如一些设备较弱设备,就可以很好避免了国内速度跑不满的情况。
但是会不会出现一种情况:
打个比方,我们要访问abcccc.com,国内域名匹配上了,但是解析出来的IP没匹配上,概率好像有点小,但也不是不可能(我猜的) 那么此时会把IP,注意是现在把IP交给了小猫咪内核处理,因为前面已经用国内DNS进行了解析成IP,接下来就是查询rules规则进行匹配, 第一条肯定无法匹配了,那么第二条呢,其实上面都无法匹配,最后交给了兜底的MATCH, 扔给了节点处理,最后肯定没法访问。所以此时我们就需要用到Meta内核的流量(域名)探测功能,会在IP交给小猫咪内核的时候,探测HTTP请求里的域名, 简单来说就是把IP变成域名了。那么拿到abcccc.com这个域名后,如果在匹配- GEOSITE,cn,DIRECT,这条规则 刚好里面有这个域名呢,匹配上了,接着就是由NameServer的运营商DNS解析真实IP 紧接着你可能还会想到,那就是在绕过大路域名的规则,匹配上的就不经过内核,没匹配上的转发给内核, 这时我们就可以用 - GEOSITE,cn,DIRECT进行第二次匹配,尽可能完善国内的访问规则,因为规则肯定不是百分百全的。 从上面的配置我们可以发现,访问谷歌域名会先经过dnsmasq国内域名匹配,不匹配的交给小猫咪内核进行rules的规则匹配, 至于为什么不加去广告匹配,因为你开了绕过大路,一些国内网站压根不转发到内核,自然规则匹配不上,所以去广告等于损耗了一半,只能去国外的了。 其实我觉得去广告效果很鸡肋,不如浏览器插件,因此不要也罢,所以真没必要为了去广告而套娃。 把- GEOSITE,geolocation-!cn,PROXY放在第一条是为了减少国外域名的匹配时间,提高效率,因为国内域名前面已经有人处理了,如果都没匹配上就兜底走代理出去。
所以其实小众国内域名的问题还是存在,
但至少比黑名单的方式好吧。
三、我在上面有提到关于基于IP分流规则,也就是 - GEOSITE,cn,DIRECT,要加上no-resolve,所以我们理解这个内容后,可以再完善自己的分流规则: rules: - DOMAIN-SUFFIX,xn--ngstr-lra8j.com,DIRECT
- GEOSITE,category-ads-all,REJECT
- GEOIP,private,DIRECT,no-resolve
- GEOSITE,private,DIRECT - GEOSITE,cn,DIRECT
- GEOIP,cn,DIRECT,no-resolve - MATCH,PROXY
注释: - DOMAIN-SUFFIX,xn--ngstr-lra8j.com,DIRECT 解决谷歌商店无法下载问题
- GEOSITE,category-ads-all,REJECT 去广告,匹配上的丢弃
- GEOIP,private,DIRECT,no-resolve 内网IP,匹配上走直连,不发起DNS请求
- GEOSITE,private,DIRECT 内网地址,匹配上的走直连 - GEOSITE,cn,DIRECT 国内域名,匹配上的走直连
- GEOIP,cn,DIRECT,no-resolve 国内基于IP的地址,匹配上走直连,不发起DNS请求
- MATCH,PROXY 兜底,都没匹配上就走代理
1、 - GEOSITE,category-ads-all,REJECT 对于开了绕过大路IP功能,由于要先绕过大路IP地址,被绕过的国内域名将不起作用 2、 - GEOIP,CN,DIRECT,no-resolve,在加了no-resolve,只会匹配IP直连的请求,这是为了防止一些APP,比如哔哩哔哩APP, 部分流量是发起的IP直连,但是我们规则都是基于域名匹配,
那么规则匹配不上会丢给兜底策略,扔给了节点处理,这肯定不是我们想看到的情况,因此
可能会造成你播放视频卡顿等现象。所以我们需要添加GEOIP的规则进行规避,但是必须要加上no-resolve,不要反解析IP为域名。
你怎么知道的?
我猜的
四、闲聊一下:
1、关于Fake-IP模式下,实验性:绕过中国大路 IP功能要不要开启,查看我们上面提到关于实验性:绕过中国大路 IP的工作机制,可以了解到对于一些设备性能较弱的设备是有帮助的,体现在国内的网速。
因此,开不开要取决于你设备的性能,或者你能接受带宽的损耗,又或者你的带宽小于设备性能的极限。
2、如果你不需要实验性:绕过中国大路 IP功能,比如说我带宽不高或者我设备性能很强,以及用不到一些依赖Dnsmasq的功能,我们可以把本地 DNS 劫持改成防火墙转发。
听别人说少走一个dnsmasq,延迟会低一点点。其次是能设置局域网黑白名单,比如设置我自己电脑,手机的MAC地址走小猫咪,其他设备不走小猫咪。这样就算设备性能弱,其他不走小猫咪的设备也能跑满带宽。
3、需要走代理的规则匹配不要完全照搬我的, 比如说 - MATCH,PROXY 的 PROXY ,这个要改成你自己的节点组名称,比如你节点组叫:小可爱,那么你就改成- MATCH,小可爱
最终该怎么用,想怎么用,你来决定!
五、懒人专用,只更新节点,保留配置文件中的rules规则:
1、像一般订阅后的配置文件里面都是自带有一些rules匹配规则在里面,以及其他一些杂七杂八的用不上的。
所以我们一般都会自己增加和修改一些适合自己的规则,就比如说我们配置上面提到的解决DNS泄露和污染的规则。
这时候就有个很头疼的问题了,点击更新订阅时候把自己辛苦配置规则都给覆盖了,那不是又得填一遍。那我们该如何避免这种情况发生呢?
可以试试下面的配置:
根据下面的注释修改,然后先把自己配置文件里面所有内容清空,复制以下内容粘贴到配置文件中去保存应用即可:
proxy-providers:
*****:
type: http
path: "./proxy_provider/*****.yaml"
url: *****
interval: 86400
filter: '*****'
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 86400
proxy-groups:
- name: PROXY
type: url-test
url: https://www.gstatic.com/generate_204
interval: 86400
use:
- *****
rules:
- DOMAIN-SUFFIX,xn--ngstr-lra8j.com,DIRECT
- GEOSITE,category-ads-all,REJECT
- GEOIP,private,DIRECT,no-resolve
- GEOSITE,private,DIRECT
- GEOSITE,cn,DIRECT
- GEOIP,cn,DIRECT,no-resolve
- MATCH,PROXY
注释:
proxy-providers:
*****: 1、代理集名称
type: http
path: "./proxy_provider/*****.yaml" 2、配置文件名称
url: ***** 3、订阅链接地址
interval: 86400 4、更新订阅时间间隔,单位:秒
filter: '*****' 5、关键词匹配,用于筛选指定的节点
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 86400 6、节点测试间隔,单位:秒
proxy-groups:
- name: PROXY 7、策略组名称
type: url-test
url: https://www.gstatic.com/generate_204
interval: 86400 8、节点测试间隔,单位:秒
use:
- ***** 9、填写对应的代理集名称
2、filter: '*****' 这条规则不需要的可以删掉
3、节点会根据你设置的间隔时间进行自动更新,又或者想自己手动更新,可以进入小猫咪的控制面板进行点击更新即可,非常的方便。
完结,撒花!
通知:该贴不再更新!
烦请移步此处:【2024-3-19】OpenClas.h,史上最全面教程(没有之一),让套娃都见鬼去吧!
https://www.right.com.cn/forum/thread-8353048-1-1.html
|