V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yyysuo
V2EX  ›  宽带症候群

终极的分流策略

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

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

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

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

    企业级别的防火墙或者网关的 dns 服务都是支持自己做递归,直接去域名权威 dns 上查询结果的。这样 dns 就是从 ip 来的了。只用做 IP 分流即可。
    yyysuo
        19
    yyysuo  
    OP
       27 分钟前
    @xiaooloong 递归没缓存很慢吧,特别是第一次访问的时候。这真是另外一条赛道了,看他们搞 bgp 分流,据说体验也不错,不过门槛比较高。
    beijiaoff
        20
    beijiaoff  
       1 分钟前
    说句没啥建设意义的情绪话,没有 100%完美的方案,复杂度、易用性、有效性的三角。要是没有墙就好了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5344 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 08:36 · PVG 16:36 · LAX 00:36 · JFK 03:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.