终极的分流策略

yyysuo · 2024-11-20 10:10:54 · 621 次点击
这里聊的是分流策略,不是 fakeip 、bgp 、ospf 、ipset 、ipt 、nft 等分流用到的技术手段,也不是 sing-box 、mihomo 等核心,更不是 openclash ,小猫咪等集成代理工具。

首先要确定分流的对象,互联网上的访问需要分流的,就是域名,没有对应域名纯 IP 访问的场景极其有限,可以做特殊处理。

分流总体上可以分为 2 类,直连和代理,需要代理的域名就直接引入到 sing-box/mihomo 等代理程序中进一步分流即可,代理程序按域名分流十分成熟了。

那如何判断一个域名需要代理呢?目前有各种域名列表,直连域名列表、gfwlist ,基本上覆盖了大部分常用的域名,重点是那些没在域名列表中的域名,虽然访问的机率小,其实是海量的,永远也无法维护完全的。

于是就产生了白名单和黑名单 2 种模式,即不在列表中的域名,要么全走国内 dns 解析,要么全走国外 dns 解析。可能遇到尴尬的场景,黑名单模式下,某个人个博客不在 gfwlist 列表中,无法访问,需要手动添加域名至 gfwlist ;白名单模式下,某国内购物网站突然定位到了国外,出停车场时扫码付费一直在转圈,因为小程序的域名 xxx.top 只做了国内解析,国外 dns 压根没解析结果。

对于这种尴尬,解决的办法有两种
1:列表外域名国内 dns 解析,解析结果为国外 IP/无 IP 的,使用国外 dns 再解析一次,速度快,dns 有泄露。
2:列表外域名国外 dns 解析,附加上国内 ip 作为 ecs ip ,速度慢,结果可能不够精确,dns 无泄露。

当然还有很多细节问题,比如方法 2 就无法解决国外 dns 无解析结果的情况,需要回落到国内 dns 做 2 次解析,可以添加过期缓存来保存分流结果等等等等,需要慢慢打磨。

以上 2 种方法,对域名列表的依赖度大大降低了,基本上可以自动分流不在列表中的域名,分流精度大大提高,体验极佳。

推荐方法 1 ,速度快,dns 逻辑处理起来更简单。
举报· 621 次点击
登录 注册 站外分享
5 条回复  
yyysuo 楼主 小成 2024-11-20 10:22:59
再多说几句,主题是如何分流,其实分流完成后,对于需要代理的域名发 fakeip 直接远程解析即可,不需要使用解析出来的 ip ,否则有可能出现 8888 走了美国代理,解析出对美国友好的 IP ,奈飞选了新加坡节点,要么速度慢,要么解锁失败的情况。
gfreezy 小成 2024-11-20 10:52:24
自动探测,同时建立 2 个连接:通过代理和直连。哪个先建立成功就用哪个。然后缓存结果,下一次直接使用缓存的结果,同时再探测一下更新缓存。 除了 DNS 污染的极端情况,不需要黑名单也不需要白名单
xiaooloong 小成 2024-11-20 10:52:51
或者只做 ip 分流,然后自建递归 dns https://i.imgur.com/agAJ0Rd.png
yyysuo 楼主 小成 2024-11-20 10:59:25
@xiaooloong ip 哪来的呢?逃不开 dns 的,既然 dns 都能分好了,就不需要 ip 再分一次。
yyysuo 楼主 小成 2024-11-20 11:00:08
@gfreezy 有成品吗?想来应该是全部流量全引入 app 再处理吧。
返回顶部