终极的分流策略

6 小时 18 分钟前
 yyysuo
这里聊的是分流策略,不是 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 逻辑处理起来更简单。
1718 次点击
所在节点    宽带症候群
19 条回复
yyysuo
6 小时 6 分钟前
再多说几句,主题是如何分流,其实分流完成后,对于需要代理的域名发 fakeip 直接远程解析即可,不需要使用解析出来的 ip ,否则有可能出现 8888 走了美国代理,解析出对美国友好的 IP ,奈飞选了新加坡节点,要么速度慢,要么解锁失败的情况。
gfreezy
5 小时 37 分钟前
自动探测,同时建立 2 个连接:通过代理和直连。哪个先建立成功就用哪个。然后缓存结果,下一次直接使用缓存的结果,同时再探测一下更新缓存。

除了 DNS 污染的极端情况,不需要黑名单也不需要白名单
xiaooloong
5 小时 36 分钟前
或者只做 ip 分流,然后自建递归 dns
yyysuo
5 小时 30 分钟前
@xiaooloong ip 哪来的呢?逃不开 dns 的,既然 dns 都能分好了,就不需要 ip 再分一次。
yyysuo
5 小时 29 分钟前
@gfreezy 有成品吗?想来应该是全部流量全引入 app 再处理吧。
Kinnice
4 小时 54 分钟前
拿几乎不要钱的国内 阿里云/腾讯云 VPS, 自建了 DNS (doh/dot)服务器, 支持 ECS
- 国内域名名单直接走支持 ECS 的国内 DNS
- 其他域名走支持 ECS 的境外 DNS ( ip 直连的 doh )
- 乐观 cache
- ttl ++

本地也不用跑一堆东西
解析到的 IP 始终是纯净的
境内的话是归属地友好
mihomo/sb 等都支持嗅探,因此给到代理服务器的还是域名,不用担心流媒体异常
yyysuo
4 小时 45 分钟前
@Kinnice 这不就是我说的方法 2 么。
Kinnice
4 小时 44 分钟前
@gfreezy #2 某些站点,国内可连,但不向国内提供服务。好像就不行了
Kinnice
4 小时 41 分钟前
@yyysuo #7 你说的这些方法都是老生常谈的。一直都是差不多这样。可能共同去维护一份 dns 订阅列表才是正解。
jqtmviyu
4 小时 38 分钟前
我现在是
国内白名单, 用国内 dns
名单外先用国外 dns, 附带 ecs, 如果解析为国内, 再用国内 dns 解析一次.

分流策略最终还是要结合工具的. 你说的方法, 光靠 clash 我没想到该怎么实现.
yyysuo
4 小时 35 分钟前
@jqtmviyu mosdns 可以实现,sing-box 也可以单独实现。
wu67
4 小时 35 分钟前
国内域名 ip 直连, 其他全部代理. 自己用的规则自己维护就行.
yyysuo
4 小时 35 分钟前
@Kinnice 举个成品的例子呢,重点是不在域名列表域名的处理和 2 次 dns 解析。
yyysuo
4 小时 34 分钟前
yyysuo
4 小时 33 分钟前
@wu67 维护成本太高了,就像停车场的例子,没法即时维护的,只能先关了代理,后续也不好再查是哪个域名有问题,体验太差。
ljn917
3 小时 38 分钟前
国内 DNS 解析出国外的 IP ,或者国外 DNS 解析出国内,这两种是可以确定最佳策略的。其他两种情况就只能手动列表。
isAK47
2 小时 42 分钟前
国内 IP 直连,非国内 IP 走代理,不需要什么域名列表
xiaooloong
33 分钟前
@yyysuo #4 ip 从 dns 来是因为用的 dns 缓存服务器。递归交给外部网络做了。

企业级别的防火墙或者网关的 dns 服务都是支持自己做递归,直接去域名权威 dns 上查询结果的。这样 dns 就是从 ip 来的了。只用做 IP 分流即可。
yyysuo
20 分钟前
@xiaooloong 递归没缓存很慢吧,特别是第一次访问的时候。这真是另外一条赛道了,看他们搞 bgp 分流,据说体验也不错,不过门槛比较高。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1091065

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX