VPN Guide · 1 min read

Split tunneling: route only selected apps through the VPN

Full-tunnel VPN sends everything through the exit; split tunneling sends only what you choose, keeping the rest on your normal connection. Here is how it works, including the WireGuard AllowedIPs trick that does it with zero extra software.

Full tunnel vs split tunnel

By default a VPN is a full tunnel: every packet from your device goes through the encrypted exit. Split tunneling changes that — you choose which traffic uses the tunnel and which stays on your ordinary connection. Two common flavours exist: app-based (route this app through the VPN, leave that one direct) and destination-based (route these IP ranges or sites through the VPN, everything else direct).

The appeal is practical. Keep a bank site or a latency-sensitive game on your fast local connection while a scraper or a geo-restricted service goes through the VPN. Or reach local network devices — a printer, a NAS — that a full tunnel would otherwise cut off. The cost is that any traffic outside the tunnel is not protected, which is a real trade-off, not a free lunch.

Split tunnel with WireGuard AllowedIPs

In WireGuard, the peer's AllowedIPs is the routing rule. Narrow it from 0.0.0.0/0 to just the destinations you want tunnelled, and everything else stays on your normal link.

ini
# --- Full tunnel (everything via VPN): ---
[Peer]
PublicKey = SERVER_PUBKEY
Endpoint = VPN_HOST:51820
AllowedIPs = 0.0.0.0/0, ::/0

# --- Split tunnel by DESTINATION: only these ranges use the VPN ---
[Peer]
PublicKey = SERVER_PUBKEY
Endpoint = VPN_HOST:51820
# e.g. tunnel only a specific service's subnets; rest goes direct:
AllowedIPs = 203.0.113.0/24, 198.51.100.0/24

# --- Inverse split (tunnel everything EXCEPT the LAN): ---
# keep 0.0.0.0/0 but exclude your local subnet from the tunnel by
# splitting the route, or use your client's "excluded routes" option.
# On Linux you can also mark packets per-app with 'wg-quick' + fwmark
# and route only that mark into the wg interface.

When to split, and the honest risk

Split tunneling shines when full-tunnel is overkill or gets in the way: accessing local devices, keeping trusted high-bandwidth traffic (video calls, backups) off the VPN, running one app abroad while the rest stays home, or reducing load on a metered exit. WireGuard's AllowedIPs makes destination-based splitting trivial — it is literally the routing table for the tunnel — and many clients add per-app splitting on top.

The honest warning: anything outside the tunnel travels over your real IP with no protection. If you split by app, be certain the app you left out is not one that leaks something sensitive, and remember that a split tunnel weakens the "everything is hidden" guarantee of a full tunnel. Watch too for DNS leaks — DNS may go out the wrong path if not pinned. The s4m VPN supports both modes; use full tunnel when privacy is the priority and split only when you have a concrete reason and understand what stays exposed.

Share this page
FAQ

Questions, answered

How do I split tunnel with WireGuard?

Use the peer's AllowedIPs field as a routing rule. Set it to 0.0.0.0/0 for a full tunnel, or narrow it to specific IP ranges so only those destinations go through the VPN and everything else uses your normal connection. Many clients also offer per-app splitting.

Is split tunneling less secure than a full tunnel?

Yes, by design. Any traffic you route outside the tunnel travels over your real IP with no VPN protection. Use split tunneling only when you have a concrete reason, and make sure nothing sensitive rides on the excluded path. Full tunnel is safer when privacy is the goal.

Full tunnel or split, your call

The s4m WireGuard/OpenVPN VPN supports both — full tunnel when privacy comes first, split via AllowedIPs when you need local devices or trusted traffic to stay direct.

People found this page by searching for

Real search phrases this page answers — the linked ones open the page that covers them in depth.