#proxy #tls-connection #networking #tcp #remote #layer #addresses

app l4p

使用 Rust 编写的简单快速的四层代理

2 个版本

0.1.9 2024年6月22日
0.1.8 2024年6月19日

#518 in Web 编程

Apache-2.0

36KB
826

l4p

嘿,我们现在在第四层了!

CI

l4p 是一个使用 Rust 实现的四层代理,监听特定端口并根据配置将 TCP 数据传输到远程地址(仅 TCP)。

特性

  • 监听特定端口并将代理转发到本地或远程端口
  • 基于 SNI 的规则,不终止 TLS 连接
  • 基于 DNS 的后端,定期解析

安装

为了在您的计算机架构上获得最佳性能,请考虑构建源代码。首先,您可能需要 Rust 工具链

$ cd l4p
$ cargo build --release

二进制文件将生成在 target/release/l4p,或者您可以使用 cargo install --path . 安装。

或者您可以使用 Cargo 安装 l4p

$ cargo install l4p

或者您可以从发布页面下载二进制文件。

配置

l4p 将从 /etc/l4p/l4p.yaml 读取 yaml 格式的配置文件,并且您可以将自定义路径设置为环境变量 L4P_CONFIG,以下是一个最小可行示例

version: 1
log: info

servers:
  proxy_server:
    listen:
      - "127.0.0.1:8081"
    default: remote

upstream:
  remote: "tcp://www.remote.example.com:8082" # proxy to remote address

内置了两个上游

  • Ban,立即终止连接
  • Echo,将输入反射回

有关详细的配置信息,请参阅 此示例

谢谢

  • fourth,这是它的一个深度修改分支。

许可证

l4p 在 Apache-2.0 许可证下可用。

依赖关系

~18–33MB
~542K SLoC