TCP / UDP proxying
High-speed traffic forwarding over a modern QUIC transport.
QUIC transport · built in Rust
Hysteria 2, rebuilt in Rust. High-speed TCP and UDP proxying over QUIC, with a safer core and a full cross-platform toolkit.
01 / The premise
An independent Rust port targeting compatibility with the original Hysteria 2 project ↗ and its upstream Go implementation — while taking advantage of Rust’s ecosystem and compile-time guarantees.
Read the project README →02 / Capability matrix
High-speed traffic forwarding over a modern QUIC transport.
Obfuscation options for networks that fight back.
Flexible outbounds, port mapping, and punching.
Platform-aware modes for deeper system integration.
Encrypted ClientHello and automated certificates.
Know what your connection is actually doing.
03 / Install
Download the binary for your platform, verify the adjacent SHA-256 checksum, then run it directly. Rust and Go are not required.
LINUX
GNU/Linux builds for servers, desktops, and ARM routers.
MACOS
Native x86-64 and Apple Silicon release binaries.
WINDOWS
Standalone executables with TUN and WFP support.
04 / Platforms
| Platform | Architectures | Proxy modes | System integration |
|---|---|---|---|
| Linux | x64 · ARMv7 · ARM64 | SOCKS5 · HTTP · Forwarding | TUN · TProxy · Redirect |
| macOS | x64 · ARM64 | SOCKS5 · HTTP · Forwarding | TUN |
| Windows | x64 · ARM64 | SOCKS5 · HTTP · Forwarding | TUN · WFP strict route |
Core QUIC, TCP/UDP, TLS, obfuscation, ACL, and Realm capabilities are shared across supported targets. Low-level routing features depend on operating-system APIs.
Built for real deployments
Linux · macOS · Windows
Release binaries included
Memory-safe core
Unknown fields rejected
05 / Configuration
Start with these minimal YAML files. Replace the domain, certificate paths, and password before running them.
listen: :443
tls:
cert: /etc/hysteria/server.crt
key: /etc/hysteria/server.key
auth:
type: password
password: CHANGE_MEserver: example.com:443
auth: CHANGE_ME
tls:
sni: example.com
socks5:
listen: 127.0.0.1:1080
http:
listen: 127.0.0.1:8080listenServer bind address and UDP port.
tls.cert / keyPEM certificate and private key paths.
authMust use the same password on both ends.
tls.sniShould match the certificate domain.
Security note
Never deploy the example password. Use a long random secret, keep the private key readable only by the service account, and verify that the certificate covers the client SNI.
06 / First run
Save the configurations, then start the server and client in their respective environments.
SERVER
hysteria server --config server.yamlCLIENT
hysteria client --config client.yaml07 / FAQ
No. This is an independent Rust implementation targeting interoperability with the original Hysteria 2 project and a pinned upstream Go commit.
No. Download the correct release binary for your operating system and architecture, verify its SHA-256 file, and run it directly.
Open the configured listen port for UDP. The minimal example uses UDP 443. Additional TCP ports may be needed when optional HTTP/HTTPS masquerade frontends or ACME challenges are enabled.
Yes. The repository includes mandatory real-binary interoperability tests in both directions for core TCP/UDP, ECH, and Salamander behavior.
The Rust parser deliberately rejects unknown fields instead of silently ignoring likely typos. Check field spelling and nesting against the examples.