V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
fortitudeZDY
V2EX  ›  分享创造

[送码] MintFlow - Network Stack 一个基于 Cisco 开源 VPP 打造的 WireGuard 客户端

  •  
  •   fortitudeZDY · 2025 年 2 月 27 日 · 2625 次点击
    这是一个创建于 333 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    由于一直在网络通信领域折腾,自从基于 Tailscale 开源客户端做了 iOS 客户端之后,对于 iOS 的网络实现有了一些了解,就一直有一个念头,能否把自己熟悉的 Cisco 开源的 VPP 协议栈 Porting 到 apple 平台来。

    经过对 MacOS 网络设计的系统级学习,在经历了一些底层代码的适配后(为此还编写了多年未写的一些汇编代码,在这里可以说 AI 对于编写汇编语言也是大有帮助的),首先完成了 MacOS 上的适配;这样就算是解决了个大的拦路虎;而俺虽然不太会做些 AI 相关的东西,但可以利用 AI 编写 UI 还是能够补充自己的一个较大的短板,这样 iOS 应该还是可以试试的。

    于是抽了一些时间终于搞定了 iOS 平台上的适配与开发,并成功上架至 Apple Store 。中间还有一点小插曲,因为 App 描述的原因,得到一个 4.3 ( Spam ),在更新描述后,竟然通过了,Apple Store 审核真是魔幻。

    之所以起名为 MintFlow - Network Stack ,是因为这个客户端的确是围绕一个 Network Stack 来构建的(覆盖了网络协议中的 L2-L4 );当然,目前的功能还比较少,主要是利用 VPP 原生 WireGuard 插件支持了 WireGuard 协议,目前已经能满足自己日常同时连接家庭网络(要求有公网 IP )以及公有云 VPC 的功能(做运维需要:()。

    以下是一些功能截图:

    多接口同时运行,以对接多个服务器。

    多接口

    路由分流(毕竟是路由器嘛)

    路由分流

    路由追踪和诊断(还是得加点功能以通过审核,同时也方便诊断网络路径,可不依赖 VPN 开启,可以用来实现网络调试)

    网路诊断

    高级设置(设置 WireGuard 路由能达到的 DNS 服务器)

    高级设置

    总体上功能还是比较原始,但对于期望有一些基础分流的用户可能会有一些用处,我也将会继续将更多 Network Stack 的能力给用起来:)之所以上架为付费 App ,也是考虑后面会继续增加与 WireGuard 官方客户端相比更多的功能,毕竟 Network Stack 的能力还是比 WireGuard 官方客户端要多的多的,希望朋友们轻喷。

    另外这个 App 目前主要考虑海外用户,国内也不计划上架,因此目前语言以英语为主:)

    送码

    闲话少话,先送 10 个码( apple 似乎设置为 28 天内有效),后续不够继续发,给爱折腾网络的朋友。

    • RTJJJXN9RNTM
    • TRTHTLEKRTN3
    • 3J4YP74HMNRE
    • KM3KNKH9LTF3
    • M47YRXWTXWAA
    • T3MK3KENFNNY
    • EPNYN36MTFMA
    • PTWM9PFHJJ7K
    • MEXRJFFY6RMF
    • NNR4WRJ4LLXT

    其他

    如果有朋友对于 App 的实现细节以及网络技术有兴趣,也欢迎在此留言讨论:)

    17 条回复    2025-08-18 10:20:35 +08:00
    SayHelloHi
        1
    SayHelloHi  
       2025 年 2 月 27 日
    此项目已不在提供
    SayHelloHi
        2
    SayHelloHi  
       2025 年 2 月 27 日
    国区使用兑换码提示:此项目已不在提供

    又回去看了介绍:

    这个 App 目前主要考虑海外用户,国内也不计划上架

    请忽略上一条留言
    boris1993Jr
        3
    boris1993Jr  
       2025 年 2 月 27 日 via iPhone
    感谢
    T3MK3KENFNNY 已兑换
    yir
        4
    yir  
       2025 年 2 月 27 日 via iPhone
    3J4YP74HMNRE 已用感谢
    Phant0m
        5
    Phant0m  
       2025 年 2 月 27 日 via iPhone
    NNR4WRJ4LLXT 已用 感谢🙏
    mylofsh
        6
    mylofsh  
       2025 年 2 月 27 日 via iPhone
    老板还能再分享吗?
    wdxbb
        7
    wdxbb  
       2025 年 2 月 27 日 via iPhone
    全部没了,求再发
    love4taylor
        8
    love4taylor  
    PRO
       2025 年 2 月 27 日
    > 首先完成了 MacOS 上的适配

    没做 macOS 版?商店内也只是 iOS 版
    fortitudeZDY
        9
    fortitudeZDY  
    OP
       2025 年 2 月 27 日
    @Love4Taylor MacOS 上的适配主要是用来做 POC 的开发,目前的计划是先把 iOS 的一些功能给完善一下;不过理论上如果是 M1+的 cpu ,应该可以用 iOS 版的。
    fortitudeZDY
        10
    fortitudeZDY  
    OP
       2025 年 2 月 27 日
    感谢大家的支持,看到有朋友提示码已经用完,继续发送 10 个码,也欢迎能用起来的朋友反馈问题和建议哦。

    KRF4X7T3TLYL
    PYPRLPXN3L97
    A343NF9N7R3N
    MLYWP3LTWXMR
    K3PT3TKRJWTK
    ELKTRPTK4E3R
    L74WPHWKME3P
    FKTNHA6ALWRX
    NREA3WX7F6FW
    H9HK6AE7T4RM
    Lituby
        11
    Lituby  
       2025 年 2 月 27 日 via Android
    感谢大佬,第一个已用
    65r4Zgm364TDg652
        12
    65r4Zgm364TDg652  
       2025 年 2 月 27 日
    ELKTRPTK4E3R 已用
    URgoy
        13
    URgoy  
       2025 年 2 月 27 日 via iPhone
    NREA3WX7F6FW 已用,感谢
    gogo88
        14
    gogo88  
       2025 年 2 月 28 日 via iPhone
    来晚了,全部被兑换了
    fortitudeZDY
        15
    fortitudeZDY  
    OP
       2025 年 3 月 26 日 via iPhone
    在 Reddit 发贴被隐藏了,真是 r 了,继续在 v 站送码子,最近 1.0.2 版本做了 qr 码支持,支持了包含域名的 endpoint ,后续就准备迭代基于域名的分流能力,欢迎有需要的 v 站朋友们下载使用,如果有闲功夫,动动小手给 Apple Store 个好评哦

    A4N3R4FALL36

    TYJLHP4FFMMW

    T3PFX7PJ3LAT

    3PXMPKX6KYWW

    NNYA3ETLLPAF

    L9T3HF369YTW

    ETTWFAJPX6KK

    LR974EEW3MK6

    7P7RMH44WEP7

    PTW4ALMN6NP3
    onetown
        16
    onetown  
       2025 年 8 月 18 日
    @fortitudeZDY 顺着 op 新发的 app 找到这个 thread 的, 之前错过这个主题了, 我也是搞 vpp 的, 我记得 vpp 里的 wireguard 插件是需要修改一下才支持一端在 nat 后面的, 所以魔改主要是这部分? 另外,wg 官方的客户端对于功能来说就是隧道, 路由功能其实跟各 os 相关,我之前有试过借用 softether 的 mayaqua 来实现支持 win 和 linux , 不过后来想想太蠢了, 直接实现调用系统的 api 其实要简单很多, 特别是 ios/mac 的 NE 里本身就有 includes 和 excludes , 而且对路由数量上基本没限制,win/linux 更是,android 就不行, 路由超过 200 还是 300 就崩了。

    在站里很少碰到即做网络又做 app 的, 想认识一下, 也许能交流交流, 能有更多的奇思妙想。
    fortitudeZDY
        17
    fortitudeZDY  
    OP
       2025 年 8 月 18 日
    @onetown wireguard 如果不是作 server 的话,做 client 并不需要修改,因此也不是魔改啦:) vpp 到 iOS 其实最困难的并不是这个,而是 coroutine 的适配,网络 io 的 apple 平台对接这些。

    softether 对我这样的中年人来说太古早了,已经很多年再没有碰过。对于 iOS 来说,除了需要 exclude 的 routes 外,大部分都直接 route 到 vpp ,然后利用到 vpp 的路由功能可以做很多事情,特别是 vpp 的 hoststack ,MintFlow 这个 app 的 l4proxy 是通过 vpp 的 hoststack 配合 yamux 这个协议(我手工撸了一份 C 的 yamux 实现到 vpp 里)对接到 rust 组件,这也是我为什么不想在 MintFlow 里引入 Tailscale ,因为需要引入 go runtime ,overhead 可能比较大。

    针对你说的路由数量,这个其实 tailscale 也很头痛,他们会在下发路由时,针对移动平台做下 route 合并,原因可能还是因为他们搞了 app connector 后可能会引入大量 routes...

    我的微信可以搜索用手机号:MTgwMTM1ODgxODk= ( base64 解码即可) ,有空可以添加交流:)
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   983 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:58 · PVG 03:58 · LAX 11:58 · JFK 14:58
    ♥ Do have faith in what you're doing.