Expand description
Volto — a MASQUE proxy server.
Volto terminates HTTP/3 over QUIC and proxies client traffic:
- TCP via classic CONNECT tunnels (RFC 9114 §4.4).
- UDP via CONNECT-UDP (RFC 9298) + HTTP Datagrams (RFC 9297).
§Module layout
auth— HTTP Basic authentication of CONNECT requests.config— TOML configuration and its validation.policy— the destination ACL: which targets may be reached.tls— certificate/key loading and the rustls server configuration.gate— the SNI gate: which handshakes reach quinn at all.quic— the QUIC endpoint, transport parameters and the accept loop.shutdown— the graceful-shutdown signal shared by endpoint and connections.h3— HTTP/3 (RFC 9114) for a proxy: framing, QPACK, the control stream, request streams, and the routing of inbound HTTP Datagrams to the stream each one names.h3api— the facade over that layer, and the only HTTP/3 vocabulary the rest of the crate uses.conn— per-connection driving and request dispatch.capsule— the Capsule Protocol (RFC 9297 §3) incremental decoder.datagram— HTTP Datagram payload coding (RFC 9297) and QUIC varints.net— explicit name resolution and UDP socket setup.logfmt— how an optional value is spelled in a log field.tunnel— request routing, the per-connection context and the tunnels.
§Security status
Requests are authenticated (auth) and destinations are filtered
(policy) — but both are configuration-dependent, and the defaults are
not the safe ones in the same way everywhere:
- an empty
[auth].usersdisables authentication, making this an open proxy.config::Config::warningssays so at startup, and it is the intended state only while debugging interop on a private network; [security]defaults are the safe ones: private address space is out of reach, port 25 is closed, and an unanswered UDP session cannot be used as an amplifier — with one deliberate exception,expected_sni, whose default empty list leaves the port answering anybody who speaks QUIC to it, because turning thegateon without knowing the name is a server nobody can reach.
Modules§
- auth
- HTTP Basic authentication (RFC 7617) for CONNECT requests.
- capsule
- The Capsule Protocol (RFC 9297 §3).
- config
- Configuration file loading and validation.
- conn
- Per-connection driving: accept request streams, authenticate them, dispatch them.
- datagram
- HTTP Datagram payload coding (RFC 9297) and QUIC varints (RFC 9000 §16).
- gate
- The SNI gate: which handshakes are allowed to reach quinn at all.
- h3
- HTTP/3 (RFC 9114) for a proxy, implemented in the tree.
- h3api
- The facade over the HTTP/3 layer.
- logfmt
- Formatting helpers for log fields.
- net
- Socket helpers: name resolution and UDP socket setup.
- policy
- Destination policy: which targets this proxy is willing to reach.
- quic
- The QUIC endpoint: transport parameters, the accept loop and peer metadata.
- shutdown
- The shutdown signal, from the process down to each connection.
- tls
- TLS identity: certificate/key loading and the rustls server configuration.
- tunnel
- Request routing, the per-connection context, and the tunnel implementations.