/masquerade

An implementation of MASQUE in Rust

Primary LanguageRust

Masquerade is an implementation of MASQUE. For UDP, it implements the connect-udp extended HTTP/3 CONNECT method as defined in RFC 9298 using HTTP datagrams defined in RFC 9297. For TCP, it implements the HTTP/3 CONNECT method as defined in RFC 9114.

For client, it exposes a HTTP/1.1 or SOCKS5 interface for easy connection.

It is built on HTTP/3 and QUIC provided by the library quiche.

Very early prototype with no thorough testing, missing a lot of features, poorly documented, and very poor error and edge case handling.

Examples

Server:

# host server on interface with IP 192.168.1.2 port 4433
$ cargo run --bin server -- 192.168.1.2:4433

Client:

# connect to server at 192.168.1.2:4433 and host HTTP/1.1 server on localhost port 8989
$ cargo run --bin client -- 192.168.1.2:4433 127.0.0.1:8989 http

# or host a socks server
$ cargo run --bin client -- 192.168.1.2:4433 127.0.0.1:8989 socks