MintFlow
MintFlow 菜单

MintFlow 1.9.0 发布

MintFlow 1.9.0 发布

近期 MintFlow 1.9.0 已在 iOS Apple Store 上线。

本版本通过“Designed for iPad”目标开启了 macOS 商店可见性,这意味着应用现在可在搭载 Apple Silicon 的 macOS 设备上运行。

以下是本次更新中值得关注的内容。

DNS 架构重构

付费用户专享的应用路由功能是多个高级能力(包括按域名分流、HTTP 抓包和改写)的基础。

该能力本质上是一个内部 DNS 服务器,负责处理来自各应用和 iOS 系统的 DNS 查询。这样我们可以在 MintFlow 的路由表中,根据用户设置的路由规则,动态将流量指向代理和 VPN 等不同目标(得益于 fd.io VPP 带来的灵活路由能力)。

之前,我们并不打算再从 192.88.99.0/24(预留 IPv4 地址段)再额外占用一个 IP 给内部 DNS 服务,而是只使用了两个 IP:

  • 192.88.99.2:推送给 iOS 系统的 utun IP 地址
  • 192.88.99.1:MintFlow 的内部 utun 对端接口(也由 fd.io VPP 提供),因此可以响应 ping

随后我们把 192.88.99.2 下发为 iOS 的 DNS,并将内部 DNS 绑定到 utun 接口监听知名 UDP 53 端口。这种方式在 iOS 可用,但在 macOS 下不可用,说明所谓“Designed for iPad”场景存在实现差异。

因此在 1.9.0 中我们最终进行了一次架构重构,简要如下:

我们为内部 DNS 分配了新地址 192.88.99.3,并在 fd.io VPP 引擎内处理 DNS 查询,再通过 IPC 机制与内部 DNS 服务通信(该服务使用 Rust 实现)。

从 iOS 系统角度,它把 192.88.99.3 当作 DNS 服务器。系统向该地址发起查询后,由我们接收后转发到内部 DNS;内部 DNS 会依据 DomainSet 路由规则和 DNS 回退规则(若查询域名未命中任何 DomainSet)进行解析,最终沿原路径返回结果。

该方案在 macOS 也能正常工作,因此本版本重新启用了“Designed for iPad”目标。

我们计划今年内继续推进独立 macOS 构建,因为在 macOS 上能用更强的方法接入系统流量,也将带来更多能力,例如按应用 Bundle ID 分流(iOS 上无法使用)。

DoT/DoH 支持

不少用户提出该需求,因此我们在 1.9.0 中加入了 DoT/DoH。

此特性仅对付费用户开放,因为 DoT/DoH 由我们控制更完整的内部 DNS 提供支持。

另外补充说明:在 MintFlow 中,我们有两套 DNS 配置。一套用于直接流量(从手机网络发出,可为蜂窝或 Wi-Fi),另一套用于 VPN 流量(由用户配置的三层 VPN 下的四层代理转发)。两套都可以配置 DoT/DoH;如果同时配置了传统 DNS 与 DoT/DoH,默认会优先使用 DoT/DoH,以获得更高隐私保护。

对于 VPN 流量,如果你使用域名方式配置 DoT/DoH,还必须配置 VPN-DNS-SERVER-DOMAINS 路由规则,这是因为需要先解析 DoT/DoH 服务器的 IP 后才能发起加密 DNS 查询。DNS 配置中还新增了 bootstrap-dns,它有良好默认值,通常无需手动设置。

AmneziaWG 1.5 与 2.0 支持

MintFlow 基于 fd.io VPP,具备原生 WireGuard 插件,兼容性与稳定性都较好。

此前我们基于同一 WireGuard 插件发布过 AmneziaWG 1.0;但部分用户需要更强的混淆能力,因此要求支持 1.5 和 2.0。

本版本已支持该需求,并提供兼容部分 GitHub 上 AmneziaWG 2.0 安装器的配置导入。

Shadowsocks2022 支持

与旧版 AEAD Shadowsocks 相比,Shadowsocks2022 是一种新的加密套件,并对线路格式做了部分调整。

在 1.9.0 中,我们新增了 2022 套件中的全部 3 种加密方式;若服务器支持,也新增了 UDP 转发支持。

诊断工具

我们新增了多种诊断工具,例如 VPN 与 Proxy 诊断。开启 MintFlow VPN 时,它可在不经过 iOS 系统网络栈的情况下检查不同 VPN/Proxy 的可达性;当你某个 VPN/Proxy 在诊断中显示正常但实际无法使用时,可再次核对你的配置并参考 MintFlow 手册。

我们还新增了配置诊断工具,可抓取当前生效的配置及其编译后形态(由运行时加载),从而帮助你判断是否存在配置错误。

界面优化

我们持续优化 UI,持续沉淀开发经验,比如配色一致性和字体样式一致性。

最后

自 MintFlow 1.0.0 于 iOS App Store 上线以来,已经过去约 15 个月,共发布了 8 个版本。应用形态持续成熟,也已经成为我们日常使用的工具。

我们将持续提高 MintFlow 的功能完整性与稳定性。

一如既往,欢迎发邮件给我们分享反馈和建议。