9 个版本

0.2.0-alpha.122024 年 8 月 17 日
0.2.0-alpha.112024 年 8 月 13 日
0.2.0-alpha.102024 年 8 月 12 日

1871网络编程

Download history 1066/week @ 2024-08-12

每月 下载 1,066

MPL-2.0 许可

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