#cli #forward #command-line #dispatcher #logging #proxy #network #networking #udp #tcp

bin+lib mproxy-forward

MPROXY: Forwarding Proxy. Forward TLS/TCP, UDP, or Multicast to a downstream UDP socket address.

6 releases

0.1.6 Mar 31, 2023
0.1.5 Mar 15, 2023
0.1.3 Dec 20, 2022

#954 in Network programming

Download history 16/week @ 2023-01-31 17/week @ 2023-02-07 19/week @ 2023-02-14 11/week @ 2023-02-21 3/week @ 2023-02-28 15/week @ 2023-03-07 114/week @ 2023-03-14 25/week @ 2023-03-21 51/week @ 2023-03-28 4/week @ 2023-04-04 15/week @ 2023-04-11 6/week @ 2023-04-18 5/week @ 2023-04-25 42/week @ 2023-05-02 17/week @ 2023-05-09 5/week @ 2023-05-16

69 downloads per month
Used in mproxy-reverse

MIT license

666 lines

MPROXY: Multicast Network Dispatcher and Proxy

Streams data over the network.


This repo includes four packages: Forward-proxy, reverse-proxy, UDP client, and UDP server. Proxies allow conversion between TCP and UDP, so these blocks can be combined together for complete interoperability with existing networks.
A primary feature is compatability with UDP Multicast for intermediate routing and reverse-proxy, enabling dead simple group communication across complex one-to-many or many-to-many data streams, and resulting in scalable reverse-proxy. Packages can be run either from the command line or included as a library.

  • Simple to use full networking stack
    • Send, proxy, reverse-proxy, and receive to/from multiple endpoints simultaneously
  • Fast
    • Can be deployed in less than 5 minutes
    • 500+ Mbps read/transfer/write speed (UDP)
  • Minimal
    • Zero configuration, logging, or caching
    • Tiny memory footprint, compiled binary sizes ~350KB
    • No shared resources between threads
  • Leverage benefits of UDP
    • Simple stream aggregation
    • Performant proxy and reverse proxy
    • UDP multicasting enables stateless, scalable reverse-proxy

Quick Start

Get started with a simple client/server network. Install the command line tools with cargo, and start a UDP listen server on port 9920.

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

Then send some bytes from the client to the server. The path option "-" tells the client to read input from stdin. A filepath, descriptor, or handle may also be used.

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

You should now see your message appear in streamoutput.log (and also to stdout if --tee is used)


  • Windows/Linux/Mac
  • IPv4/IPv6
  • UDP
    • via forward and reverse proxy
    • Partial client-side TLS support provided by rustls (requires feature tls enabled in mproxy-forward)
  • Fully transparent routing


See the documentation for installing and operation instructions


~59K SLoC