FCFlenkchy/FCAE_VPN · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
FCAE VPN
一款专为高度受限网络设计的审查规避客户端。它会自动发现可达路由,建立加密隧道,并为您的应用程序暴露本地 SOCKS5/HTTP 代理。
基于 Aether 构建,提供 Windows、Linux、macOS 和 Android 的原生 GUI 前端。
工作原理
FCAE VPN 连接到 Cloudflare 的 WARP 网络 —— 即 Cloudflare 1.1.1.1 DNS 服务背后的同一基础设施。流程如下:
- 账户配置 — 首次启动时,客户端会创建一个 WARP 设备身份,并从 Cloudflare 的注册 API 获取专用的 IPv4/IPv6 地址以及 WireGuard 密钥对。
- 端点扫描 — 客户端会探测跨多个端口的 Cloudflare 边缘 IP 列表,以找到可达的网关。每个候选项都会通过真实握手(在 ironclad 模式下可选地通过完整的 HTTP 请求)进行验证,以确认路由确实能传输流量。
- 隧道建立 — 一旦找到可用的边缘节点,就会打开一个加密隧道:
- MASQUE — 使用
CONNECT-IP方法,将流量封装在 HTTP/3 (QUIC) 或 HTTP/2 (TLS) 会话中,使其在 DPI 系统看来像是正常的 HTTPS 流量。 - WireGuard — 直接到边缘节点建立标准的 WireGuard UDP 隧道。
- WARP-in-WARP (gool) — 两个嵌套的 WireGuard 隧道,用于提供额外的加密层。
- MASQUE — 使用
- 本地代理 — 隧道暴露一个本地 SOCKS5 代理(端口 1819)和 HTTP 代理(端口 1820)。配置为使用这些代理的应用程序会通过加密隧道,经由 Cloudflare 的网络将流量路由到互联网。
客户端与 Cloudflare 之间的所有流量都是加密的。从 Cloudflare 开始,流量正常退出到公共互联网。
架构图
┌─────────────────────────────────────────────────────────────────────┐
│ Your Application │
│ (browser, app, or system traffic via TUN) │
└──────────────────────────────┬──────────────────────────────────────┘
│ SOCKS5 :1819 / HTTP :1820
▼
┌─────────────────────────────────────────────────────────────────────┐
│ FCAE VPN Client │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌──────────────┐ │
│ │ Netstack │ │ Scanner │ │ Obfuscat. │ │ Health Mon. │ │
│ │ (TCP/IP) │ │ (endpoint │ │ (aether- │ │ (reconnect │ │
│ │ │ │ discovery)│ │ noize) │ │ on fail) │ │
│ └──────┬─────┘ └────────────┘ └────────────┘ └──────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Encrypted Tunnel │ │
│ │ ┌───────────┐ ┌──────────────┐ ┌──────────────────┐ │ │
│ │ │ MASQUE │ │ WireGuard │ │ WARP-in-WARP │ │ │
│ │ │ HTTP/3/2 │ │ (UDP) │ │ (WG inside WG) │ │ │
│ │ └─────┬─────┘ └──────┬───────┘ └────────┬─────────┘ │ │
│ └─────────┼────────────────┼────────────────────┼──────────────┘ │
└────────────┼────────────────┼────────────────────┼──────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────┐
│ Cloudflare WARP Edge │
│ (162.159.192.x — automatic discovery) │
└──────────────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Public Internet │
└─────────────────────────────────────────────────────────────────────┘
协议对比
| 协议 | 传输层 | 深度包检测(DPI)抗性 | 速度 | 使用场景 |
|---|---|---|---|---|
| MASQUE (HTTP/3) | QUIC over UDP | 最佳 — 外观类似 HTTPS | 快 | 默认选项,抗审查能力最强 |
| MASQUE (HTTP/2) | TLS over TCP | 最佳 — 外观类似 HTTPS | 快 | QUIC 被封锁时的回退方案 |
| WireGuard | UDP | 中等 — 已加密但可检测 | 最快 | 当 UDP 被允许时 |
| WARP-in-WARP | 嵌套 UDP | 高 — 双重加密 | 中等 | 当仅使用 WG 被封锁时的额外层 |
功能
- 支持端到端数据平面验证的自动端点发现
- 支持 MASQUE (HTTP/3 QUIC / HTTP/2)、WireGuard 和 WARP-in-WARP (gool)
- 支持可配置配置文件(profiles)的流量混淆
- 支持快速重连的自动重连
- 本地 SOCKS5 和 HTTP 代理
- 所有平台原生 GUI(桌面端为 ImGui + DirectX11 / OpenGL,Android 端为 Kotlin Material UI)
内联路由规则
您可以直接在 UI(Routes 选项卡)中定义自定义路由规则,无需外部文件。规则使用简单格式:
[direct]ip:190.9.2.4,192.33.45.6:400,example.com
[block]gazo.com,10.0.0.0/8,keyword:ads
格式:
[direct]— 匹配这些规则的流量绕过 VPN(直连)[block]— 匹配这些规则的流量将被完全阻止- 条目以逗号或换行符分隔
- 无前缀的条目默认为
[direct]
支持的规则类型:
| 类型 | 示例 | 描述 |
|---|---|---|
| 裸域名 | example.com | 匹配域名及其所有子域名 |
| 完整域名 | full:example.com | 仅精确匹配域名 |
| 关键词 | keyword:ads | 如果域名包含关键词则匹配 |
| 正则表达式 | regexp:^ad[0-9]+\. | 正则表达式模式匹配 |
| IP / CIDR | 10.0.0.0/8, 1.2.3.4 | IP 地址或 CIDR 范围 |
| 端口 | port:25, port:3000-3010 | 端口或端口范围 |
| 私有 | private | 所有局域网/私有 IP |
| 带端口的 IP | 192.33.45.6:400 | 带有特定端口的 IP 地址 |
在桌面上: 打开 Routes 选项卡,并将规则粘贴到 "Inline Routing Rules" 文本框中。
在 Android 上: 滚动到 "Inline routing rules" 并输入您的规则。点击 CONNECT 以应用。
通过内联输入设置的规则具有优先级,并与 "Routing Rules File" 字段中指定的任何规则文件合并。
平台
| 平台 | 后端 | UI |
|---|---|---|
| Windows | DirectX 11 | ImGui |
| Linux | GLFW + OpenGL | ImGui |
| macOS | GLFW + OpenGL | ImGui |
| Android | Kotlin Material VpnService + JNI bridge | Kotlin Material UI |
截图
构建
要求
- Rust(最新稳定版)
- C/C++ 编译器(GCC/Clang/MSVC)
- CMake >= 3.22
- Vulkan SDK 或 DirectX SDK(Windows)
- 针对 Android:NDK、Android SDK、Kotlin
首先构建 Rust 引擎
cargo build --manifest-path core/Cargo.toml -p aether-ffi --release
构建原生 GUI
cmake -B build -DAETHER_TARGET=LINUX_X64
cmake --build build --config Release
目标:LINUX_X64, WIN_X64, MACOS_ARM64, MACOS_X64, ANDROID_ARM64.
Android
在 Android Studio 中打开 android/ 并构建。Gradle 配置会自动调用 CMake 并传入 ANDROID_ARM64。
致谢
- Aether — 由 CluvexStudio 开发的核心审查规避引擎。提供 MASQUE、WireGuard 和 WARP-in-WARP 协议。
- Dear ImGui — 即时模式 GUI 库,用于所有原生桌面渲染。
- Quiche — Cloudflare 的 HTTP/3 和 QUIC 实现。用作 MASQUE 协议支持的 QUIC 传输后端。
- Wintun — 由 WireGuard 开发的 Windows TUN 驱动程序。在第三层提供高性能网络接口以用于隧道流量。
- tun2socks — 一个 Go 库,可透明地将 TUN 设备流量通过 SOCKS5 代理路由。驱动系统级 VPN TUN 模式。
贡献
欢迎贡献!无论是 bug 报告、功能请求、文档改进还是代码贡献——请随时提交 issue 或 pull request。
如何贡献
- Fork 该仓库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交你的更改(
git commit -m 'Add amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 发起 Pull Request
许可证
请参阅各个组件以了解其各自的许可证。