架构

架构图

下图展示 MintFlow 网络扩展,以及应用流量如何进入网络处理栈。图中的组件名称保留英文。

MintFlow 网络扩展架构

重要概念

UTUN 接口

网络扩展在 iOS 上运行时,Apple 会分配 UTUN 接口。系统可以按 IP 地址通过最长前缀匹配(LPM)将数据包路由到 UTUN,再由网络扩展进程处理。

默认情况下,MintFlow 将应用流量引入 UTUN,以便进行高级分流和过滤。

“排除 LAN 网络”设置可让以下常见局域网地址范围不进入 UTUN:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

如果远程 L3VPN 网络使用这些地址范围,请勿排除局域网,否则将无法通过 VPN 访问这些网络。具体排除范围以应用设置与编译结果为准。

VPPRS(MintFlow 2.0.0)

VPPRS 是受 fd.io VPP 启发、用 Rust 实现的向量化数据包处理核心,已替代当前 Apple 产品中的旧 VPP 运行时。它负责路由选择、数据包处理、WireGuard/AmneziaWG 路径,并将流和数据报接入共享 代理与 HTTP 运行时。

DNS 服务器

启用应用分流时,MintFlow 启动内部 DNS 服务器,处理 iOS 和应用发起的域名查询。

匹配域名集合的路由规则决定 DNS 策略。DNS 结果向 VPPRS 提供目标路由提示,出口可为 L3VPN、L4PROXY、直连、DROP 或 REJECT。可选的静态主机记录与 tailnet 派生 IPv4 记录由 MintFlow DNS 提供,但不能替代流量路由规则。

HTTP 引擎

HTTP 引擎检查匹配的 TCP 流量、记录 HTTP/HTTPS 会话,并应用 URL 或 jq/JavaScript 正文重写。HTTPS 解密需要受信任的本地 CA。停止的会话可导出给智能体分析,也可导入包含正文规则和脚本的 MFHRB 文件。

L3VPN 与 L4 代理

WireGuard 和 AmneziaWG 集成在 VPPRS 中。实验性 Tailscale 使用内嵌提供者管理 tailnet 身份和传输,仍由 VPPRS 选择路由。

Rust 实现 L4 代理,通过进程内带类型的流/数据报桥接与 VPPRS 连接。旧 VPP 文章属于实现历史,不代表 2.0.0 的运行架构。

阅读本页 Markdown