找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 15860|回复: 38

关于论坛里很多人推崇的MosDNS+Clash模式到底有没有用

[复制链接]
本帖最后由 在7楼 于 2023-7-5 21:39 编辑

最近我在旁路由上部署了一个Open Clash,TUN + Fake IP模式,可以正常深造,也没有DNS污染问题(Clash本身的fall back机制就可以解决污染问题),但发现论坛里很多人都会在Clash前面,加一个MosDNS(或者还会在前面再加一个ADG Home),让MosDNS来分流DNS。

论坛里主要学习了下shiift老哥的这一篇:【2023-5-1】OPenWRT 旁路由+MosDNS+OpenClash+AdGuard Home 傻瓜配置图文教程-软路由,x86系统,openwrt(x86),Router OS 等-恩山无线论坛 - Powered by Discuz! (right.com.cn)





因为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

【2023-5-1】OPenWRT 旁路由+MosDNS+OpenClash+AdGuard Home 傻瓜配置图文教程-软路由,x86系统,openwrt(x86),Router OS 等-恩山无线论坛 - Powered by Discuz! (right.com.cn) 这里,第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的性能优化功能



不知道我上面的想法对不,欢迎大佬们来纠正~




----------更新
提了下帖子阅读权限
单选投票, 共有 119 人参与投票 查看投票参与人

投票已经结束

24.37% (29)
15.13% (18)
10.08% (12)
50.42% (60)
您所在的用户组没有投票权限
我的恩山、我的无线 The best wifi forum is right here.
看不懂,但希望楼主研究成功后出个教程
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

我现在用的就是你想的这种方案,Fake IP增强模式,mos运行在clash上游,已经稳定运行了21天了,小主机性能过剩,我还多虚拟了两个op,都运行smartdns,作为mos的上游,mos不缓存,由上游一个负责国内,一个负责魔法,将套娃进行到底

点评

你这个厉害,  详情 回复 发表于 2023-7-13 07:21
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

rb33022 发表于 2023-6-30 16:36
我现在用的就是你想的这种方案,Fake IP增强模式,mos运行在clash上游,已经稳定运行了21天了,小主机性能 ...

大受震撼
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

目前DNS流向是
客户端-----ADH---DNSMASQ--CLASH--MOSDNS, CLASH NAMESERVER和FALLBACK都填127.0.0.1 5335指向MOSDNS, 上IPLEAK测试没有国内DNS

点评

赞,跟我想法一样  发表于 2023-7-2 18:50
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

openclash的fakeip一直没设好,所以没有发言权。
Mosdns的dns解析是有规则的,其使用的数据库应该是geosite, 所以解析的结果应该是相对准确的。另外,自定义规则列表里面的白名单可以自主添加,以本地Dns解析,防止解析到境外的ip。
opeclash只利用mosdns的解析结果来分流。
因此我把openclash所有的dns功能全部去掉了:停用dns劫持,不设置上游dns,包括yaml里面的dns代码也删掉
这时候,openclash域名分流的功能用不用得上就不知道了,但是结果还是令人满意的。
唯一的缺点是,ipv6地址无法屏蔽。所以,我已经改用smartdns+openclash了。
希望对楼主有帮助。

点评

感谢分享,把MostDNS放Clash前面,是能对DNS进行分流,但是分了之后,不管国内国外,最后还是都进Clash,然后Clash再自己分一次,有点多余。smartdns也是,只要是放在Clash前面了,也是一样的。除非是DNS分完,在Cal  详情 回复 发表于 2023-7-2 19:06
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
kdkhz 发表于 2023-7-2 16:19
openclash的fakeip一直没设好,所以没有发言权。
Mosdns的dns解析是有规则的,其使用的数据库应该是geosite ...

感谢分享,把MostDNS放Clash前面,是能对DNS进行分流,但是分了之后,不管国内国外,最后还是都进Clash,然后Clash再自己分一次,有点多余。smartdns也是,只要是放在Clash前面了,也是一样的。除非是DNS分完,在Calsh前面也把流量给分流了,国内不要进内核,这样意义比较大。

但这样又跟Clash本身的分流功能冗余了,弄复杂了,还不如直接都交给Clash的分流算了。

换种思路,把MosDNS放Clash上游,大部分国外流量,Clash根据域名就能路由,不需要DNS;只有极少数的小众站点的国外流量,和所有国内流量,会向上游MosDNS请求解析,这种情况刚好可以利用到MosDNS的缓存、择优等功能,没准能提升那么一丢丢性能,这样更合理一点。

点评

楼主对域名解析和分流概念理解可能有点混淆。 请求来到openclash后,openclash第一步通常是对域名进行解析,然后进行分流(选择直连或者代理)。由于openclash内置的域名解析功能不完善,所以我们有必要把域名解析转到  详情 回复 发表于 2023-7-2 21:10
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

在7楼 发表于 2023-7-2 19:06
感谢分享,把MostDNS放Clash前面,是能对DNS进行分流,但是分了之后,不管国内国外,最后还是都进Clash, ...

楼主对域名解析和分流概念理解可能有点混淆。
请求来到openclash后,openclash第一步通常是对域名进行解析,然后进行分流(选择直连或者代理)。由于openclash内置的域名解析功能不完善,所以我们有必要把域名解析转到mosdns进行。
mosdns域名解析最大的好处就是:使用规则(比对geosite数据库),如果是国内域名使用“本地Dns”解析,而国外域名则用“远程dns”解析。有效地避免了dns的污染,或是同时用本地和远程dns解析造成泄露。这只是使用了规则进行dns解析,不是分流。

点评

请求来到openclash后,openclash第一步,不是对域名进行解析,是根据Fake IP拿到原始域名,然后用域名匹配规则,如果是国外域名,就直接用相应协议加密,扔出去了,此时软路由上不会发生DNS,DNS发生在远端服务器上  详情 回复 发表于 2023-7-2 21:25
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
kdkhz 发表于 2023-7-2 21:10
楼主对域名解析和分流概念理解可能有点混淆。
请求来到openclash后,openclash第一步通常是对域名进行解 ...

请求来到openclash后,openclash第一步,不是对域名进行解析,是根据Fake IP拿到原始域名,然后用域名匹配规则,如果是国外域名,就直接用相应协议加密,扔出去了,此时软路由上不会发生DNS,DNS发生在远端服务器上(这也是为什么说Fake IP模式可以节省一次DNS)。只有当国内域名时,或者需要根据IP规则分流时,才会在软路由上发起DNS拿取IP。

现在Clash可以根据geoip来fallback,已经解决DNS污染的问题了。分流规则配的没问题的话,Clash也不会有DNS泄露的问题,只有一些冷门国外站点,如果所有域名规则都没匹配到,并且配有IP规则,那么它可能会向国内服务器发起DNS,但这种情况其实已经不能算做泄露了。

点评

"如果是国外域名,就直接用相应协议加密,扔出去了,此时软路由上不会发生DNS..." 如果你没有专门设置使用代理连接DNS,那么所有的dns服务器都是直连的,不存在你说的协议加密然后扔出去的说法。 Fake IP如果规则没  详情 回复 发表于 2023-7-4 20:44
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 deuteros_gex 于 2023-7-4 19:23 编辑

1、想要深入讨论某个具体问题前,最好先把功课都做足了。
比如你引的帖子里,shiift写得很清楚,该方案实际原作者是
https://www.right.com.cn/forum/f ... 280888&pid=18394478
他在帖子里做过不少细节答疑,甚至自己也承认尽管套娃套得这么复杂了,该漏还是会漏。
https://www.right.com.cn/forum/f ... 280888&pid=18623802
所以你无需对作者自己都承认的事情再做高论。

你非要问的话,他这个dns结构中除了clash本身外,没有什么是非要保留的。
甚至adguardhome提供的去广告功能也是能融进clash分流规则的。

2、你也分析过了,一旦把mosdns放到clash上游,开启fake-ip,实际的dns分流基本就都放在了clash上了。
论坛里使用mosdns的初衷就是它能国内外分流,显然放在clash上游的mosdns还不如拿掉算了。

3、确实,论坛的教程用mosdns实现的dns分流效果,无外乎“按国内外域名分流dns”,这在clash上基本能对等实现。

mosdns的开发者甚至不太鼓励openwrt用户去他的repo讨论“按国内外域名分流dns”,因为这并不是mosdns的预设场景,仅仅是一个很细分的衍生用途,官方repo里要是全讨论这些,就把方向带歪了。
https://github.com/IrineSistiana ... sioncomment-4291062

非要用专门工具的话,更轻量、更老牌的china-dns-ng可能更合适。

论坛里为什么非要套一层mosdns,我不知道。
可能纯粹因为最近流行(以前是smartdns流行),可能是看中了mosdns模块化的特点(能实现更复杂的dns分流需求),但在傻瓜教程里没有体现。

点评

之前没来得及回,刚发现你已经编辑过你之前的回复了,删掉了很多激烈的语言。 这是一个讨论贴,虽然我不明白你为什么会戾气这么重,但还是针对你原来的回复来回应下: 1. 不良林的视频我很早就看完了,不知道你是  详情 回复 发表于 2023-7-5 01:31
大佬??,按你说的能出个教程么?刚开始玩就感觉弄的越复杂越好,玩过一断时间后,明白没有十全十美的方案,只有弄清楚需求,实现需求的方法越简单越好也越稳定,有话说:越是大师的方法越简单。我的方案,openclas  详情 回复 发表于 2023-7-3 16:32
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
本帖最后由 bysoft 于 2023-7-3 16:59 编辑
deuteros_gex 发表于 2023-7-3 03:18
1、给个比较务实的建议,想要深入讨论某个具体问题前,最好先把功课都做足了。
比如你引的这个帖子里写得很 ...

大佬??,按你说的能出个教程么?刚开始玩就感觉弄的越复杂越好,玩过一断时间后,明白没有十全十美的方案,只有弄清楚需求,实现需求的方法越简单越好也越稳定,有话说:越是大师的方法越简单。我的方案,参考居j8888x https://www.right.com.cn/forum/thread-8293938-1-1.html  的教程
openclash截持dnsmasq  mosdns 开缓存做openclash上游,还担任本地dns解析,理论上本地域名不会经过openclash内核,实际上还是有本地域名经过显示为全球直联。原先还套adg去广告,实际发现效果并不理想,还不如直接在浏览器装去广告插件。所以想试试大师的方案,望大佬出个教程

点评

你用的这个不就是因为clash切到了redir-host,所以mosdns确实要承担分流作用、即便放在上游也有意义了呗。 "理论上本地域名不会经过openclash内核,实际上还是有本地域名经过显示为全球直联" 这能分析得清楚的,  详情 回复 发表于 2023-7-3 18:38
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 deuteros_gex 于 2023-7-3 18:40 编辑
bysoft 发表于 2023-7-3 16:32
大佬??,按你说的能出个教程么?刚开始玩就感觉弄的越复杂越好,玩过一断时间后,明白没有十全十美的方 ...

你用的这个不就是因为clash切到了redir-host,所以mosdns确实要承担分流作用、即便放在上游也有意义了呗。
理论上本地域名不会经过openclash内核,实际上还是有本地域名经过显示为全球直联

这能分析得清楚的,无需讲得跟玄学一样。
openclash可以输出调试日志,把调试日志传上来,然后说清楚哪个网站是“你觉得应该绕过clash,但却仍是走了clash” 。
想要别人帮你解决问题,那就把信息给足,不要反过来让别人猜。

所有傻瓜方案都是大差不差的,你要做的不是对着一堆傻瓜方案一个个试过去,然后祈祷它能工作。
而是应该找一个看得懂的、能理解的,长久使用它, 然后在此基础上学会方案中每个组件的用法,理解人家方案这么搭的原因。

比如我自己的用法就是只用openclash,开fake-ip,再找一个足够全的clash分流规则日常用就好。
遇到个别反常的网站就自己加一条clash规则咯。

点评

[2023-07-03 19:12:24][INFO] [TCP] connected lAddr=192.168.0.11:3171 rAddr=www.423down.com:443 mode=rule rule=DomainSuffix(423down.com) proxy=? 全球直连[DIRECT] 纯本地网站  详情 回复 发表于 2023-7-3 19:20
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 bysoft 于 2023-7-3 19:49 编辑
deuteros_gex 发表于 2023-7-3 18:38
你用的这个不就是因为clash切到了redir-host,所以mosdns确实要承担分流作用、即便放在上游也有意义了呗。 ...

[2023-07-03 19:12:24][INFO] [TCP] connected lAddr=192.168.0.11:3171 rAddr=www.423down.com:443 mode=rule rule=DomainSuffix(423down.com) proxy=? 全球直连[DIRECT]
  • [color=rgba(251,146,60,var(--un-text-opacity))][2023-07-03 19:46:12][color=rgba(14,165,233,var(--un-text-opacity))][INFO] [TCP] connected lAddr=192.168.0.11:3771 rAddr=www.deepin.org:443 mode=rule rule=IPCIDR(47.74.0.0/15) proxy=? 全球直连[DIRECT]
  • [color=rgba(251,146,60,var(--un-text-opacity))][2023-07-03 19:46:12][color=rgba(14,165,233,var(--un-text-opacity))][INFO] [TCP] connected lAddr=192.168.0.11:3770 rAddr=www.deepin.org:443 mode=rule rule=IPCIDR(47.74.0.0/15) proxy=? 全球直连[DIRECT]
www.423down.com 纯本地网站 深度 旁路模式: 电脑的IP是11  openwrt x64 地址3

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

这是个放在美国的域名,所以不满足绕过中国大路ip条件,会进clash 但这个域名gfw没封,所以不满足走代理、远端vps解析的条件,所以进了clash也是走直连。 [attachimg]632799[/attachimg] 有什么问题吗?  详情 回复 发表于 2023-7-3 19:51
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 deuteros_gex 于 2023-7-3 19:54 编辑
bysoft 发表于 2023-7-3 19:20
[2023-07-03 19:12:24][INFO] [TCP] connected lAddr=192.168.0.11:3171 rAddr=www.423down.com:443 mode= ...

这是个放在美国的域名,所以不满足绕过中国大路ip条件,会进clash
但这个域名gfw没封,所以不满足走代理、远端vps解析的条件,所以进了clash也是走直连。



有什么问题吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

没什么问题了,感谢解惑,刚看了深度是深圳旁边的阿里云  详情 回复 发表于 2023-7-3 19:58
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

本帖最后由 bysoft 于 2023-7-3 20:01 编辑
deuteros_gex 发表于 2023-7-3 19:51
这是个放在美国的域名,所以不满足绕过中国大路ip条件,会进clash
但这个域名gfw没封,所以不满足走代理、 ...

没什么问题,犯了常识性的错,以为能直接访问就是本地域名,感谢解惑,刚看了深度是深圳旁边的阿里云
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-29 04:49

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表