软路由很多人推崇的MosDNS+Clash模式到底有没有用

34次阅读

共计 2105 个字符,预计需要花费 6 分钟才能阅读完成。

最近我在旁路由上部署了一个 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 服务器发送请求,拿 IPIP(国内真 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-06-30 01:55 2 没折腾过 不清楚 cnlhx 2023-06-30 02:02 3 我用 RouterOS 分流,国内对接 mosdns+adghome,国外直接分流到 openclash+ 第二个 adghome DogeLee2 2023-06-30 02:13 4 我自建就一两个节点,没必要用 Clash

正文完
 0