#tunnel #connection #cloudflare #access #trust #zero #port

libcfd

cloudflared (Cloudflare隧道客户端) 的Rust版本

1 个不稳定版本

0.1.0 2024年2月9日

#12#trust

Apache-2.0

175KB
3.5K SLoC

LibCFD

cloudflared (Cloudflare隧道客户端) 转换为Rust语言。

目的

LibCFD旨在成为cloudflared及其命令行包装器的轻量级且可编程的替代品。LibCFD的主要优点是不必启动一个新的进程(该进程使用垃圾回收的运行时)来连接到Cloudflare。因此,我们可以通过移除IPC和GC开销来节省资源。

特性

目前支持的特性包括

  • 命名隧道(零信任网络访问)
  • 快速隧道(TryCloudflare)
  • QUIC隧道连接
  • HTTP隧道连接(非优先级)
  • 适当的客户端信息报告(优先级)
  • 隧道重连
  • HTTP连接(部分工作,但可能是一个陷阱)
  • HTTP连接包装器
  • WebSocket连接(部分工作,但可能是一个更大的陷阱)
  • WebSocket连接包装器
  • TCP连接(由命名隧道控制)
  • 远程管理(由命名隧道控制)

待办事项

除了上面列出的,还有以下两个我期待完成的待办事项

  • 修复异步(一些futures由于capnp而!Send,可能需要修改capnp)
  • 解耦Tokio

性能

正在进行中。看起来至少可以达到1gbps。

示例

Http Hello World

创建一个HTTP服务器,发送简单的"hello world"响应。

cargo run --example http_hello_world

Http Download

创建一个HTTP服务器,尽可能快地发送数据。

cargo run --example http_download

Http Download

创建一个HTTP服务器,尽可能快地接收数据。

cargo run --example http_upload

Websocket Echo

创建一个WebSocket服务器,回显所有接收到的WebSocket消息。

cargo run --example websocket_echo

依赖项

~18–34MB
~619K SLoC