QUIC transport

Hysteria2 VPN With Salamander Obfuscation

Hysteria2 is ProofKit's UDP transport: QUIC with Salamander obfuscation, which scrambles every packet with a key from your link, so no QUIC header or server name is visible on the wire. It is quick on lossy mobile links and gets through where TCP is throttled but UDP is not.

UDP · QUICSalamanderPinned certificateDirect or 2-hop
Network
UDP · QUIC
Obfuscation
Salamander
Server name
Hidden
Needs
Open UDP

01 /Salamander hides the whole packet

Plain QUIC is easy to recognise: its first packet carries a version field and a TLS handshake with the server name in it. Salamander scrambles every packet, that first one included, with a key made from the password in your link and a fresh random salt per packet. A filter sees UDP datagrams of random-looking bytes: no QUIC header, no handshake, no server name to read.

Instead of trusting a certificate authority, your app checks the node's self-signed certificate against the fingerprint in your link (pinSHA256), so a machine in the middle cannot pose as the node.

02 /When it is the right pick

  • TCP is throttled, UDP is not. Some networks slow down long TCP sessions to foreign servers but leave UDP alone.
  • Lossy or long links. QUIC recovers from packet loss better than TCP, so Hysteria2 often moves more data on mobile networks and over long distances, at a little extra latency.
  • Reality is being flagged. If a filter has learned to single out Reality on your network, Hysteria2 looks nothing like it.

03 /Where it fails

  • UDP blocked or throttled. Many mobile and corporate networks block or slow UDP. Then Hysteria2 does not connect at all: use Reality or XHTTP, which run over TCP.
  • Unknown UDP treated as suspect. Random-looking traffic has no signature to match, but some filters throttle any UDP they cannot classify.
  • Address blocks. Like Reality and XHTTP, it connects straight to a node's IP address. If that is blocked, use a 2-hop route through an entry node, or olcRTC.

04 /How it runs on ProofKit

Hysteria2 listens on a UDP port of the exit node, 443 by default. On a 2-hop route the entry node forwards your UDP packets unopened to the exit over the tunnel between the two nodes; the QUIC session ends at the exit. Your app signs in with the same personal ID it uses for Reality.

05 /Apps and setup

Hysteria2 runs in Happ, Hiddify and V2RayNG. The dashboard's list for those apps carries Reality only until you change it:

  1. Connect to a node in the marketplace.
  2. In the dashboard, open Subscription URL, set Your app to Happ · Hiddify · V2RayNG and Transports in subscription to All (every transport as its own entry) or Hysteria2.
  3. Copy the URL, add it as a subscription and pick an entry ending in · Hysteria2.

The Config button on each session in the dashboard also shows a Hysteria2 link and QR code for that one route.

06 /What it costs

Nothing extra. Hysteria2 uses the same per-GB price as Reality and XHTTP: the node's price plus the 20% network fee, locked when you connect and paid from your TON deposit in escrow. Only olcRTC has a price of its own, from 20 November 2026. Unused balance can be withdrawn.

// faq

Common questions

How is Hysteria2 different from VLESS Reality?

Reality runs over TCP and looks like an HTTPS visit to a real website. Hysteria2 runs over UDP, and Salamander makes every packet look like random bytes with no header or server name. Hysteria2 copes better with lossy links; Reality works wherever TCP works.

Does the server name matter for Hysteria2?

Not for hiding. Salamander scrambles the whole packet, so the server name is never visible on the wire. What matters is that UDP gets through and the node's address is not blocked.

Why does Hysteria2 not connect on my network?

Most often UDP is blocked or throttled, which is common on mobile and corporate networks. Switch to Reality or XHTTP in the same app; both run over TCP.

Which apps run Hysteria2?

Happ, Hiddify and V2RayNG. In the dashboard, set Your app to Happ · Hiddify · V2RayNG and Transports in subscription to All or Hysteria2, because that list carries Reality only by default.

Is Hysteria2 billed differently?

No. It costs the same per GB as Reality and XHTTP: the node's price plus the 20% network fee, locked when you connect and paid from your TON deposit. Only olcRTC has a price of its own, from 20 November 2026.

// ready to try it

Try Hysteria2 on your network

Connect to a node, set your subscription to All or Hysteria2, and test it next to Reality. If UDP is blocked where you are, Reality and XHTTP stay in the same list.

~/proofkit — what your app imports
hysteria2://<id>@<node>:443
?obfs=salamander
&obfs-password=<secret>
&sni=<name>&insecure=0
&pinSHA256=<cert-hash>