Skip to main content

Crate volto

Crate volto 

Source
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].users disables authentication, making this an open proxy. config::Config::warnings says 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 the gate on 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.