#proxy #transport #versatile #framework #suitable #secure #cases

app eycorsican/leaf-bin

一个功能丰富、高效的代理框架,适用于各种用例。

30个版本

0.11.0 2024年6月1日
0.10.10 2024年4月1日
0.10.9 2024年1月22日
0.10.7 2023年9月27日
0.2.13 2021年3月12日

#358 in 网络编程

2,326 stars & 53 watchers

5KB
106

releases ci

Leaf

一个功能丰富、高效的代理框架,适用于各种用例。

多路复用

有两种传输用于流量多路复用

  • AMux:基于可靠流的复用传输,适用于基于TCP的协议和传输
  • QUIC:基于UDP的复用和安全的传输

amux 的好处是我们可以重用连接以减少握手开销,它不是设计为内存高效的,因为它只关注重用连接而不减少连接数。而 quic 可以在不遭受队首阻塞问题的情况下减少握手开销和内存使用。

透明代理

为此目的,有 TUN 入站,这对于类似VPN的代理用例(如iOS和Android上的VPN应用)也非常重要。

高可用性

例如 failovertryallretryrandom 及其组合的出站可以实现根据其自己的指标灵活地将请求发送到其他出站,以实现高可用性或负载均衡行为。

请求路由

也支持基于规则的请求路由。可以根据域名、IP、GEOIP和端口号规则将请求路由到不同的出站。

入门指南

[General]
dns-server = 223.5.5.5
socks-interface = 127.0.0.1
socks-port = 1080

[Proxy]
Direct = direct

更多配置示例可以在这里找到。如果您想要对配置选项进行更灵活的控制,应使用JSON格式,最新的JSON格式示例可以在tests中找到,其中包含了客户端和服务器端的配置示例。

TUN模式与网关模式

TUN模式

此语法(tun = auto)在macOS和Linux上受到支持。

[General]
dns-server = 223.5.5.5
tun = auto

[Proxy]
Direct = direct

网关模式

在网关模式下运行需要一个启用了TUN模式的配置。可以通过环境变量来启用网关模式。

GATEWAY_MODE=true leaf -c config.conf

Windows

  • Maple:基于leaf的轻量级通用Windows代理应用

iOS & Android

构建

安装Rust: https://rust-lang.net.cn/tools/install

安装GCC或Clang。

克隆 & 构建

git clone --recursive https://github.com/eycorsican/leaf.git
cd leaf
cargo build -p leaf-bin

运行

./target/debug/leaf --help

许可证

本项目采用Apache License 2.0许可。

依赖项

~2.4–4MB
~70K SLoC