架構

架構圖

下圖說明 MintFlow 網路延伸功能,以及 App 流量如何進入網路處理堆疊。圖中的元件名稱保留英文。

MintFlow 網路延伸功能架構

重要概念

UTUN 介面

網路延伸功能在 iOS 執行時,Apple 會配置 UTUN 介面。系統可依 IP 位址,透過最長前綴比對(LPM)將封包路由至 UTUN,再由網路延伸功能的程序處理。

MintFlow 預設將 App 流量引入 UTUN,以進行進階分流與篩選。

「排除 LAN 網路」設定可讓下列常見區域網路位址範圍不進入 UTUN:

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

若遠端 L3VPN 網路使用這些位址範圍,請勿排除區域網路,否則將無法透過 VPN 存取這些網路。實際排除範圍請以 App 設定與編譯結果為準。

VPPRS(MintFlow 2.0.0)

VPPRS 是受 fd.io VPP 啟發、以 Rust 實作的向量化封包處理核心,已取代目前 Apple 產品的舊 VPP 執行階段。它負責路由選擇、封包處理、WireGuard/AmneziaWG 路徑,並將串流與資料報接入共用 代理伺服器及 HTTP 執行階段。

DNS 伺服器

啟用 App 分流時,MintFlow 會啟動內部 DNS 伺服器,處理 iOS 與 App 發出的網域查詢。

符合網域集合的路由規則決定 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