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

探讨两台软路由实现出国网络分流的最佳方案

  •  
  •   mouyase · 10 天前 · 1628 次点击

    目前本人家中的用法

    • iKuai 爱快软路由(双网口)

    负责拨号,DHCP 服务,Docker 部署 AdguardHome

    • OpenWRT(单网口)

    负责跑 ShellClash

    目前的网络配置是,iKuai 爱快软路由中,然后设置 DHCP 默认 DNS 为 AdguardHome 。

    将需要出国的 IP 添加到列表,设置该列表 IP 的下一跳网关到 OpenWRT 。

    OpenWRT 设置旁路模式,网关为 iKuai 爱快软路由,DNS 为 AdguardHome 。

    目前实现的效果

    如果 OP 的 Clash 出现故障导致网络无法连通,网关下一跳失败,网络会自动从旁路网关转回本机,于是不会导致断网 如果 OP 的 Clash 正常服务,则可以通过下一跳直接走到旁路网关,通过旁路网关再连接到互联网,实现出国

    目前遇到的问题

    • 首先是走了旁路网关,会导致带宽劣化

    千兆带宽下,正常应该是可以公网下行带宽跑到 945Mbps ,但是走了旁路网关目前只能跑到 600Mbps-700Mbps 之间。

    • 其次是 Nat 状态异常

    目前 iKuai 爱快软路由是开启了 FullCoreNat 全锥形 Nat 的,在没有使用旁路网关的情况下,是非公网 IP 下的最佳 NAT 形式(Nat1),对于 BT 下载,网游联机等具有很大的帮助。但是走了旁路网关之后再测试就会变成 Nat2 。

    理想状态

    • 国内带宽不劣化(国内带宽跑满千兆)
    • 保证 Nat1
    • 可以使用 AdguardHome 做去广告
    • 国内外网络分流,非出国不走代理,不使用海外 DNS 解析
    • 出国离线后网络国内网络不会阻断
    • 可以异地组网(打洞),实现在公网使用本地服务

    不知道诸位坛友们有没有什么更加优秀的方案,欢迎探讨

    25 条回复    2024-04-27 10:06:02 +08:00
    dford
        1
    dford  
       10 天前
    1,2 去掉旁路由就行了
    3 是它本来就有的功能吧
    4 用 felix on mars 的域名列表分一下流
    5 写个脚本周期性检测一下
    mouyase
        2
    mouyase  
    OP
       10 天前
    @dford 去掉旁路网关的情况有什么更优秀的方式来做出国吗?
    A1188
        3
    A1188  
       10 天前 via Android
    爱快多 WAN ,然后其中一个 WAN1 只走国内流量,另一个 WAN2 口就走梯的。。。爱快的 Docker 里跑个 ADG ,爱快 DNS 设置里的 DNS 就填成 ADG 的,实现域名分流,国内域名用国内 DNS ,国外域名用国外 DNS 。然后跑梯子的路由就直接插 WAN2 口就行,就算跑梯的路由挂掉,流量会自己切到 WAN1 的,不影响正常上网。。。
    A1188
        4
    A1188  
       10 天前 via Android
    @A1188 也不会影响网络的 NAT 类型
    huihuilang
        5
    huihuilang  
       10 天前
    我旁路由千兆宽带可以跑差不多 900M 。。。顺便说一下 900M 是跑日本小鸡的速度,跑国内测速点其实也差不多,900M+,懒得去折腾了
    povsister
        6
    povsister  
       10 天前
    你这个旁路使用方式是 !CHNRoutes 固定路由模式(即常说的大陆 IP 白名单机制),属于比较初级的旁路模式。

    再来讲问题
    > 首先是走了旁路网关,会导致带宽劣化
    旁路性能取决于旁路由本身,无法更改,只有两个优化办法:
    * 优化路由选择策略,做到必须走旁路的情况下,再去承担这个性能损耗
    * 旁路软件使用 dae 这种带直连转发加速的代理实现(但是需要额外注意直连流量可能导致路由环路问题)

    > Nat 状态异常
    解决方案只有一个,优化路由策略,能不走旁路就不走旁路。
    否则你只能信任代理软件的承诺,比如 dae 和 xray 都承诺支持 FullCloneNAT

    理想的旁路由模式应该是 DNSRoute ,即 FakeDNS 的优化版,做到全真 IP 。
    放弃使用!CHNRoutes 固定路由,转而使用基于域名的 DNSRoute 。可以看这位大佬的帖子,很详细了。t/1034955
    dont39
        7
    dont39  
       10 天前
    paopaogateway+paopaodns, 别人整合好的 fakeip 方案,不用折腾太多东西
    x86
        8
    x86  
       10 天前
    搜爱快自定义运营商 分流方案
    mouyase
        9
    mouyase  
    OP
       10 天前
    @A1188 这种是不是需要有多条宽带入户呀
    vcn8yjOogEL
        10
    vcn8yjOogEL  
       10 天前
    主路由用 BGP CN 表+内网 IP 表做 IP 分流, 或者代理网关接 2.5G 口用 geoip 分流(这样更简单, 但所有流量都会绕, 还有 NAT 问题)
    部分需要直连的域名另开一个 set 设置直连, 再设置超时防止过期规则滞留
    建议自己写 nft, mangle_prerouting 匹配入口设备后跳进自己写的分流链就行了, fw4 的 gui 配置功能不全

    AGH 的 UI 不是给大批域名规则设计的, 要么自己用脚本生成要么在后面加一层, 记住不要开多层缓存

    部分行为怪异的软件可以用代理本身提供的 FakeIP DNS 处理, 例如 Steam 似乎只要连接中断就会回退到离线模式, 此时用 FakeIP 可以骗过它
    mouyase
        11
    mouyase  
    OP
       10 天前
    @A1188
    @dont39
    @x86
    @povsister

    各位说的方案都在看了,受益匪浅了属于是,不过看起来都需要研究验证一阵,估计要再等好多天才能有结果了(
    A1188
        12
    A1188  
       9 天前
    @mouyase 宽带能多播就行
    Labope03
        13
    Labope03  
       9 天前
    问一下 主路由直接用 OP 不好吗
    主路由上开 adguardhome 和 clash
    所有问题都解决了
    putaosi
        14
    putaosi  
       9 天前 via Android
    @mouyase #11 试试我的方案
    mouyase
        15
    mouyase  
    OP
       9 天前
    @Labope03 直接用 OP 加 Clash ,Clash 会接管所有网络连接,如果 Clash 配置错误挂掉就会导致直接断网,DNS 也会失灵,而且 Nat 会被降级。直接用 OP 当主路由不是解决所有问题的办法,而是最简单但是问题最多的办法。
    VwEI
        16
    VwEI  
       9 天前
    爱快多 WAN+域名分流 或者 端口分流+非国内跳 openwrt
    zbatman
        17
    zbatman  
       9 天前
    爱快装 mosdns ,国内外分流,国内走 adguardhome ,国外指向 clash 的 dns ,然后加静态路由 fake-ip 段指向 clash
    linhu66
        18
    linhu66  
       8 天前
    @mouyase 电信宽带裸连出国
    mouyase
        19
    mouyase  
    OP
       8 天前
    @linhu66 上海电信精品网?
    mouyase
        20
    mouyase  
    OP
       8 天前
    @zbatman 这个方案听起来和 PaoPaoGateWay 是相同的操作
    zbatman
        21
    zbatman  
       8 天前
    @mouyase 没了解过这个东西,可能是配置更简单了
    mouyase
        22
    mouyase  
    OP
       8 天前
    @zbatman 是的,本质上是把配置简化了的一个方案
    hitoto
        23
    hitoto  
       7 天前
    @zbatman #17 有教程吗
    mouyase
        24
    mouyase  
    OP
       7 天前
    @hitoto 感觉老哥说的已经相当于教程了……你要是搞不定可以试试上面说的 PaoPaoDNS 和 PaoPaoGateWay
    zbatman
        25
    zbatman  
       7 天前 via Android
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2390 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:52 · PVG 16:52 · LAX 01:52 · JFK 04:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.