返回首页
最新
嗨,HN,
我刚刚获得了苹果对 MintFlow NetStack 1.1.0 的批准,该版本引入了应用级路由功能。我觉得这是一个分享项目及其开发背后技术背景的好时机。
在过去的两年里,我基于 Tailscale 构建了两个 iOS VPN 应用。我非常欣赏它们出色的文档和高质量的代码。然而,我希望在客户端方面有更多的灵活性,特别是在本地路由和分流方面。虽然 Tailscale 现在提供了应用连接器功能,但我的使用案例要求一切都在本地运行,而不需要中央协调器来分发 DNS 路由。
由于我已经与 fd.io VPP 工作了一段时间,并且非常喜欢它的架构,我决定尝试在其基础上构建一个基于 WireGuard 的 VPN 应用。VPP 有一个 WireGuard 插件,基于 FreeBSD 的实现(尽管并未积极维护)。我面临的第一个挑战是将 VPP 核心移植到 Darwin(iOS/macOS 的底层操作系统)。得益于最近通过 epoll-shim 提供的 FreeBSD 支持,这虽然复杂但可行,最终我成功地在 macOS 上运行了 VPP。
从那里,我将苹果的 utun 接口与 VPP 的主机栈进行了桥接,处理 BSD 套接字的输入/输出,最终得到了一个可工作的应用。版本 1.0.0 以基于 CIDR 前缀的基本分流功能发布,但这感觉太有限了。
因此,上个月,我添加了一个使用 hickory-dns(基于 Rust 的)内部存根 DNS 解析器,并启用了 VPP 的主机栈,以从苹果的隧道接口重建 TCP/UDP 连接,并通过本地接口(Wi-Fi/蜂窝网络)转发它们。这解锁了更细粒度的路由功能——例如选择性地通过 WireGuard 发送特定流量,保持其他流量在本地,或者完全使用 VPP 的黑洞功能阻止路由。
我很乐意讨论技术细节。没想到我在 2025 年仍然会为 iOS 应用核心编写 C 代码——尽管 Rust 现在也是技术栈的一部分。我最初尝试使用 c-ares 进行 DNS 解析,但选择了 Rust,以便更快地推进并学习一些新东西。
构建这个项目非常有趣。目前,MintFlow 是一款一次性购买的付费应用。我计划继续扩展它——VPP 的积极开发意味着我可以在未来的版本中添加基于 MITM 的 HTTPS 捕获和更高级的路由等功能。
以下是链接:
App Store: [https://apps.apple.com/us/app/mintflow-netstack/id6742394218](https://apps.apple.com/us/app/mintflow-netstack/id6742394218)
网站: [https://mintflow.643216.xyz](https://mintflow.643216.xyz)
谢谢!
在经历了20多个产品的失败后,我在2-3天内又开发了一个新产品!希望它还不错!这次的产品是让人们测试自己的美丽,并会给出一个美丽测试分数。虽然不是很严肃,但可能会有点有趣!试试看,给我一些反馈吧!!
我为什么要制作这个产品呢?
作为一名女性,有时候我对自己的面容并不太自信,而我们都知道白雪公主和她继母的故事。我希望能有一个产品,既能给人们带来自信,又能增添一些乐趣!
最小新闻
一个快速、简约且眼睛舒适的 Hacker News 阅读器,基于 Next.js 和 Tailwind CSS 构建。该项目专注于干净的用户界面和使用现代网页技术的高效数据获取。
<a href="https://minimal-news-seven.vercel.app/" rel="nofollow">https://minimal-news-seven.vercel.app/</a>
功能
- 浏览热门、新增、问答 HN、展示 HN 和职位故事。
- 查看单个故事的详细信息和评论。
- 针对不同屏幕尺寸的响应式设计。
- 眼睛舒适的主题,提供舒适的阅读体验。
- 动态元数据和基本的 SEO 实现。
- 使用 Suspense 实现内容和分页的独立加载状态。
- 细腻的入场动画,提升用户体验。
使用的技术
- 框架:Next.js(应用路由)
- 语言:TypeScript
- 样式:Tailwind CSS
- UI 组件:Shadcn UI
- 动画:tw-animate-css
- 数据获取:服务器组件、fetch API、内部 API 路由
- 外部 API:Hacker News API
- 源代码:<a href="https://github.com/yasseen-codes/minimal-news">https://github.com/yasseen-codes/minimal-news</a>
请给我反馈,如果你喜欢这个项目,请给我一个星星 :)