全球主机交流论坛

标题: 软路由很多人推崇的MosDNS+Clash模式到底有没有用 [打印本页]

作者: 在7楼    时间: 2023-6-30 01:53
标题: 软路由很多人推崇的MosDNS+Clash模式到底有没有用

最近我在旁路由上部署了一个Open Clash,TUN + Fake IP模式,可以正常深造,也没有DNS污染问题(Clash本身的fall back机制就可以解决污染问题),但是有DNS泄露的情况。


查了些资料,发现很多人都会在Clash前面,加一个MosDNS(或者还会在前面再加一个ADG Home),让MosDNS来分流DNS。

主要学习了下恩山shiift老哥的这一篇:https://www.right.com.cn/forum/thread-8284982-1-1.html




因为MosDNS在Clash前面,DNS先进到MosDNS里,然后根据规则,判断是否是国内域名,会有以下3种情况
- 国内域名,会向国内DNS服务器请求拿IP;
- 国外域名,会将DNS发给Clash,Clash会返回Fake IP;
- 未知,会同时向国内和国外DNS服务器发送请求,拿IP


IP(国内真IP或Fake IP)返回给客户端后,客户端发起TCP/IP链接,再次被Clash拦截到,此时有2种情况:
- 1.IP是之前的Fake IP,那么Clash能在自己的Fake IP映射表里拿到原始域名,此时会根据域名去匹配路由规则,
      - 1.1.如果符合国外规则,就将请求包装好,直接扔给代理服务器,由远端DNS;
      - 1.2.如果符合国内规则,发起DNS,拿到真实IP,Clash直连
      - 1.3.如果域名没匹配到,会尝试使用IP路由,此时Clash会发起DNS拿IP
- 2.IP是国内真实IP,那么Clash在自己Fake IP映射表里找不到,会被当成针对IP的请求,只会使用IP规则去路由,且不会发生DNS



但,这种模式真的有用吗?或者说它真的是一种好的方案吗?



就目前我个人的疑问如下:

1. 针对国内站点的请求在Clash里全部变成只能根据IP规则路由了

原因是,在DNS时,MosDNS返回了国内真实IP,所以Clash截获TCP/IP链接时,用这个真实IP去自己的Fake IP映射表内,查不到原始域名,所以会判断为是对IP发起的请求,且此时只能根据IP去匹配路由规则。
但对代理来说使用域名规则路由是首选,IP是其次。

有使用这种模式的老哥可以帮忙验证下,是不是Clash日志里,所有国内站点,都不会显示域名了,而是显示IP。

2. 发生了2次Fake IP

如 https://www.right.com.cn/forum/thread-8284982-1-1.html 这里,第12步的地方,是将Clash的NameServer设置为了127.0.0.1,假设请求的是国外站点A,会发生如下流程:

- 客户端发起DNS,来到MosDNS
- MosDNS判断为国外域名,转到Clash
- Clash返回Fake IP,并记录到自己的映射表
- 客户端用Fake IP发起请求
- 请求被Clash截获,Clash从映射表拿到原始域名
- 使用原始域名匹配路由规则,如果没有匹配到,会尝试使用IP规则分流
- Clash发起DNS拿IP,此时会同时从nameserver组和fallback组内的DNS服务器发起请求
- NameServer的127.0.0.1是自身,DNS又轮回了一遍,重新进到MosDNS,然后判断国外域名又被分流到Clash,Clash再次返回Fake IP
- 因为是Fake IP,所以Clash会抛弃,去使用fallback的结果

最终虽然通过fallback成功拿到真实IP,但是也多了一次DNS查询,这个查询兜了一圈,回到Clash并再次触发了Fake IP。

其实127.0.0.1也还算好的,如果不小心在NameServer组配置了国内的DNS服务器,那就是发生DNS泄露了。




综上,这种模式确实在正常情况下,可以避免DNS泄露,也能正常工作,但是又感觉有很多地方不是很规范。



另外,是不是可以把MosDNS作为Clash的上游,会更好一点,这样的话:

客户端发起DNS,进入到Clash,返回Fake IP,并记录到自己的映射表。

客户端发起请求,Clash拦截到,拿到原始域名,此时进行规则分流,2种情况:
- 1.域名规则可以命中,再分2种情况
      - 1.1.国外,不用DNS,直接扔给代理服务器,DNS由远端代理服务器做
      - 1.2.国内,发起DNS,上游MosDNS接管,拿到IP,Clash直连
- 2.域名规则没中,尝试使用IP规则匹配,发起DNS,上游MosDNS接管,拿到真实IP
      - 2.1.如果是国内IP,Clash就直连;
      - 2.2.如果国外IP,Clash直接扔远端代理服务器

而且大部分情况都是1.1和1.2,根据域名规则能匹配到分流,1.1不用DNS,1.2能充分利用到MosDNS



不知道上面的想法对不,又或者说,根本不需要关心DNS泄露问题?
作者: 主机淘    时间: 2023-6-30 01:55
没折腾过 不清楚
作者: cnlhx    时间: 2023-6-30 02:02
我用ros分流,国内对接mosdns+adghome,国外直接分流到openclash+第二个adghome
作者: DogeLee2    时间: 2023-6-30 02:13
我自建就一两个节点,没必要用clash
作者: wuxudd    时间: 2023-6-30 06:01
规则正确的话,fake IP不会有DNS泄漏


作者: 天蝎戴维哥    时间: 2023-6-30 06:33
https://www.right.com.cn/forum/thread-8293938-1-1.html  目前用这个绕过大陆模式,没啥问题
作者: 伴之则安    时间: 2023-6-30 06:54
有点技术难度






1c512m20g 3T $10.99/year
1c512m10g 1.5T $10.18/year
1c840m10g 1T $10.78/year
DMIT.IO
WISE瓦工2c1g20g 1T $49.9/year
作者: hostvps    时间: 2023-6-30 07:12
怕dns泄露就应该全局
作者: mizon    时间: 2023-6-30 08:47
世界本无事,庸人自扰之
作者: Residual    时间: 2023-6-30 08:49
建议用这个
https://songchenwen.com/tproxy-split-by-dns
主路由直接套用就行了, 目前我用的感觉还行
作者: xuh    时间: 2023-6-30 09:31
不懂,我只知道fake ip连不上苹果的wifi calling
作者: 在7楼    时间: 2023-6-30 10:42
Residual 发表于 2023-6-30 08:49
建议用这个
https://songchenwen.com/tproxy-split-by-dns
主路由直接套用就行了, 目前我用的感觉还行 ...

感谢分享,这个方案好很多了,多了一步“经过 DNS 分流以后,我们只需要一条 iptables 规则,把所有目的地址是 Fake IP 的流量都转发到 Clash 核心,所有其他流量都不经转发正常通行。”,这样确实可以解决上面提到的2个问题
作者: qianxu    时间: 2023-6-30 11:38
少看 有图比r 的视频,dns 泄露有个屁影响,就是没事瞎折腾
作者: qianxu    时间: 2023-6-30 11:53
我说你为什么要提爱奇艺,原来是 y0tuber 被转换了,我现在要提一个名字是三个字的 y0utuber,叫不啥林的来着
作者: amao000765    时间: 2023-6-30 12:53
ros+openwrt passwall +adguardhome+mosdns 进行dns分流,不是单纯的旁路由,虽然我完全不会配,但是不影响爽歪歪。
作者: damoo    时间: 2023-6-30 13:02
openwrt passwall开启远程DNS模式就行了,
为什么要搞这么复杂呢?
作者: 王者    时间: 2023-6-30 13:05
要用fake ip 最好是多一层主路由,而不是所有流量都经过代理网关,只需要将分流后的主要代理流量路由到代理网关出去几天了
作者: 0.0    时间: 2023-6-30 23:28
有点复杂,收藏学习下
作者: justfkqq    时间: 2023-6-30 23:30
Passwall2配置好了可以解决这些问题
作者: abc.xyz    时间: 2023-6-30 23:34
据说这东西以后会很叼:
https://github.com/daeuniverse/dae
作者: Pliex    时间: 2023-7-1 00:27
有用吗 现在纯fake ip模式国内站有些图片都加载不出来
作者: 法拉利    时间: 2023-7-1 01:16
这套完善起来是挺方便的,不过个人一两个节点倒不用搞这么复杂,直接v2用用好了
作者: 在7楼    时间: 2023-7-1 01:24
abc.xyz 发表于 2023-6-30 23:34
据说这东西以后会很叼:
https://github.com/daeuniverse/dae

学不动了学不动了
作者: clcavril    时间: 2023-7-1 03:33
不知道 因为不用clash 我用passwall +mosdns+adg home;adg home直接接管53端口,负责整个dns入口负责去广告+存储解析日志,adg home不缓存解析结果,上游设置为mosdns,分流以及缓存交给mosdns,passwall全部指向53端口。总结就是adghome去广告存储日志,mosdns分流+缓存dns,passwall啥也不干,目前配合得挺好
作者: 在7楼    时间: 2023-7-1 09:21
qianxu 发表于 2023-6-30 11:53
我说你为什么要提爱奇艺,原来是 y0tuber 被转换了,我现在要提一个名字是三个字的 y0utuber,叫不啥林的来 ...

不良林,他是有几期讲DNS,原理倒是讲的还行,就是最后给出来的方案有点鸡肋,他是直接把所有根据ip路由的规则后面都加上no-resolve,相当于让域名都不会尝试根据ip去尝试路由了。。。
作者: KirbyKFC    时间: 2023-7-1 17:38
fakeip方案下,真实IP的连接用IP分流足够了,甚至都不需要分流,拿真实IP就是为了直连绕过clash用的。
如果需要让一些国内域名能经过clash分流,应该让mosdns把这些域名交给clash返回fakeip,而不是直接解析返回真实ip
作者: 在7楼    时间: 2023-7-1 19:25
KirbyKFC 发表于 2023-7-1 17:38
fakeip方案下,真实IP的连接用IP分流足够了,甚至都不需要分流,拿真实IP就是为了直连绕过clash用的。
如果 ...

是的呀,就是这个问题。现在原方案就是,DNS拿到国内真实IP了,但是最终还是会进Clash,走一遍根据IP规则路由。

评论区有朋友在DNS分流之后,也在Clash之前就对TCP流量进行分流,不是FakeIP的国内的流量就不进Clash了,这种方案我觉得是有意义的。

如果只分DNS,感觉意义不大,还弄的复杂。
作者: diocat    时间: 2023-7-1 19:57
起个bgp收全表,mosdns分开解析国内外域名,域名表直接拿v2ray-geosite,直接自动路由都不用操心
作者: DogeLee2    时间: 2023-7-2 01:11
别折腾了
我刚刚半夜干路由器
顺带脑子抽风了
把光猫也干了
现在家里彻底断网了
凉透了
作者: 234    时间: 2023-7-2 08:22
这个方案可行的




欢迎光临 全球主机交流论坛 (https://ddzzz.eu.org/) Powered by Discuz! X3.4