cheat-sheets

Mesh VPN Comparison

A mesh VPN connects devices directly to each other (with a relay as fallback) instead of through one central gateway. This sheet compares the common options for a homelab: Tailscale, Headscale, NetBird, ZeroTier and plain WireGuard. General VPN concepts are in VPN.

Based on each project’s own documentation. Where the docs were not checked a cell says so. Check the current docs before choosing, as these projects change quickly.

At a Glance #

TailscaleHeadscaleNetBirdZeroTierPlain WireGuard
Data planeWireGuardWireGuard (uses Tailscale clients)WireGuardZeroTier protocol (not verified as WireGuard)WireGuard
Control planeHosted by TailscaleSelf-hosted, single tailnetCloud or self-hostedCentral (hosted) or own controllerNone (you manage keys and peers)
ClientsOfficial TailscaleOfficial TailscaleNetBirdZeroTierWireGuard
NAT traversalDirect, DERP relaysDirect, embedded or Tailscale DERPICE and STUN, relay over 443Direct on UDP 9993, root servers, TCP fallbackManual (needs one reachable endpoint)
Subnet routingYesYes, approve routesYes (Networks)Managed routesAllowedIPs and forwarding
Exit nodeYesYesYes (route 0.0.0.0/0)Documented guide (not read)AllowedIPs = 0.0.0.0/0
Access controlACLsACL policy fileGroup policies, allow-onlyRules and tagsFirewall rules only
SSOYesOIDCYes, embedded Dex when self-hostedNot verifiedNone
LicenceNot checked here“Open source” (name not checked)“Open source” (name not checked)BSL 1.1 (client)GPL kernel module (not checked here)

How to Choose #

NEEDPICK
Easiest setup, someone else runs the coordination serverTailscale
Tailscale clients and polish, but you own the control serverHeadscale
Self-hosted with a dashboard, groups and policiesNetBird
Flat virtual LAN, join by network IDZeroTier
Two or three fixed endpoints, no extra softwareWireGuard
Public access to a web service, not private accessCloudflare Tunnel

Trade-offs #

  • Self-hosting the control plane removes the dependency on a vendor, but you run an internet-facing service and its backups and updates. If it is down, existing connections usually keep working but new devices cannot join (the general behaviour, check each project).
  • A relay is a fallback, not the normal path. Traffic is end-to-end encrypted, but a relay sees volumes and timing.
  • Headscale serves one tailnet only and tracks the Tailscale client’s behaviour, so a client update can need a server update.
  • NetBird Cloud-only features include SCIM provisioning, traffic event logging and peer approval.
  • Plain WireGuard has no discovery, so every peer needs a configured endpoint and key. It is the lightest and most transparent option for a fixed set of sites.

See Also #

Search all sheets

Tip: / or Ctrl/Cmd+K to open, Esc to close.