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

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

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

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

  •  2
     
  •   putaosi · 2022-09-04 21:24:38 +08:00 · 10582 次点击
    这是一个创建于 840 天前的主题,其中的信息可能已经有所发展或是发生改变。

    爱快 & 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 比对的时间可能会降低效率。)

    第 1 条附言  ·  215 天前
    视频教程已出,欢迎各位关注
    ?si=0ZRa_AVIFbbAGJEi
    35 条回复    2023-06-28 05:02:18 +08:00
    Xusually
        1
    Xusually  
       2022-09-04 23:05:09 +08:00
    很巧啊,我也用的 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
       2022-09-05 00:42:52 +08:00 via iPhone
    @Xusually 你可以改成我这种架构
    hcwhan
        3
    hcwhan  
       2022-09-05 02:55:34 +08:00 via Android
    既然 openwrt 的 wan 流量到爱快之后 全都走爱快的 wan1 那为啥不直接把 openwrt 的 wan 接到第一个虚拟交换机
    putaosi
        4
    putaosi  
    OP
       2022-09-05 03:03:52 +08:00 via iPhone
    @hcwhan 如果是光猫拨号,两个路由的 wan 就都接光猫下。如果爱快拨号就照这个拓扑图接
    scyuns
        5
    scyuns  
       2022-09-05 08:34:16 +08:00
    这就是传说中的单臂路由器吗
    missdeer
        6
    missdeer  
       2022-09-05 09:14:27 +08:00
    没看明白,这个解决了什么问题?
    lqzhgood
        7
    lqzhgood  
       2022-09-05 09:28:32 +08:00
    不能自动更新国内 IP 段 是个问题呀。
    lqzhgood
        8
    lqzhgood  
       2022-09-05 09:31:06 +08:00
    而且 DNS 也是个问题,例如 请求 Google ,回来的是污染的 DNS (例如某国内 IP ),这时候就不会被分流到 openwrt 了
    2kCS5c0b0ITXE5k2
        9
    2kCS5c0b0ITXE5k2  
       2022-09-05 09:32:30 +08:00
    不如改用 asn 分流. 基本上国内的 asn 都是在国内运营的.
    putaosi
        10
    putaosi  
    OP
       2022-09-05 10:11:43 +08:00
    @lqzhgood 所以这个架构有带自建 DNS 版 /双出口等补完版本
    putaosi
        11
    putaosi  
    OP
       2022-09-05 10:12:25 +08:00
    @emeab 可以的,一样的
    tcpdump
        12
    tcpdump  
       2022-09-05 11:09:10 +08:00
    @Xusually ESXi 做聚合,是不是要 vCenter ? 在 ESXi 里面做聚合的话,只会起到一个链路备份的作用,带宽不会叠加。
    lqzhgood
        13
    lqzhgood  
       2022-09-05 11:12:40 +08:00
    @putaosi 我觉得 DNS 这里有点死循环~

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

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

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

    这么做的初衷是因为目前我 GEN8 的 PCI-E 槽被 Raid 卡占用了,暂时没有办法接多网卡,网络接口就剩下机器自带的 2 个千兆了,物理网卡划分一个 WAN 一个 LAN 使用的话总吞吐还是瓶颈,毕竟我有 4 个千兆 WAN ,弄成 WAN/LAN 混着来资源分配动态一些,虽然也是不够,不过比单独拆成 2 个 GE 强。
    acrisliu
        15
    acrisliu  
       2022-09-05 11:27:38 +08:00 via iPhone
    感觉 DNS 解析是个问题,目前自用的方案,DNS 是通过代理去境外解析的,如果代理出问题甚至会影响国内网站访问。
    chenghj87
        16
    chenghj87  
       2022-09-05 11:35:52 +08:00
    我感觉 openwrt 上一些 FQ 插件分流也蛮好啊,为什么要用爱快多一层呢?
    goodryb
        17
    goodryb  
       2022-09-05 11:51:52 +08:00
    虽然用 IP 分流能解决很多域名代理的问题,但这个逻辑上太复杂了
    putaosi
        18
    putaosi  
    OP
       2022-09-05 12:31:56 +08:00 via iPhone
    @lqzhgood 完整的拓扑请进群讨论 https://t.me/putaosi
    renothing
        19
    renothing  
       2022-09-05 13:42:14 +08:00
    搞这么复杂,其实一个策略路由就能解决的事情。一个 openwrt 足以
    putaosi
        20
    putaosi  
    OP
       2022-09-05 14:32:22 +08:00
    @renothing 你说的对,确实是这样
    putaosi
        21
    putaosi  
    OP
       2022-09-05 14:42:24 +08:00
    @renothing 这个是用来取代网络上大量使用旁路由模式,单路由的忽略此文
    mrwheat
        22
    mrwheat  
       2022-09-08 10:42:07 +08:00 via iPhone
    这个好处就在于有电信和移动双线路都话 出国线路会更高效。
    phpfpm
        23
    phpfpm  
       2022-09-14 15:48:32 +08:00
    爱快是物理机么。。。
    putaosi
        24
    putaosi  
    OP
       2022-09-14 19:05:59 +08:00 via iPhone
    @phpfpm 可以是物理机也可以是虚拟机
    tcpdump
        25
    tcpdump  
       2022-09-20 15:57:24 +08:00
    战术标记一下
    dcty
        26
    dcty  
       2022-09-21 19:42:06 +08:00
    我目前用的是另外一种方案,不如 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
       2022-09-23 02:45:06 +08:00 via iPhone
    @dcty 可试试我这个架构
    ingnoscemihi
        28
    ingnoscemihi  
       2022-10-13 16:52:18 +08:00
    是不是有点麻烦了,我感觉就纯一个 dns 服务器,然后 op 里分流也非常快
    TwoBall
        29
    TwoBall  
       2023-02-11 15:24:47 +08:00
    请问从左到右 第一个第二个 单进单出的虚拟交换机起什么作用?
    768952693
        30
    768952693  
       2023-02-14 04:26:05 +08:00 via iPhone
    大佬,我从恩山看到这里来的。
    有个疑问,爱快 dhcp 列表怎么设置,网关怎么设置。
    如果默认填爱快的网关和 dns ,肯定只能国内。
    如果填 op 的网关和 dns ,op 挂了,就全挂了。
    putaosi
        31
    putaosi  
    OP
       2023-02-14 10:11:02 +08:00 via iPhone
    @TwoBall
    交换机就是交换的功能
    putaosi
        32
    putaosi  
    OP
       2023-02-14 10:13:57 +08:00 via iPhone
    @768952693
    不必特殊设置。爱快正常起 DHCP 服务就是了
    phpfpm
        33
    phpfpm  
       2023-02-19 17:03:48 +08:00
    问楼主一个问题:
    你的其他网络设备都在 10.0.7.0/24 这个网段,如何访问 op 呢?
    1. via WAN 进去访问
    2. 给 op 配置另外一个静态 ip 的 lan 口在这个网段访问
    3. 设置一个路由规则什么的?
    putaosi
        34
    putaosi  
    OP
       2023-03-03 15:13:48 +08:00 via iPhone
    网内直接访问 op 的 lan 地址即可
    JackieWuu
        35
    JackieWuu  
       2023-06-28 05:02:18 +08:00
    @putaosi 请问 “自建 DNS 版 /双出口等补完版本” 在哪可以看到呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1079 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:10 · PVG 02:10 · LAX 10:10 · JFK 13:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.