9 个版本
新 0.2.0-alpha.12 | 2024 年 8 月 17 日 |
---|---|
0.2.0-alpha.11 | 2024 年 8 月 13 日 |
0.2.0-alpha.10 | 2024 年 8 月 12 日 |
1871 在 网络编程
每月 下载 1,066 次
675KB
6.5K SLoC
包含 (DOS exe, 91KB) windows-lib/WinDivert64.sys, (DOS exe, 76KB) windows-lib/WinDivert32.sys, (Windows DLL, 44KB) windows-lib/WinDivert.dll, (静态库, 26KB) windows-lib/WinDivert.lib
Geph5
Geph5 是对 Geph4 的一次重大重写,具有一些与 Geph4 不同的重大架构差异,主要目的是 简化设计并大量清理
概述
sosistab2
或任何类似的在不可靠管道上构建可靠传输的东西不再使用。相反,混淆传输本身必须提供可靠传输。在实践中,这意味着基于 TCP 上的流进行多路复用,而不是数据包和 UDP。- 客户端不再有复杂的逻辑来智能地热插拔管道。鉴于不同的网络环境、极不准确/迟钝的手机时钟等,这已被证明是难以实现的。相反,启动一个会话并使用它,直到它断开,然后启动另一个会话等。只要有足够快的会话创建,唯一明显的区别就是代理 TCP 连接重置,这对于大多数应用程序来说都可以优雅地处理。
- 中心认证服务器称为 代理,而不是绑定器。它现在使用简单的 JSON-RPC API,没有端到端加密,完整性关键响应具有 ed25519 签名。
- 与基于 RSA 盲签名的实现相比,mizaru2 将使用一些在每张匿名凭证中嵌入一些未盲化位位的方案,以及退出端的非交互式验证。后者将 大大 降低代理的负载以及连接延迟,因为退出不再需要为每个新会话与代理通信。
- 代理负责与网桥和出口通信,为用户设置路由。消除了复杂的
(网桥数量) * (出口数量)
通信模式,因此代理可以轻松用于生成Earendil和类似软件的路由。 - VPN模式通过流("socks5")模式进行隧道传输,但支持拦截流量以tun2socks风格。
- 我们普遍使用配置文件而不是大量的命令行参数。
- 我们不再使用Web视图进行GUI。相反,GUI客户端是用Rust编写的,并直接调用协议库。
许可证
代码通常根据 MPL 2.0 许可。对各种项目有用的低级别库,例如 sillad
框架,通常根据ISC许可证许可。
代码组织
与Geph4不同,Geph5以Cargo工作空间的形式组织,采用“单仓库”风格。
libraries/
包含可能相互依赖的库crates。所有这些crates也都收到crates.io发布。binaries/
包含二进制crates。geph5-client
geph5-exit
geph5-bridge
geph5-broker
依赖项
~92–130MB
~2.5M SLoC