Why Hiddify: Built by Iranians, for Iranians. Supports all our protocols, auto-fallback, subscription links, and Iran routing rules out of the box.
| Platform | Link |
|---|---|
| Android | https://github.com/hiddify/hiddify-app/releases (APK) or Google Play |
| iOS | App Store: search "Hiddify" |
| Windows | https://github.com/hiddify/hiddify-app/releases (.exe) |
| macOS | https://github.com/hiddify/hiddify-app/releases (.dmg) |
| Linux | https://github.com/hiddify/hiddify-app/releases (.AppImage) |
reality-ezpz generates a subscription URL that auto-updates configs:
- Open Hiddify App
- Tap "+" or "Add Profile"
- Select "Add from subscription link"
- Paste your subscription URL
- Hiddify will auto-import all protocols (Reality, Hysteria2, etc.)
- Tap the connect button
If subscription isn't available, import individual protocol links:
- Copy the
vless://...link from your server - Open Hiddify → "+" → "Add from clipboard"
- Repeat for
hy2://...(Hysteria2) link - Repeat for CF Workers VLESS link (backup)
All 4 servers are managed through a single smart subscription endpoint:
- Open Hiddify → "+" → "Add from subscription link"
- Paste:
https://sub.example.com/sub/<UUID> - Hiddify imports all ~190 configs across all servers and protocols
- Enable auto-fallback — Hiddify auto-tries the next protocol if current fails
Backup subscription (if primary is down): https://sub.example.net/sub/<UUID>
The smart-sub v5.9 worker serves configs in 13-tier fallback priority:
- XHTTP-CDN (CF-fronted, IP hidden, DPI-proof)
- Finalmask XDNS/XICMP (mKCP obfuscated UDP)
- XrayHTTP (fake HTTP to whitelisted hosts)
- Reality (TLS to SNI, needs fragment)
- Hy2 Salamander (obfuscated UDP)
- Hy2 standard + UDP Hop
- ShadowTLS v3 + SS2022 (genuine TLS wrapper)
- CDN-WS (WebSocket through CF)
- SS2022 direct (random bytes)
- NaiveProxy (Chrome TLS stack)
- Cloak (TLS camouflage)
- DNS tunnel (last resort, ~60 KB/s)
- EDtunnel (CF Pages serverless)
Hysteria2 configs are included in the smart subscription. Manual connection details:
| Setting | Value |
|---|---|
| Protocol | Hysteria2 |
| Server | Server IP (see below) |
| Port | 8443 (routed through HAProxy on 443) |
| Password | <UUID> |
| SNI | www.google.com |
| Skip cert verify | Yes (self-signed cert) |
| Transport | UDP/QUIC |
Servers: Helsinki (<HEL_IP>), Oracle Madrid (<ORC_IP>), GCP Dammam (<GCP_IP>), Scaleway London (<SCW_IP>)
Note: Use the smart subscription link instead of manual configs — it includes all ~190 configs with proper fallback priority.
Hiddify supports Iran routing rules natively:
- Go to Settings → Routing
- Enable "Iran" routing mode (or "Custom")
- This routes Iranian domains/IPs directly, only international traffic through VPN
- Reduces server load and makes domestic browsing faster
- Go to Settings → General
- Enable auto-switch/fallback
- Hiddify will automatically try the next protocol if the current one fails
- Download: https://github.com/2dust/v2rayNG/releases
- Import: Tap "+" → "Import from clipboard" → paste
vless://link - Connect: Tap the play button
- Download from App Store
- Tap "+" → Type: VLESS
- Enter server details manually or scan QR code
- Toggle connection on
- Download: https://github.com/2dust/v2rayN/releases
- Import: Servers → Import from clipboard
- Start: Right-click tray icon → Start
- Download: https://github.com/yanue/V2rayU/releases
- Import via menu bar icon → Server Settings → Import
- Download: https://github.com/MatsuriDayo/nekoray/releases
- Supports sing-box and Xray cores
- Good for advanced users who want more control
When all other methods are blocked, DNS tunnels still work because they encode traffic inside DNS queries.
Repo: https://github.com/nickoala/dnstc
# Download from https://github.com/nickoala/dnstc/releases
# Slipstream+SOCKS (fastest, ~63 KB/s):
./dnstc --type slipstream \
--domain t.<DOMAIN> \
--fingerprint "<SLIP_SOCKS_FP>" \
--listen 127.0.0.1:1080
# DNSTT+SOCKS (~42 KB/s):
./dnstc --type dnstt \
--domain t2.<DOMAIN> \
--pubkey <DNSTT_PUBKEY> \
--listen 127.0.0.1:1080
# This creates a local SOCKS5 proxy on 127.0.0.1:1080
# Configure your browser/apps to use itRepo: https://github.com/nickoala/SlipNet
- Download APK from https://github.com/nickoala/SlipNet/releases
- Install and open
- Add tunnel:
- Domain:
t.<DOMAIN> - Type: Slipstream
- Fingerprint:
<SLIP_SOCKS_FP>
- Domain:
- Connect — creates local SOCKS proxy
- Install from App Store
- Configure DNS tunnel with DNSTT public key or Slipstream fingerprint
- Set tunnel subdomain:
t.<DOMAIN>
Note: DNS tunnels are very slow (~42-63 KB/s). Use only when everything else is blocked.
The simplest option for non-technical users. No server, no config, just install and tap connect.
- Download: https://github.com/bepass-org/oblivion-desktop/releases
- Install and open
- Enable Warp-in-Warp (WiW) mode (Settings → Connection → WiW)
- Tap Connect
- If WiW doesn't work, try Gool mode
- Download: https://github.com/bepass-org/oblivion/releases (APK)
- Install and open
- Enable WiW or Gool mode in settings
- Tap Connect
No official Oblivion for iOS yet. Use 1.1.1.1 (WARP) app from App Store as alternative, though it may be blocked without additional tricks.
- Give to family/friends who can't handle config files
- When your VPS is down or IP is blocked
- As quick temporary access while you fix the main server
TLS fragmentation splits the TLS ClientHello into small pieces so Iranian DPI can't pattern-match the SNI. This is the #1 client-side technique that makes Reality connections reliable from Iran. Zero server changes needed.
How it works: Your client sends a TLS ClientHello containing the SNI (e.g., www.google.com). Iran's DPI reads this SNI to decide whether to block. TLS fragmentation splits this message into tiny pieces (10-100 bytes) with delays between them, so DPI can't reassemble it fast enough.
- Settings → Config Options → TLS Fragment
- Set: Enabled
- Length:
10-100 - Interval:
10-50(milliseconds between fragments) - Mode:
SNI(fragment only the SNI portion)
ISP-tuned values (if default doesn't work):
| ISP | Fragment Length | Fragment Interval | Notes |
|---|---|---|---|
| همراه اول (MCI) | 10-100 |
10-50 |
Standard works well |
| ایرانسل (Irancell) | 1-3 |
1-5 |
Needs smaller fragments |
| رایتل (Rightel) | 10-100 |
10-50 |
Standard works well |
| مخابرات (Fixed/ADSL) | 50-100 |
10-30 |
Larger fragments OK |
- Settings → Fragment Settings
- Enable Fragment: On
- Fragment Length:
10-100 - Fragment Interval:
10-50
tls-fragment:
enable: true
size: 10-100
sleep: 10-50In the outbound TLS settings:
"tls": {
"fragment": {
"enabled": true,
"size": "10-100",
"sleep": "10-50"
}
}Note: TLS fragment only helps TLS-based protocols (Reality, VLESS+TLS). It does NOT affect Hysteria2 (QUIC/UDP). If Reality is blocked but Hy2 works, switch protocol instead of tweaking fragment.
Each Iranian ISP's DPI behaves differently. Use the correct DNS servers and frequency/fragment settings for your carrier:
| DNS Servers |
|---|
udp://217.218.26.78 |
udp://77.88.8.1 (Yandex) |
udp://77.88.8.8 (Yandex) |
udp://195.46.39.39 (SafeDNS) |
udp://8.26.56.26 (Comodo) |
| DNS Servers |
|---|
udp://8.8.8.8 (Google) |
udp://8.8.4.4 (Google) |
udp://1.1.1.1 (Cloudflare) |
udp://1.0.0.1 (Cloudflare) |
udp://208.67.222.222 (OpenDNS) |
| DNS Servers |
|---|
udp://208.67.220.220 (OpenDNS) |
udp://9.9.9.9 (Quad9) |
udp://149.112.112.112 (Quad9) |
udp://4.2.2.2 (Level3) |
udp://216.146.36.36 (DynDNS) |
| DNS Servers |
|---|
udp://8.26.56.26 (Comodo) |
udp://64.6.64.6 (Verisign) |
udp://64.6.65.6 (Verisign) |
udp://198.101.242.72 (Alternate) |
udp://198.101.242.73 (Alternate) |
How to use: In Warp/Oblivion or similar tools, set the DNS server and frequency values matching your carrier. The "frequency" values configure fragment timing optimized per ISP's DPI behavior.
Users in Iran may find some Cloudflare edge IPs throttled. Use a scanner to find the fastest ones.
- Download: https://github.com/m-rambod/CFScanner
- Run from inside Iran (or have someone there run it)
- It outputs the fastest clean Cloudflare IPs
- Use these IPs in your CF Workers client config as the server address instead of the default
Replace the server address in your CF Workers VLESS config:
# Instead of:
vless://UUID@<CF_PAGES_URL>:443?...
# Use a clean IP:
vless://UUID@CLEAN_CF_IP:443?host=<CF_PAGES_URL>&...
These tools manipulate packets on the client side to bypass Deep Packet Inspection, even without a VPN:
Download: https://github.com/ValdikSS/GoodbyeDPI/releases
Run as Administrator
Can work alongside VPN for extra protection
# Install zapret
# See: https://github.com/bol-van/zapret
# Or use the easier installer:
# https://github.com/Snowy-Fluffy/zapret.installer
bash <(curl -Ls https://raw.githubusercontent.com/Snowy-Fluffy/zapret.installer/main/install.sh)See: https://github.com/remittor/zapret-openwrt
Installs DPI bypass directly on your router
All devices on the network benefit automatically
If you only need Telegram (not full internet), use our MTProto proxy. It works independently of the VPN and is configured directly in Telegram's settings.
- Open your browser on your phone/computer
- Go to:
https://sub.example.com/mtproto/<YOUR-UUID> - Tap the server link — Telegram opens and asks to add the proxy
- Tap "Connect" — done!
- Open Telegram → Settings → Data and Storage → Proxy
- Tap "Add Proxy"
- Select "MTProto"
- Enter your server details:
| Server | IP | Port | Secret |
|---|---|---|---|
| Your server 1 | <SERVER_IP> |
3443 |
<MTPROTO_SECRET> |
| Your server 2 | <SERVER_IP> |
3443 |
<MTPROTO_SECRET> |
Values come from your own deployment — tools/deploy/deploy-mtproto.sh prints the
secret for each server when it runs. They are also available from
config/servers.yaml via the mtproto.secret_env env var for each server.
Note: The
eeprefix means fake-TLS mode — to a DPI system the connection looks like HTTPS to the domain encoded in the secret's tail.Do not commit these values, and do not publish them. An MTProto secret is complete authentication material: it has no per-user component and no revocation path, so anyone holding it has permanent, unattributable use of your proxy.
Generate shareable links from your own values:
https://t.me/proxy?server=<SERVER_IP>&port=3443&secret=<MTPROTO_SECRET>
During complete internet shutdowns (like June 2026 protests), most VPN protocols stop working because international routing is cut. Only protocols that can tunnel through domestic DNS resolvers survive.
| Protocol | Why it works | Speed |
|---|---|---|
| DNS Tunnel (Slipstream/DNSTT) | Encodes traffic in DNS queries to domestic resolvers | ~42–63 KB/s |
| Oblivion/WARP with DNS trick | Routes through allowed DNS paths | Variable |
Add ?mode=shutdown to your subscription URL:
https://sub.example.com/sub/<YOUR-UUID>?mode=shutdown
This returns only DNS-tunnel-friendly configs that work even when international routing is fully blocked.
- DNS Tunnel clients (see DNS Tunnel section above) — most reliable
- Oblivion/WARP with domestic DNS resolvers — sometimes works
- Psiphon — has its own CDN-fronted transport that may survive
- Share configs offline via Bluetooth/AirDrop — the sub URL won't be reachable if DNS is also blocked
When configuring DNS tunnel clients during a shutdown, use your ISP's domestic resolver:
| ISP | DNS Resolver |
|---|---|
| MCI (همراه اول) | 10.202.10.10, 10.202.10.11 |
| Irancell (ایرانسل) | 10.202.10.10, 10.202.10.11 |
| Rightel (رایتل) | 10.202.10.10, 10.202.10.11 |
| Fixed-line (مخابرات) | 10.202.10.10, 10.202.10.11 |
Important: During a full shutdown, even the subscription URL may not be reachable. Pre-download your configs and save DNS tunnel settings BEFORE a shutdown hits. Share via Bluetooth/AirDrop.
Work through this list in order. Each step takes ~30 seconds. The list is ordered from most effective to last resort.
Step 1: Try XHTTP-CDN Configs FIRST (IP-hidden + DPI-proof)
XHTTP-CDN is the strongest protocol we have. It routes through Cloudflare CDN (hiding our server IPs) using pure HTTP requests (no WebSocket upgrade headers for DPI to detect). This defeats both IP blocking AND protocol detection simultaneously.
In Hiddify, look for configs named XHTTP-CDN-Finland, XHTTP-CDN-Madrid, XHTTP-CDN-London. Try each — if any connects, you're done.
Why XHTTP-CDN works: DPI blocks WebSocket upgrades (killed CDN-WS) and can block server IPs (kills XrayHTTP). XHTTP sends normal HTTP POST/GET through Cloudflare — DPI sees standard HTTPS to a major CDN. No fingerprint, no exposed IP.
If XHTTP-CDN doesn't work (e.g., CF edge throttled), try direct XrayHTTP. It wraps VLESS in fake HTTP headers to whitelisted Iranian services. No TLS needed.
Look for: XrayHTTP-Finland, XrayHTTP-Madrid, XrayHTTP-Middle East, XrayHTTP-London. Each server uses a different whitelisted host (telewebion.com, myket.ir, aparat.com, divar.ir) — if one host is blocked, others may work.
Why XrayHTTP works: Iranian DPI can't block HTTP traffic to domestic services like telewebion.com without breaking those services for all users.
If HTTP-based protocols fail, enable TLS Fragment and try encrypted ones:
Hiddify: Settings → Config Options → TLS Fragment → Enabled → Length 10-100, Interval 10-50
| Priority | Protocol | Config Names | What It Does |
|---|---|---|---|
| 1 | XHTTP-CDN | XHTTP-CDN-* | HTTP through CF CDN (IP hidden + no WS) |
| 2 | Finalmask XDNS | XDNS-* | mKCP DNS-like UDP on port 10053 |
| 2b | Finalmask XICMP | XICMP-* | mKCP UTP-like UDP on port 10054 |
| 3 | XrayHTTP | XrayHTTP-* | Fake HTTP to whitelisted hosts (direct) |
| 4 | Reality | Reality-* | TLS to fake SNI (needs TLS Fragment) |
| 5 | Hy2 Salamander | Hy2-Sal-* | Obfuscated QUIC/UDP, port 20000-50000 |
| 6 | Hysteria2 | Hysteria2-* | QUIC/UDP (fast when UDP isn't blocked) |
| 6b | Hy2 Hop | Hy2-Hop-* | Hy2 with port hopping 20000-50000 |
| 7 | ShadowTLS v3 | ShadowTLS-* | Genuine TLS handshake wrapping SS2022 |
| 8 | CDN-WS | CDN-WS-* | WebSocket through CF (blocked by some DPI) |
| 9 | SS2022 | SS2022-* | Random bytes, no protocol fingerprint |
| 10 | NaiveProxy | Naive-* | Chrome TLS stack, nearly undetectable |
| 11 | Cloak | Cloak-* | TLS camouflage to google.com |
| 12 | DNS tunnel | SlipNet/dnstc | Last resort, ~60 KB/s |
| 13 | EDtunnel | EDtunnel | CF Pages serverless VLESS |
Some Iranian ISPs block specific IPv4 addresses but leave IPv6 untouched. If server IPs are blocked but your ISP/device supports IPv6:
- Look for configs named
Reality-IPv6-Finland,Hy2-IPv6-Finlandetc. - These connect to the server's IPv6 address instead of IPv4
- Requires: Your ISP must support IPv6 (check: https://test-ipv6.com from Iran)
- Currently available: Helsinki (Hetzner IPv6) — more servers being checked
If one server's IP is blocked, try another. Hiddify auto-selects the fastest working one.
- Helsinki (Hetzner, Finland) — primary, has DNS tunnel backup
- Oracle (Madrid, Spain) — different ASN, free tier
- GCP (Dammam, Middle East) — lowest latency from Iran
- Scaleway (London, UK) — different ASN/provider
Each ISP's DPI behaves differently. If TLS Fragment is enabled but connections still fail:
| ISP | Fragment Length | Fragment Interval |
|---|---|---|
| همراه اول (MCI) | 10-100 |
10-50 |
| ایرانسل (Irancell) | 1-3 |
1-5 |
| رایتل (Rightel) | 10-100 |
10-50 |
| مخابرات (Fixed/ADSL) | 50-100 |
10-30 |
If CDN-based configs are slow or timeout, your ISP may be throttling certain Cloudflare edge IPs:
- Download CFScanner: https://github.com/m-rambod/CFScanner
- Run from inside Iran to find fast CF IPs
- In Hiddify, edit XHTTP-CDN or CDN-WS config → change server address to the clean CF IP
If you have terminal access inside Iran:
# Can you reach the subscription endpoint?
curl -s --connect-timeout 5 https://sub.example.com/health
# Can you reach servers directly? (expect TLS handshake response)
curl -sk --connect-timeout 5 https://<HEL_IP>:443
curl -sk --connect-timeout 5 https://<ORC_IP>:443
curl -sk --connect-timeout 5 https://<SCW_IP>:443
curl -sk --connect-timeout 5 https://<GCP_IP>:443
# Test XHTTP through CDN
curl -s --connect-timeout 5 https://cdn.example.com/xhttp/
# UDP check for Hysteria2
nc -zuv <HEL_IP> 8443If standard protocols all fail, these client-side tools can find DPI weaknesses:
Geneva (AI-powered DPI bypass) — HIGHEST PRIORITY:
- Download: https://github.com/geneva/geneva
- Run from inside Iran (Linux required) — it automatically discovers DPI bugs
- Uses genetic algorithms to fuzz TCP/IP and find bypass strategies
- Has found dozens of working bypasses for Iran/China/Kazakhstan
- Can output "strategy strings" that work with iptables/nftables
# Install and evolve bypass strategies
pip install geneva
geneva-evolve --server <SERVER_IP> --port 443 --test-type echo
# Apply a discovered strategy
geneva-engine --server <SERVER_IP> --port 443 \
--strategy "[TCP:flags:SA]-duplicate(tamper{TCP:flags:replace:R})-|"GoodbyeDPI (Windows — TCP-level DPI bypass):
- Download: https://github.com/ValdikSS/GoodbyeDPI/releases
- Run as Administrator alongside your VPN client
- Manipulates TCP packets to confuse DPI without changing the VPN protocol
- Can make blocked protocols (Reality, CDN-WS) work again
zapret (Linux/OpenWrt — TCP-level DPI bypass):
# Install zapret
bash <(curl -Ls https://raw.githubusercontent.com/Snowy-Fluffy/zapret.installer/main/install.sh)
# Or for OpenWrt routers: https://github.com/remittor/zapret-openwrt
# All devices on the network benefit automaticallyThis is the #1 technique currently working in Iran for heavy DPI situations (Irancell, MCI). It chains our V2Ray configs through Psiphon's CDN-fronted infrastructure, giving double obfuscation.
Why it works: V2Ray encrypts your traffic. Psiphon then wraps that in its own tunnel using CDN fronting (AWS CloudFront, Azure, Google) — Iran can't block these CDNs without breaking Amazon/Microsoft/Google for the whole country. DPI would need to crack both layers simultaneously.
- Install Hiddify and add our subscription link (normal setup)
- In Hiddify settings → set mode to "Proxy only" (NOT VPN mode)
- This makes Hiddify create a local SOCKS5 proxy on
127.0.0.1:10808
- This makes Hiddify create a local SOCKS5 proxy on
- Install Psiphon from https://psiphon.ca
- In Psiphon settings → set "Upstream proxy" to
socks5://127.0.0.1:10808 - Connect Hiddify first (creates the local proxy), then connect Psiphon
- Route all apps through Psiphon
- Install v2rayNG and import our configs
- Tap the config to connect → it creates SOCKS5 proxy on
127.0.0.1:10808 - In v2rayNG settings → switch to "Proxy mode" (not VPN mode)
- Install Psiphon → set upstream proxy to
socks5://127.0.0.1:10808 - Connect v2rayNG first, then Psiphon
- Run Hiddify or v2rayN with our configs in proxy-only mode
- Note the local proxy address (default:
127.0.0.1:10808) - Download Psiphon for Windows from https://psiphon.ca
- In Psiphon → Settings → Upstream Proxy →
SOCKS5 127.0.0.1 10808 - Connect the V2Ray client first, then Psiphon
Same concept but using Cloudflare WARP instead of Psiphon:
- Run Hiddify/v2rayNG in proxy-only mode (SOCKS5
127.0.0.1:10808) - Install Oblivion (https://github.com/bepass-org/oblivion-desktop) — it wraps WARP
- Set Oblivion's upstream proxy to your local V2Ray proxy
- Connect V2Ray → Oblivion → Internet
Tip: If Psiphon alone works but is slow, chain a fast V2Ray config (like XrayHTTP or XHTTP-CDN) through it for better speeds. If Psiphon doesn't work alone either, try Lantern (https://getlantern.org) or Tor with Snowflake bridge as the outer tunnel.
If XHTTP-CDN, XrayHTTP, and other current protocols all get blocked, these are ready to deploy:
naiveproxy (Chrome network stack — nearly impossible to detect):
- Uses Chrome's actual TLS implementation, not a reimplementation
- DPI would have to block Chrome itself to stop this
- Client: NekoBox supports
naive://URIs, or standalone naive client - Status: DEPLOYED on Helsinki (web:2087), Oracle (web2:2087), Scaleway (web4:2087)
- Included in subscription — refresh to get
Naive-Finland,Naive-Madrid,Naive-Londonconfigs
Shadowsocks 2022 (zero known fingerprint):
- Completely redesigned protocol with modern AEAD-2022 crypto
- Looks like random bytes to DPI — no protocol signature
- Routes through HAProxy port 80 (non-HTTP traffic → SS2022)
- Hiddify supports ss2022 out of the box
- Status: DEPLOYED on all 4 servers — refresh subscription for
SS2022-*configs
Cloak (TLS camouflage — wraps SS2022 in genuine TLS):
- Wraps SS2022 traffic as genuine TLS 1.3 to google.com
- DPI sees a real TLS handshake — indistinguishable from Chrome browsing
- Client: NekoBox or Shadowsocks Android + Cloak-android plugin APK
- Status: DEPLOYED on Scaleway (port 2053, TLS to google.com)
- Included in subscription — refresh to get
Cloak-Londonconfig
AmneziaWG (obfuscated WireGuard — defeats WG fingerprinting):
- Modified WireGuard that adds junk packets, timing randomization, and header manipulation
- DPI that detects standard WireGuard (fixed packet sizes, handshake pattern) cannot identify AmneziaWG
- Client: AmneziaVPN — https://amnezia.org (Android, iOS, Windows, macOS, Linux)
- Port: 51820/udp
- Status: Deploy script ready (
tools/deploy/deploy-amneziawg.sh). Once deployed on a server, refresh subscription to getAWG-*config - Import: AmneziaVPN supports
awg://URIs — paste from subscription or import manually
See strategy-roadmap.md Track 7 for full Plan B/C/D details.
If everything above fails (full internet shutdown / total DPI):
| Method | How | Speed | Setup |
|---|---|---|---|
| DNS tunnel | Encodes traffic in DNS queries — almost unblockable | ~60 KB/s | Already deployed (Helsinki) |
| Tor + Snowflake | Uses WebRTC (video call protocol) | ~2-5 Mbps | Download Tor Browser, select Snowflake bridge |
| Psiphon | Multi-transport bypass tool backed by Open Tech Fund | Variable | Download from https://psiphon.ca |
| Lantern | P2P censorship bypass network | Variable | Download from https://getlantern.org |
| Bluetooth mesh (Briar) | Phone-to-phone messaging, no internet | N/A | Install Briar app |
| Satellite (Starlink) | Bypasses all terrestrial filtering | Full speed | Hardware required |
These technologies will fundamentally change the bypass landscape when mature:
- ECH (Encrypted Client Hello): Encrypts SNI in TLS — DPI can't see which domain you connect to. Chrome 117+ and Firefox support it. Cloudflare enables it automatically for proxied domains.
- Check if active:
dig +short TYPE65 cdn.example.com— look forech=parameter - Enable in Chrome:
chrome://flags/#encrypted-client-hello→ Enabled - Enable in Firefox:
about:config→network.dns.echconfig.enabled= true - Impact: When fully deployed, all our CDN configs (XHTTP-CDN, CDN-WS, EDtunnel) become invisible to SNI-based DPI. Reality also benefits since DPI can't read the SNI field.
- Check if active:
- HTTP/3 everywhere: As QUIC becomes the default web transport, Iran can't block it without breaking the internet. Our Hysteria2 becomes viable again.
- Post-quantum TLS: New crypto that's resistant to future quantum computing. Not relevant today, but will make all current DPI obsolete.
After connecting:
- Check IP: Visit https://whatismyipaddress.com
- Should show server IP, NOT your real Iranian IP
- DNS leak test: Visit https://www.dnsleaktest.com
- Should NOT show your ISP's DNS servers
- Speed test: Visit https://fast.com or https://speedtest.net
- Expected: 50-200 Mbps depending on protocol
- Send them the Hiddify App download link
- Send them the subscription URL (one link imports everything)
- They tap connect - done
- Send individual protocol links (VLESS, Hysteria2)
- Include the CF Workers backup link
- Explain: "Try in order, first one that works = use that"
- Share configs via Signal or Telegram (encrypted)
- Never share via email or SMS
- Each user should ideally have unique UUID/credentials
- Use reality-ezpz user management to create per-user configs