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

2025 年 2 月 27 日
 fortitudeZDY

前言

由于一直在网络通信领域折腾,自从基于 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 天内有效),后续不够继续发,给爱折腾网络的朋友。

其他

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

2616 次点击
所在节点    分享创造
17 条回复
SayHelloHi
2025 年 2 月 27 日
此项目已不在提供
SayHelloHi
2025 年 2 月 27 日
国区使用兑换码提示:此项目已不在提供

又回去看了介绍:

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

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

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

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

A4N3R4FALL36

TYJLHP4FFMMW

T3PFX7PJ3LAT

3PXMPKX6KYWW

NNYA3ETLLPAF

L9T3HF369YTW

ETTWFAJPX6KK

LR974EEW3MK6

7P7RMH44WEP7

PTW4ALMN6NP3
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
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 解码即可) ,有空可以添加交流:)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1114707

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX