English
·
简体中文
·
日本語
·
한국어
·
Русский
·
فارسی
# Usque
Usque 是面向 Windows、Linux 和 Android / Android TV 的兼容 Cloudflare® WARP® 服务的非官方客户端。它将系统 VPN、SOCKS5 和 HTTP 代理整合在原生 Flutter 界面中,由 Rust MASQUE 引擎提供网络能力。
> [!IMPORTANT]
> 请仅从 [GitHub Releases](https://github.com/GeorgeXie2333/usque-app/releases) 下载正式安装包。Pull Request 构建、本地构建及未打标签的二进制均非正式发布。开发分支文档可能包含尚未发布的改动;请以安装包对应的发布说明和标签下文档为准。
Usque 为独立项目,与 Cloudflare, Inc. 无隶属、赞助或背书关系。 Cloudflare 和 WARP 是 Cloudflare, Inc. 在美国及其他司法管辖区的商标和/或注册商标。 使用个人版 WARP 服务仍须遵守 Cloudflare 的适用条款与隐私政策。
## 界面展示
|
Windows
|
Android
|
当前源码渲染的英文界面预览,展示未连接状态。
## 下载与安装
本分支准备 **v0.3.3 / 0.3.3+29**,带来 Linux 桌面版、可选 Proton VPN 和日常连接体验改进。已发布版本请以 [GitHub Releases](https://github.com/GeorgeXie2333/usque-app/releases) 及对应标签下文档为准。本版计划提供十二种用户安装入口,另有两个仅供应用内更新使用的 Windows MSI 文件:
| 平台 | 最低系统 | 安装包 |
| --- | --- | --- |
| Windows | Windows 10 2004,Build 19041 | x64-v2 安装程序 EXE 或 ARM64 安装程序 EXE |
| Linux(v0.3.3) | Ubuntu 22.04+、Debian 12+、受支持的 Fedora;systemd | amd64 / arm64 × AppImage / deb / rpm |
| Android / Android TV | Android 8.0,API 26 | arm64-v8a、x86_64 或 armeabi-v7a APK |
| Android / Android TV | Android 8.0,API 26 | 包含上述三种 ABI 的通用 APK |
Linux 提供通用 x86-64 与 ARM64 的 AppImage/deb/rpm,请在安装前验证 Ed25519 签名清单。AppImage 首次使用 VPN 时需要管理员授权安装后台服务;凭据依赖已解锁的 Secret Service 钥匙串。[Linux 桌面指南](docs/LINUX_DESKTOP.md) 说明 GNOME/KDE、X11/Wayland、恢复流程与已测试范围。
请选择与设备架构匹配的安装包。Windows x64 需要支持 **x86-64-v2** 的 CPU;ARM64 Windows 使用原生 ARM64 安装包。不清楚 Android 设备架构时,可使用体积更大的通用 APK。安装前,将软件包 SHA-256 与 `SHA256SUMS` 及 GitHub 显示的文件校验值比对,再核验发布说明中的签名者指纹。任何一项不一致都应停止安装。
1.0 之前的 Windows/Android 安装包使用项目自行管理的固定自签名证书。Windows 可能显示“未知发布者”警告;Android 安装包不通过 Google Play 分发。不要通过关闭杀毒软件、防火墙或导入非官方安装包提供的证书来绕过警告。
升级、卸载、恢复及 Android 开发者验证说明见[安装指南](docs/INSTALLATION.md),官方签名身份见[代码签名策略](docs/CODE_SIGNING.md)。更新下载需要用户确认,安装通过平台安装程序完成,不会未经确认自动安装。
从 v0.3.1 升级会将配置从 schema 24 迁移至 26,v0.3.1 及更早客户端无法读取。升级前请查看[配置兼容性](docs/INSTALLATION.md#configuration-compatibility-when-upgrading)并安排所需备份;重新安装旧版不会逆转迁移。
## 首次连接
1. 按[安装指南](docs/INSTALLATION.md#verify-before-installing)核验正式安装包,安装后打开 Usque。
2. 完成首次启动的权限与条款步骤。Android 引导只申请可选通知权限,连接需要 VPN 输出时才申请系统授权,授权可能断开其他 VPN;仅本地代理连接不申请。注册个人版 WARP® 账号,也可以填写 WARP License Key。若设置中断,先检查已保存结果再重新注册。目前不支持导入新的 WARP Secret。
3. 打开“代理”,在“本机流量”中开启“虚拟网卡”(Windows)或“VPN”(Android),并在各自分组顶部开启“SOCKS5 代理”或“HTTP 代理”,然后在主页连接。开关立即生效,监听地址和端口的修改需要点击“应用修改”。
| 联网方式 | 用途 |
| --- | --- |
| VPN/TUN | 让系统流量经过隧道,并遵循绕过规则和 Android 分应用设置。 |
| SOCKS5 | 为支持它的应用提供本地 TCP/UDP 代理,默认通过远程 DNS 查询域名。 |
| HTTP 代理 | 为支持它的应用提供本地 HTTP 代理,也支持通过 CONNECT 访问 HTTPS。 |
| Windows 系统代理 | 将 Windows 的代理设置指向 Usque;需同时启用 HTTP 代理。 |
VPN、SOCKS5 和 HTTP 默认开启,Windows 系统代理默认关闭。它们共用一条 WARP 连接,可以同时使用。
全部关闭后,WARP 连接仍会保持,但不再承载任何应用流量。
每个账号单独保存凭据,一次只能使用一个账号连接;网络设置由所有账号共享。
## 主要功能
- 可选的[链式代理](docs/CHAIN_PROXY.md):在“代理 → 链式代理”依次选择 **OpenVPN**、
**WireGuard**、[**WARP via WireGuard**](docs/WARP_WIREGUARD.md)、[**Proton VPN**](docs/PROTON_VPN.md)、**VPN Gate**、**HTTP** 或 **SOCKS5**。
原生 Proton 来源仍在验证中;实网登录、真人拼图和完整隧道尚未实测。
VPN 配置支持文件或文本导入,HTTP/SOCKS5 通过表单添加,保存后选用并应用。
VPN、SOCKS5 和 HTTP 共用最终出口,显式直连规则仍然生效。此功能默认关闭。
- 可手动启用[实验性 L4 模式](docs/L4_PROXY.md),通过 HTTP/3 代理 TCP 流量。
未启用 OpenVPN TCP 链式出口时,它不转发普通 UDP 流量,需要 UDP 的应用可能无法正常使用。自动模式不会选择 L4。
- 自动尝试 HTTP/3,失败时回退到 HTTP/2,并尝试通过 IPv4 和 IPv6 寻找可达入口。
H3 在支持的网络切换场景下可以迁移连接,详见[路径行为](docs/h3-path-infrastructure.md)。
- 全隧道 VPN、隧道内 DNS、Kill Switch(断网保护)、局域网访问和 [DIRECT/REJECT/PROXY 分流及 Ads 广告拦截](docs/ROUTING.md)。自定义域名、IP 和 CIDR 支持更具体的例外规则,保存时检查冲突。 开启广告拦截并应用后自动准备规则,应用运行期间每 7 天检查更新,新请求无需重连即可生效;规则详情提供状态、来源和手动更新。
- 自定义 [WARP 出口 DNS](docs/WARP_DNS.md):打开“设置 → 高级网络设置 → WARP DNS”,选择普通 DNS、DoH 或 DoT,再点击“应用修改”。修改 DNS 会重新连接当前会话;最终链式出口仍使用自己的 DNS 策略。
- 可选的按国家直连:单独下载所选国家的 GeoIP 数据和全局 GeoSite 域名规则。
能看到域名时按域名判断,否则按 IP 判断;无法识别的目标继续走隧道。
- 本地[网络诊断](docs/network-doctor.md)和网络质量页面,展示延迟、丢包率及其测量状态、队列和最近 60 秒的趋势。
标准检查只读取本地状态;深度检查会在你确认后发送测试请求。
- Windows 支持托盘(状态角标、虚拟网卡与系统代理开关,窗口在后台时,持续五秒的重连、连接错误和已通知中断后的恢复会弹出通知)、单实例、开机启动、关闭窗口后最小化到托盘、记住窗口位置和键盘快捷键。
**Ctrl+1~4** 切换页面,**Ctrl+S** 应用修改,**F5** 刷新 VPN Gate 或诊断。详见[托盘与快捷键操作](docs/INSTALLATION.md#tray-and-keyboard-controls)。
Android 支持快捷设置磁贴、启动器快捷方式、开机恢复和电视遥控器导航。
提供 21 种语言,以及浅色、深色主题。
- 可在确认后将个人版 WARP Secret 导出到指定文件。Usque 目前无法重新导入该文件,因此它不能用于重装后的账号恢复。
Android 的“分应用代理”对所有账号生效。关闭时,所有应用都使用 VPN;开启后,只有勾选的应用使用 VPN,
新安装的应用需要手动勾选。如果同时启用了系统的“阻止未使用 VPN 的连接”,未勾选的应用将无法联网。
## 隐私与限制
- 强制校验 WARP 服务端公钥,不提供跳过校验的选项。凭据保存在 Windows 凭据管理器或 Android Keystore 中。
Windows 由独立 Agent 执行需要管理员权限的网络操作;Android 使用独立的 VPN 进程。
- 代理默认仅供本机使用。SOCKS5 和 HTTP 支持可选的用户名、密码认证;未配置凭据时不要求认证。
仅使用代理不能提供系统级 VPN 断网保护。
- 诊断在本地生成并脱敏,不进行用户行为统计,也不自动上传。网络质量历史只保留在内存中。
日志默认为 INFO,最多保留 7 天或 20 MiB。不要将凭据或原始诊断包放入公开 Issue;漏洞请通过 [SECURITY.md](SECURITY.md) 私密报告。
- Android 应用内的断网保护无法在 VPN 进程结束后继续工作。VPN Gate 无法继续连接时,也会断开 VPN。
如果需要在 VPN 结束后继续阻止应用联网,请同时开启系统的“始终开启的 VPN”和“阻止未使用 VPN 的连接”。
操作方法见 [Android 安装说明](docs/INSTALLATION.md#android-and-android-tv)。
- Usque 不会通过多条路径叠加带宽。部分指标无法测量,例如 HTTP/2 的丢包率和 PMTU。
本地诊断无法检测流量泄漏。
### DNS 隐私
按国家及自定义域名直连默认使用 **当前网络的 DNS**:匹配规则的域名查询会发送给当前网络使用的 DNS 服务器,位于 VPN 隧道之外。
也可以选择 **DoH** 并填写完整 HTTPS 地址,或选择 **DoT** 并填写服务器域名和端口。
新草稿预填 Cloudflare,已保存的自定义配置保持不变。
查询会发送给该服务器;连接失败时不会改用明文 DNS。详见[配置步骤与示例](docs/encrypted-direct-dns.md)。
其他远程 VPN 查询使用 WARP 隧道或所选最终链式出口。HTTP/SOCKS5 链 DNS 默认经该代理使用
校验 TLS 的 Cloudflare® DoH;自定义或非默认继承 DNS 保留 TCP。在这两种出口下,应用指定的 UDP/53
查询转换为发往该解析器的 TCP,不回退到物理 DNS。详见[链 DNS 选择](docs/CHAIN_PROXY.md#http-and-socks5-exits--http-与-socks5-出口)。
应用自行使用加密 DNS 时,Usque 看不到域名,此时按 IP 判断是否直连。
断开连接后下载规则,也仍受 Android 系统阻断设置和尚未解除的 Windows 断网保护约束。
### 实验性功能与支持范围
[Zero Trust 注册](docs/ZERO_TRUST_EXPERIMENTAL.md)仍属实验性功能:可以用组织身份建立 MASQUE 公网隧道,
但不提供完整的 Cloudflare One™ Client 功能。仓库保留 macOS 源码,但不构建或发布;
当前也不提供 iOS 版本、应用商店分发或公开命令行工具。
## 默认网络设置
| 设置 | 默认值 |
| --- | --- |
| 个人版端点模式 | 自动选择;升级保留已有自定义设置 |
| 保存的自定义端点 IPv4 | `162.159.198.2` |
| 保存的自定义端点 IPv6 | `2606:4700:103::2` |
| 端口 / SNI | `443` / `speed.cloudflare.com` |
| 传输 | 自动:先 HTTP/3,再 HTTP/2 |
| HTTP/3 拥塞控制 | `cubic`;可选择 BBRv2、实验性 BBRv3 和 `reno` |
| QUIC UDP 接收缓冲 | Windows/Android 的 H3、L4 均以 [2 MiB 为目标](docs/UDP_RECEIVE_BUFFER.md)申请;实际容量由系统决定 |
| TUN MTU | `1280` |
| 备用 DNS | `1.1.1.1`、`2606:4700:4700::1111` |
| SOCKS5 | `127.0.0.1:1080`、`[::1]:1080` |
| HTTP 代理 | `127.0.0.1:8080`、`[::1]:8080` |
修改代理地址和端口后,需要点击 **应用修改** 才会提交。代理默认通过当前出口解析:在高级设置中配置 [WARP DNS](docs/WARP_DNS.md),或在链式配置中设置最终出口 DNS。代理页不再提供 DNS 设置;旧版本保存的代理 DNS 选择继续生效。
高级设置中的重置只会填入默认值,仍需提交才会生效。
Zero Trust 端点初始使用注册地址。在高级网络设置中选择 **编辑 Zero Trust 端点**,阅读红色全屏警告,勾选确认风险及使用授权后编辑 IPv4/IPv6,再点击 **应用修改**。恢复默认会暂存注册地址;重新登录会恢复注册地址并移除自定义地址。当前账号配置自定义 Zero Trust 地址,或当前 ZT 连接仍在使用自定义地址时,首页会常驻不可关闭的风险提示。
高级网络设置的“自动选择”会并发连接账号可用的端点;“自定义”保留手动地址。端口和 SNI 在两种模式均可修改。详见[自动选择端点](docs/NETWORK_SETTINGS.md#automatic-endpoints--自动选择端点)。
拥塞控制的更改会保存,并在下一次手动连接或重试时生效,不影响当前会话及其自动重连。HTTP/2 使用系统 TCP。详见 [HTTP/3 拥塞控制](docs/congestion-control.md)。
## 文档与开发
从 [Wiki 使用指南](https://github.com/GeorgeXie2333/usque-app/wiki/Home-zh-CN)开始,查找设置步骤与实用教程;完整参考见[文档索引](docs/README.md),技术文档目前以英文为主。
| 需要了解 | 阅读文档 |
| --- | --- |
| 安装、更新、卸载与恢复 | [安装指南](docs/INSTALLATION.md) |
| 原生 Proton 游客/账号准备 | [Proton VPN 使用指南与当前限制](docs/PROTON_VPN.md) |
| 通过 WARP 隧道连接 Proton VPN | [WireGuard over MASQUE 教程](https://github.com/GeorgeXie2333/usque-app/wiki/Proton-VPN-over-MASQUE-zh-CN) |
| 本地网络质量检查 | [Network Doctor](docs/network-doctor.md) |
| 安全地构建和测试改动 | [贡献指南](CONTRIBUTING.md) |
| 实现与验证状态 | [实现进度](docs/IMPLEMENTATION.md) |
| 维护正式发布 | [发布流程](docs/RELEASE.md) |
请遵循贡献指南中的固定工具链和按改动范围划分的检查。仅编译构建和确定性测试可在开发机进行;安装开发包或测试 VPN 生命周期必须使用规定的隔离环境。
## 上游与许可
协议与行为参考 [Diniboy1123/usque](https://github.com/Diniboy1123/usque)。本仓库在 `oracle/go` 中保存一份快照,供互操作测试使用。Flutter 界面与 Rust 引擎为本项目新实现。上游版权声明见许可证。
第一方源码采用 [MIT License](LICENSE.md),第三方组件保留各自许可证。可选的[链式代理](docs/CHAIN_PROXY.md)内嵌 OpenVPN 3 Core(MPL-2.0)和 Mbed TLS(Apache-2.0)。对应源码、补丁和许可文本保存在 `third_party`;应用中的 VPN Gate 页面可查看原生依赖许可声明。
WireGuard 使用 BoringTun 0.7.1(BSD-3-Clause),本地 SVG 图标使用 flutter_svg 2.3.0(MIT);相应声明已纳入应用许可证列表。
独立 Proton SRP 实现参考 Proton go-srp(MIT);其[版权声明与完整许可](apps/usque_gui/assets/licenses/proton-srp.txt)保留在源码、测试向量及应用许可证列表中。
---
Cloudflare、WARP 和 Cloudflare One 是 Cloudflare, Inc. 在美国及其他司法管辖区的商标和/或注册商标。