#tcp-udp #reverse-proxy #udp-server #udp-socket #networking #data-stream #multicast

bin+lib mproxy-forward

MPROXY:转发代理。转发 TLS/TCP、UDP 或多播到下游 UDP 套接字地址。

8 个版本

0.1.8 2023 年 9 月 26 日
0.1.7 2023 年 6 月 1 日
0.1.6 2023 年 3 月 31 日
0.1.3 2022 年 12 月 20 日

#1557网络编程


用于 mproxy-reverse

MIT 许可证

44KB
636

MPROXY:多播网络调度器和代理

在网络中传输数据。

关于

此仓库包含四个包:正向代理、反向代理、UDP 客户端和 UDP 服务器。代理允许 TCP 和 UDP 之间的转换,因此可以将这些块组合在一起以实现与现有网络的完全互操作性。主要功能是与 UDP 多播 的兼容性,用于中间路由和反向代理,使得在复杂的一对多或多对多数据流中实现简单的组通信成为可能,并导致可扩展的反向代理。这些包可以从命令行运行或作为库包含。

  • 简单易用的完整网络堆栈
    • 同时发送、代理、反向代理和接收多个端点
  • 快速
    • 可以在 5 分钟内部署
    • 500+ Mbps 读写速度(UDP)
    • 无状态多线程并发
  • 最小化
    • 无配置、日志或缓存
    • 微小的内存占用,编译的二进制文件大小约 350KB
    • 小于 1500 LOC
  • 利用 UDP 的优势
    • 简单的流聚合
    • 高效的代理和反向代理
    • UDP 多播用于可扩展的反向代理

快速入门

使用简单的客户端/服务器网络开始。使用 cargo 安装命令行工具,并在端口 9920 上启动 UDP 监听服务器。

cargo install mproxy-client mproxy-server
mproxy-server --listen-addr "localhost:9920" --path "streamoutput.log" --tee

然后从客户端向服务器发送一些字节。路径选项 "-" 告诉客户端从 stdin 读取输入。也可以使用文件路径、描述符或句柄。

mproxy-client --path "-" --server-addr "localhost:9920"
> Hello world!

现在你应该能在 streamoutput.log 中看到你的消息出现(如果使用了 --tee,也会出现在 stdout 中)

兼容性

  • Windows/Linux/Mac
  • IPv4/IPv6
  • UDP
  • TCP/TLS
    • 通过正向和反向代理
    • 通过 rustls 提供部分客户端 TLS 支持(需要在 mproxy-forward 中启用 tls 功能)

文档

请参阅文档以获取安装和操作说明

依赖项

~0.1–32MB
~432K SLoC