Overview
Obfuscation protocols disguise WireGuard VPN traffic to bypass network restrictions, firewalls, and censorship. When networks block or throttle VPN connections, obfuscation makes your VPN traffic look like regular HTTPS or other common traffic. Mullvad supports four obfuscation methods:- UDP-over-TCP (udp2tcp): Tunnels WireGuard UDP traffic over TCP connections
- Shadowsocks: SOCKS5 proxy with encryption, originally designed to bypass Chinese censorship
- QUIC: Modern transport protocol that looks like HTTP/3 traffic
- LWO (Lightweight WireGuard Obfuscation): Minimal overhead obfuscation designed specifically for WireGuard
All obfuscation methods are available on Windows, Linux, macOS, and Android. LWO is not yet available on iOS.
When to Use Obfuscation
Use Cases
✅ Obfuscation is helpful when:- Your ISP or network blocks VPN connections
- Corporate firewalls detect and block VPN traffic
- You’re in a country with VPN restrictions (China, Iran, UAE, etc.)
- Your connection works on some networks but not others
- VPN traffic is being throttled or deprioritized
- Privacy protection (WireGuard encryption is sufficient)
- Preventing traffic analysis (use DAITA instead)
- General bypassing of geo-restrictions
- Improving connection speed (obfuscation adds overhead)
How Obfuscation Works
Without Obfuscation (Standard WireGuard)
With Obfuscation
Obfuscation Methods
UDP-over-TCP (udp2tcp)
How it works: Encapsulates WireGuard UDP packets inside TCP connections. Advantages:- Works on networks that only allow TCP
- Simple and reliable
- TCP ports (80, 443) blend with HTTPS traffic
- “TCP-over-TCP” problem can cause performance issues
- Higher latency than native UDP
- Reduced throughput
Shadowsocks
How it works: SOCKS5-based proxy with ChaCha20-Poly1305 encryption, specifically designed to evade deep packet inspection (DPI). Advantages:- Effective against sophisticated DPI systems
- Proven to bypass Chinese Great Firewall
- Additional encryption layer
- More overhead than other methods
- May be slower than UDP-over-TCP
QUIC
How it works: Tunnels WireGuard over QUIC protocol, the transport layer for HTTP/3. Advantages:- Looks like modern web traffic (HTTP/3)
- Better performance than TCP-based methods
- Built-in congestion control
- Connection migration support
- Requires UDP (doesn’t help on UDP-blocking networks)
- Not all networks allow QUIC traffic
QUIC obfuscation makes WireGuard traffic appear as HTTP/3, which is increasingly common and less likely to be blocked.
LWO (Lightweight WireGuard Obfuscation)
How it works: Minimal obfuscation designed specifically for WireGuard with very low overhead. Advantages:- Lowest performance impact
- Specifically designed for WireGuard
- Efficient and lightweight
- May not bypass sophisticated DPI
- Not available on iOS yet
Automatic Obfuscation (Multiplexer)
Mullvad can automatically try multiple obfuscation methods to find one that works:Fallback Order
- Direct connection (no obfuscation)
- Primary obfuscator (e.g., udp2tcp)
- Additional obfuscators (e.g., Shadowsocks, QUIC)
Automatic mode is useful when you’re unsure which obfuscation method works on your network. The app will find the best option automatically.
Enabling Obfuscation
Using the GUI
Enable and Select Method
- Toggle obfuscation On
- Choose method: Automatic, UDP-over-TCP, Shadowsocks, QUIC, or LWO
- Configure port if needed (for udp2tcp)
Using the CLI
- Automatic
- UDP-over-TCP
- Shadowsocks
- QUIC
- LWO
- Disable
Let the app choose the best obfuscation:
Verify Obfuscation is Active
Port Selection
UDP-over-TCP Ports
Common ports that blend with normal traffic:| Port | Service | Detection Risk |
|---|---|---|
| 80 | HTTP | Low (very common) |
| 443 | HTTPS | Lowest (most common) |
| 5001 | Custom | Medium |
Port 443 is recommended as it’s used for HTTPS traffic and is least likely to be blocked or suspicious.
Available Ports per Server
Not all servers support all ports:udp2tcp_ports for each relay.
Performance Impact
Latency Overhead
| Method | Additional Latency | Throughput Impact |
|---|---|---|
| Direct (no obfuscation) | 0ms baseline | 0% baseline |
| LWO | +5-10ms | ~5% |
| QUIC | +10-20ms | ~10% |
| UDP-over-TCP | +20-50ms | ~20-30% |
| Shadowsocks | +30-60ms | ~25-35% |
TCP-over-TCP Problem
When using udp2tcp, you may experience:- Doubled retransmissions: Both inner (WireGuard/TCP apps) and outer (udp2tcp) TCP layers retransmit
- Congestion conflicts: Multiple congestion control algorithms competing
- Reduced throughput: Efficiency loss from nested protocols
Compatibility
Obfuscation works with:- ✅ WireGuard protocol
- ✅ Quantum-resistant tunnels
- ✅ Multihop (obfuscation applies to first hop)
- ✅ DAITA
- ✅ Custom DNS
- ✅ Content blockers
Obfuscation with Multihop
When using obfuscation with multihop:- Obfuscation applies to the entry server connection (device → entry)
- Entry → Exit connection uses standard WireGuard
- Choose obfuscation method based on your network restrictions
Platform Support
| Platform | udp2tcp | Shadowsocks | QUIC | LWO |
|---|---|---|---|---|
| Windows | ✅ | ✅ | ✅ | ✅ |
| Linux | ✅ | ✅ | ✅ | ✅ |
| macOS | ✅ | ✅ | ✅ | ✅ |
| Android | ✅ | ✅ | ✅ | ✅ |
| iOS | ✅ | ✅ | ✅ | ❌ |
Troubleshooting
Connection Fails with Obfuscation
-
Try different method
-
Try different port (for udp2tcp)
-
Use automatic mode
-
Check server support
Slow Performance
If obfuscation is too slow:-
Try LWO (lowest overhead)
-
Try QUIC (if UDP is allowed)
-
Disable if not needed
- Select closer server: Reduce geographic distance
Obfuscation Detected and Blocked
If network detects and blocks obfuscation:- Try Shadowsocks: More sophisticated obfuscation
- Use multihop: Adds additional layer of complexity
- Change ports frequently: Avoid pattern detection
- Combine with DAITA: Additional traffic obfuscation
Security Considerations
Obfuscation vs. Encryption
Additional Encryption Layers
Some methods add encryption:- Shadowsocks: ChaCha20-Poly1305 encryption on top of WireGuard
- QUIC: TLS 1.3 encryption on top of WireGuard
- udp2tcp / LWO: No additional encryption, just encapsulation
Best Practices
Choosing the Right Method
- General Blocking
- Sophisticated DPI
- UDP Blocked
- Performance Critical
Start with Automatic mode:
Testing Strategy
- Test without obfuscation first: Establish baseline
- Try automatic mode: Let app choose
- Test specific methods: If automatic fails
- Document what works: For future reference
Operational Security
- Don’t advertise: Don’t publicly share which method works in your location
- Vary methods: Occasionally change to avoid pattern detection
- Combine features: Use with multihop for additional obfuscation
Related Features
- WireGuard Protocol - Base protocol being obfuscated
- Multihop - Applies obfuscation to entry hop
- DAITA - Traffic analysis protection (complementary)
- Quantum-Resistant Tunnels - Works with all obfuscation methods