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

187 天前
 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 的实现细节以及网络技术有兴趣,也欢迎在此留言讨论:)

2181 次点击
所在节点    分享创造
17 条回复
SayHelloHi
187 天前
此项目已不在提供
SayHelloHi
187 天前
国区使用兑换码提示:此项目已不在提供

又回去看了介绍:

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

请忽略上一条留言
boris1993Jr
187 天前
感谢
T3MK3KENFNNY 已兑换
ychen997
187 天前
3J4YP74HMNRE 已用感谢
Phant0m
187 天前
NNR4WRJ4LLXT 已用 感谢🙏
mylofsh
187 天前
老板还能再分享吗?
wdxbb
187 天前
全部没了,求再发
Love4Taylor
187 天前
> 首先完成了 MacOS 上的适配

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

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

A4N3R4FALL36

TYJLHP4FFMMW

T3PFX7PJ3LAT

3PXMPKX6KYWW

NNYA3ETLLPAF

L9T3HF369YTW

ETTWFAJPX6KK

LR974EEW3MK6

7P7RMH44WEP7

PTW4ALMN6NP3
onetown
16 天前
@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
16 天前
@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