V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
putaosi
V2EX  ›  奇思妙想

爱快 & OpenWrt 分流网络拓扑(单出口版)

  •  1
     
  •   putaosi · 85 天前 · 3472 次点击
    这是一个创建于 85 天前的主题,其中的信息可能已经有所发展或是发生改变。

    爱快 & OpenWrt 分流网络(单出口版)

    路由追踪效果

    这个方法适合单线接入的用户,用路由或者光猫拨号均可。

    本文约定:

    1.用 ESXi

    2.要有爱快,OpenWrt 。

    10.0.7.1/24 做内网,各位具体实施的时候根据自家网络情况修改。

    3.内网设备 IP

    爱快 lan1 地址 10.0.7.1

    OpenWrt WAN 10.0.7.100

    OpenWrt LAN 192.168.77.1

    拓扑图

    好了,开始操作。

    A.在爱快建立运营商

    爱快设置约定:

    1.wan1 接入光猫

    2.wan2 用来接 OpenWrt

    在爱快上加载中国 IP 表用于国内外分流。中国 IP 表下载地址为 https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt

    这里用到爱快的流控分流功能。需要在爱快里面自建一个运营商。在运营商里面绑定中国 IP 段,以便筛选国内的流量走国内线路,国外流量走 OpenWrt 。

    操作流程: 流控分流>多线负载>自定义运营商

    点击 添加

    由于目前 IP 表有 6000 多行,需要前 5000 条和后面 1000 多条分 2 次添加。

    回到 流控分流>多线负载,点添加

    负载模式:源 IP+目的 IP+目的端口

    运营商:国内

    负载比例:wan1  1  启用

    保存,然后点启用。

    接下来:

    网络设置 > 内外网设置

    点击 wan1 ,勾上 掉线自动切换。

    网络设置 > 内外网设置

    点击 wan2 ,勾上 设此条线路为默认网关 和 掉线自动切换。

    线路检测  PING

    检测地址 192.168.77.1 ,这个地址是 OpenWrt 的 lan 地址,检查它的存在与否,用来确定是不是要将流量切换到 wan1 。

    当然你也可以设置为:

    线路检测  HTTP 

    检测地址 google.com

    这样当 OpenWrt 不能正常访问国外网,流量会切换到 wan1 。

    B. OpenWrt WAN 和 LAN 设置

    OpenWrt 的 WAN 口接在爱快的 LAN 下面。

    爱快 wan2 口接的是 OpenWrt 的 lan 口下面,本例中爱快 wan2 的 IP 设置为 192.168.77.2 。

    OpenWrt 上可以跑各种我们需要的留学服务。

    OpenWrt 网络环路避免

    把 OpenWrt 自身访问网络出口固定设置为 wan1 。

    爱快 流控分流 > 分流设置 > 端口分流 

    添加 OpenWrt WAN 口的 IP 以 wan1 口为流量出口。

    启用。

    此拓扑优势:

    1. 可以接受 OpenWrt 死机 /故障。
    2. 爱快分流。
    3. 爱快下内网设备同一个网络内,没有跨三层问题。
    4. 可以在爱快上设置某个或者某些设备走 OpenWrt 出站。
    5. 内网流量仅经过一个网关,没有网关损耗问题。

    需要的维护

    国内的 IP 表会缓慢地更新,所以建议每半年更新一次 IP 表。

    F & Q

    如果 OpenWrt 死机会怎样?

    国内外流量会走爱快 wan1 请求。

    如果爱快死掉会怎么样?

    爱快都死了还上什么网?

    我不使用 ESXi 怎么办?

    本架构可以非常方便地部署到 PVE/hyper-v 等架构。

    我不喜欢使用爱快怎么办?

    本架构可以推广到任何双路由架构。

    上面设置中的 wan2 为什么设置为默认网关?

    爱快会加载我们自定的运营商 IP 表,所有的请求会按照 流控分流 > 分流设置 > 多线负载 里面的设定去走出口。国内的请求会固定走 wan1 ,表里没有覆盖到的 IP 默认走 wan2 。因为海外 IP 表很大,这算是取巧的操作。这个设置的妙处请自行体会。(当然了,你也可以反向操作。加载一张海外的 IP 表绑定在 wan2 上,不设国内 IP 表。让所有的流量默认走 wan1 。由于海外的 IP 表很大,所以我认为这个操作会占用更多的 IP 比对的时间可能会降低效率。)

    28 条回复    2022-10-13 16:52:18 +08:00
    Xusually
        1
    Xusually  
       85 天前
    很巧啊,我也用的 GEN8 + ESXi + 爱快 + OpenWrt ,不过我是 GEN8 的 2 个物理网卡做了聚合到 2000M ,虚拟机和 ESXi 的管理全部用的虚拟网卡,WAN/LAN/MGT 的流量都走一起,不同的 vlan id ,用 vlan 隔离,往上交换机里几个不同的 vlan 接不同的设备,4 个千兆 WAN 都接光猫:宽带北京联通千兆 3 拨,北京移动千兆 1 拨。

    不过我爱快和 OpenWrt 的接入和分流是传统模式,并没有指定所有的设备使用 OpenWrt 作为网关,只是很少的设备比如 AppleTV ,OpenWrt 挂了的话,我 AppleTV 确实是不能上网了,其实影响不大。
    putaosi
        2
    putaosi  
    OP
       85 天前 via iPhone
    @Xusually 你可以改成我这种架构
    hcwhan
        3
    hcwhan  
       84 天前 via Android
    既然 openwrt 的 wan 流量到爱快之后 全都走爱快的 wan1 那为啥不直接把 openwrt 的 wan 接到第一个虚拟交换机
    putaosi
        4
    putaosi  
    OP
       84 天前 via iPhone
    @hcwhan 如果是光猫拨号,两个路由的 wan 就都接光猫下。如果爱快拨号就照这个拓扑图接
    scyuns
        5
    scyuns  
       84 天前
    这就是传说中的单臂路由器吗
    missdeer
        6
    missdeer  
       84 天前
    没看明白,这个解决了什么问题?
    lqzhgood
        7
    lqzhgood  
       84 天前
    不能自动更新国内 IP 段 是个问题呀。
    lqzhgood
        8
    lqzhgood  
       84 天前
    而且 DNS 也是个问题,例如 请求 Google ,回来的是污染的 DNS (例如某国内 IP ),这时候就不会被分流到 openwrt 了
    emeab
        9
    emeab  
       84 天前
    不如改用 asn 分流. 基本上国内的 asn 都是在国内运营的.
    putaosi
        10
    putaosi  
    OP
       84 天前
    @lqzhgood 所以这个架构有带自建 DNS 版 /双出口等补完版本
    putaosi
        11
    putaosi  
    OP
       84 天前
    @emeab 可以的,一样的
    tcpdump
        12
    tcpdump  
       84 天前
    @Xusually ESXi 做聚合,是不是要 vCenter ? 在 ESXi 里面做聚合的话,只会起到一个链路备份的作用,带宽不会叠加。
    lqzhgood
        13
    lqzhgood  
       84 天前
    @putaosi 我觉得 DNS 这里有点死循环~

    可靠的 DNS 一定是要套 FQ 去境外解析的(这样也能享受境外的 CDN ),问题是 openwrt 在下一级。

    分流给 openwrt 的前提是解析出 DNS 在海外,解析 DNS 的前提是 DNS 流量经过 openwrt 获取解析结果

    所以我想问问 DNS 这一块 LZ 是如何考虑的呢?
    Xusually
        14
    Xusually  
       84 天前
    @tcpdump 不需要吧,我就是 ESXi 里做的,开启基于 IP 哈希的路由,交换机里配置 LAG 为静态 LACP 汇聚,不过暂时手头没有 2.5G 设备或者万兆设备测试。

    这么做的初衷是因为目前我 GEN8 的 PCI-E 槽被 Raid 卡占用了,暂时没有办法接多网卡,网络接口就剩下机器自带的 2 个千兆了,物理网卡划分一个 WAN 一个 LAN 使用的话总吞吐还是瓶颈,毕竟我有 4 个千兆 WAN ,弄成 WAN/LAN 混着来资源分配动态一些,虽然也是不够,不过比单独拆成 2 个 GE 强。
    acrisliu
        15
    acrisliu  
       84 天前 via iPhone
    感觉 DNS 解析是个问题,目前自用的方案,DNS 是通过代理去境外解析的,如果代理出问题甚至会影响国内网站访问。
    chenghj87
        16
    chenghj87  
       84 天前
    我感觉 openwrt 上一些 FQ 插件分流也蛮好啊,为什么要用爱快多一层呢?
    goodryb
        17
    goodryb  
       84 天前
    虽然用 IP 分流能解决很多域名代理的问题,但这个逻辑上太复杂了
    putaosi
        18
    putaosi  
    OP
       84 天前 via iPhone
    @lqzhgood 完整的拓扑请进群讨论 https://t.me/putaosi
    renothing
        19
    renothing  
       84 天前
    搞这么复杂,其实一个策略路由就能解决的事情。一个 openwrt 足以
    putaosi
        20
    putaosi  
    OP
       84 天前
    @renothing 你说的对,确实是这样
    putaosi
        21
    putaosi  
    OP
       84 天前
    @renothing 这个是用来取代网络上大量使用旁路由模式,单路由的忽略此文
    mrwheat
        22
    mrwheat  
       81 天前 via iPhone
    这个好处就在于有电信和移动双线路都话 出国线路会更高效。
    phpfpm
        23
    phpfpm  
       75 天前
    爱快是物理机么。。。
    putaosi
        24
    putaosi  
    OP
       75 天前 via iPhone
    @phpfpm 可以是物理机也可以是虚拟机
    tcpdump
        25
    tcpdump  
       69 天前
    战术标记一下
    dcty
        26
    dcty  
       68 天前
    我目前用的是另外一种方案,不如 OP 这种好。
    ========
    iKuai 添加一条端口分流,下一跳网关指向 clash 网关(可以是 openclash ,shellclash ,也可以自己手撸的)
    clash 使用 fakeip 模式,开启嗅探,以便在 clash 内部可以继续使用域名分流。
    源地址选择你需要翻墙的 IP ,目标地址选择 fakeip 198.18.0.1/16 和
    telegram
    91.105.192.0/23
    91.108.4.0/22
    91.108.8.0/21
    91.108.16.0/21
    91.108.56.0/22
    95.161.64.0/20
    149.154.160.0/20
    185.76.151.0/24
    =============

    接着就是在 dns 上进行分流了,修改 ttl 为 10s ,开启乐观缓存
    geosite:cn,apple-cn,microsoft-cn , 用运营商 dns 解析
    其他的域名用 fallback 策略解析
    默认用 clashdns 解析,得到 fakeip ,以便端口分流的时候可以走下一跳到 clash
    回落方案:clashdns 10 毫秒内无响应使用 doh 解析
    一旦 clash 挂了,dns 解析拿不到 fakeip 就会正常走默认网关 [iKuai]
    putaosi
        27
    putaosi  
    OP
       66 天前 via iPhone
    @dcty 可试试我这个架构
    ingnoscemihi
        28
    ingnoscemihi  
       46 天前
    是不是有点麻烦了,我感觉就纯一个 dns 服务器,然后 op 里分流也非常快
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1767 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 17:41 · PVG 01:41 · LAX 09:41 · JFK 12:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.