WireGuard vs Tailscale vs Headscale: wat moet u kiezen?
Tailscale is WireGuard met een control plane. Ontdek de verschillen in beheer en netwerkstructuur. Wij leggen uit wanneer u kiest voor standaard WireGuard of zelfgehoste Headscale.
WireGuard versus Tailscale: het korte antwoord
De keuze tussen WireGuard en Tailscale is geen keuze tussen twee protocollen, want Tailscale is WireGuard. Tailscale gebruikt dezelfde encryptie en dezelfde tunnel, maar voegt daar een control plane aan toe: een coördinatieserver die publieke sleutels uitwisselt, adressen toewijst, NAT-traversal (network address translation) uitvoert en toegangsbeleid toepast. U kiest in feite hoeveel van die coördinatie u zelf wilt beheren.
Er zijn drie eerlijke antwoorden. Gebruik standaard WireGuard wanneer u één server heeft en een handvol clients die daar allemaal verbinding mee maken. Gebruik Tailscale wanneer u wilt dat elke machine elke andere machine kan bereiken zonder dat u configuratiebestanden hoeft te onderhouden. Gebruik Headscale wanneer u die mesh-structuur wilt, maar niet wilt dat een derde partij de lijst met nodes beheert.
Wat het control plane u daadwerkelijk oplevert
Standaard WireGuard biedt geen discovery. Elke peer is een tekstblok dat u handmatig schrijft: een public key, een AllowedIPs-regel en een Endpoint als die peer bereikbaar is. Het toevoegen van één machine aan een netwerk van tien betekent dat u tien configuratiebestanden moet bewerken, omdat elke kant de sleutel van de andere nodig heeft. Daarom is bijna elke zelfgehoste WireGuard-opstelling een hub-and-spoke-model: één server met een publiek IP-adres en clients die alleen met die server communiceren.
Een control plane maakt handmatig bewerken overbodig. Elke node registreert zich eenmalig, ontvangt een adres uit het 100.64.0.0/10 CGNAT-bereik (carrier grade NAT) en krijgt de public keys van de nodes waarmee deze mag communiceren. De tunnel blijft een directe WireGuard-verbinding tussen twee peers en uw verkeer gaat nooit via de coördinatieserver. De server verwerkt enkel metadata: wie er bestaat, welke sleutel bij wie hoort en wie met wie mag praten.
Dit levert drie concrete voordelen op.
NAT traversal. Twee laptops achter twee thuisrouters hebben onderling geen publiek IP-adres. Tailscale gebruikt STUN (session traversal utilities for NAT) om het externe adres en de poort van beide kanten te achterhalen. Vervolgens sturen beide kanten tegelijkertijd pakketten, zodat elke router eerst een uitgaande stroom ziet en het antwoord accepteert. Wanneer dit mislukt, valt het verkeer terug op een DERP-relay, een versleutelde relay die door Tailscale wordt beheerd. Uw data blijft end-to-end versleuteld via de relay, omdat de relay nooit over de sleutels beschikt. Voer tailscale status uit en elke peer-regel toont direct of relay. Voer tailscale netcheck uit om te zien welke relay het dichtstbij is en of uw netwerk UDP überhaupt toestaat.
Sleutelrotatie met verloopdatum. WireGuard-sleutels verlopen nooit. Een sleutel die u drie jaar geleden heeft uitgegeven, werkt voor altijd, tenzij u het peer-blok handmatig verwijdert. Tailscale laat nodesleutels daarentegen verlopen; vanaf juli 2026 is de standaard verlooptermijn op een nieuwe tailnet 180 dagen. Een machine die niet opnieuw is geauthenticeerd, stopt met verbinden. U kunt het verlopen per apparaat uitschakelen voor een server of een subnet router waar niemand aanwezig is om in te loggen.
Beleid in plaats van routing. In standaard WireGuard is AllowedIPs tegelijkertijd de routeringstabel en de toegangscontrolelijst (ACL). Hierdoor moet "alice mag de database bereiken" worden uitgedrukt als een IP-bereik. Tailscale hanteert een afzonderlijk beleidsbestand waarin regels gebruikers, groepen en tags benoemen. Een regel kan bepalen dat tag:laptop de tag:db mag bereiken op poort 5432 en niets anders; die regel blijft geldig, zelfs als een machine een nieuw adres krijgt.
Wat de control plane u kost
De coördinatieserver kent uw netwerk. Deze bevat de publieke sleutel van elk knooppunt, elke knooppuntnaam, de uitgegeven adressen en het beleid. Bij een gehoste Tailscale-omgeving is dat een bedrijf waar u geen controle over heeft. Uw pakketten zijn voor hen niet leesbaar, omdat de WireGuard private keys op uw machines blijven, maar de structuur van uw netwerk is voor hen inzichtelijk. Bovendien hangt uw vermogen om verbinding te maken af van de beschikbaarheid van hun dienst en de status van uw account. Hoe zwaar dit weegt, hangt af van wat een gecompromitteerde coördinatieserver of een gestolen identiteitsaccount daadwerkelijk zou kunnen doen met de aanwezige gegevens; dit is waar het vertrouwensmodel van Tailscale volledig moet worden gelezen.
Er is een tweede kostenpost die gemakkelijk over het hoofd wordt gezien. Tailscale is een daemon op elke machine, dus het is software die u nu op elke machine moet patchen. Standaard WireGuard op Ubuntu 24.04 is een kernelmodule die met de distributie wordt meegeleverd en wordt bijgewerkt met de kernel.
De derde kostenpost is de facturering. Per juli 2026 is het Personal-abonnement gratis met onbeperkte apparaten voor maximaal 6 gebruikers, Standard kost $8 per gebruiker per maand en Premium kost $18 per gebruiker per maand. Een huishouden blijft gratis. Een team van tien personen niet. Of u die grens overschrijdt, is een kwestie van licenties in plaats van apparaten, en wat het gratis abonnement daadwerkelijk dekt is het lezen waard voordat u de zevende gebruiker uitnodigt.
Wanneer standaard WireGuard de juiste keuze is
Kies voor standaard WireGuard wanneer de topologie daadwerkelijk een hub-and-spoke-model is. Eén VPS met een publiek IP-adres, drie of vier apparaten die daarmee verbinden, en geen vereiste dat deze apparaten elkaar onderling kunnen bereiken. De configuratie past op één scherm, er is geen daemon om bij te werken, geen account om te verliezen en er bevindt zich geen externe dienst tussen u en uw server.
Het is ook de juiste keuze wanneer u wilt begrijpen op welke laag al het overige is gebouwd. Zelf een WireGuard VPN hosten op een VPS doorloopt het genereren van sleutels, wg0.conf, IP-forwarding, NAT en handshake-fouten; al deze mechanismen draaien nog steeds onder een tailnet. Als u de oudere optie nog overweegt, behandelt WireGuard vs OpenVPN de vier gevallen waarin OpenVPN een voordeel behoudt.
De installatie is kort:
sudo apt update && sudo apt install -y wireguard
sudo modprobe wireguard && echo okWaar standaard WireGuard minder prettig wordt, is op het moment dat elk apparaat elk ander apparaat moet kunnen bereiken. Een volledige mesh van N nodes vereist N maal N min één peer-blokken. Bij zes apparaten zijn dat dertig blokken die handmatig synchroon moeten worden gehouden, en een dubbel AllowedIPs-item kaapt stilletjes het verkeer weg van de peer die het als eerste had, zonder dat er ergens een foutmelding verschijnt.
Wanneer Tailscale de juiste oplossing is
Kies voor Tailscale wanneer de machines mobiel zijn. Laptops op hotelnetwerken, een telefoon op mobiele data, of een thuisserver achter een router waar u geen beheer over heeft. Dit zijn precies de situaties die standaard WireGuard slecht afhandelt, omdat geen van beide zijden een stabiel openbaar eindpunt heeft om in Endpoint te plaatsen.
Het installeren van de client gebeurt met één commando via het officiële installatiescript:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale statustailscale up toont een URL. Open deze, log in, en de machine wordt toegevoegd. Er hoeven geen sleutels te worden gekopieerd en er hoeven geen inkomende poorten te worden geopend, omdat de daemon een uitgaande verbinding maakt met de coördinatieserver en deze openhoudt. Dat is ook de reden waarom een Tailscale-node werkt op een netwerk waar u geen enkele firewall beheert.
Twee instellingen doen daarna het meeste nuttige werk. Een subnet router adverteert een volledig LAN in het netwerk, zodat u de client niet op elk apparaat hoeft te installeren:
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
sudo tailscale set --advertise-routes=192.0.2.0/24De route blijft inactief totdat u deze goedkeurt in de admin console. Dit is een bewuste keuze: een node kan niet uit zichzelf een route in uw netwerk injecteren. Linux-clients hebben daarnaast sudo tailscale set --accept-routes nodig, omdat Linux standaard geen geadverteerde routes accepteert. Een route die aan de serverzijde goedgekeurd lijkt, doet dus niets op een Linux-laptop totdat u dit instelt. Als dit de configuratie is die u zoekt, helpt het draaien van een subnet router op een VPS u door de goedkeuringsstap en de forwarding-instellingen in de juiste volgorde, zodat u geen half werkende route krijgt.
Een exit node stuurt al het verkeer van een client door één machine. Dit is het volledige tunnelgedrag dat mensen doorgaans bedoelen met "een VPN":
sudo tailscale set --advertise-exit-nodeDie flag is het eenvoudige gedeelte, en het omzetten van een VPS naar een exit node behandelt wat daarna komt: het goedkeuren van de route in de admin console en het corrigeren van het DNS- en IPv6-gedrag, omdat verkeer anders via de verkeerde weg naar buiten gaat. Als u slechts één webservice wilt bereiken in plaats van een heel netwerk, dan zorgen serve en funnel voor HTTPS voor een enkele lokale poort, ofwel alleen binnen de tailnet of openbaar toegankelijk voor het internet.
Wanneer Headscale de juiste keuze is
Headscale is een open-source implementatie van de coördinatieserver die u op uw eigen VPS draait. De officiële Tailscale-clients maken verbinding met deze server in plaats van met de gehoste dienst:
sudo tailscale up --login-server https://headscale.example.comEr verandert niets aan het datapad. Het blijft WireGuard en de verbinding verloopt nog steeds rechtstreeks tussen peers waar het netwerk dit toelaat. Wat wel verandert, is dat de nodelijst, de sleutels en het beleid worden opgeslagen in een SQLite-bestand op uw eigen schijf. Niemand van buitenaf kan de structuur van uw netwerk inzien, uw account uitschakelen of u per gebruiker factureren.
De keerzijde is dat het extra werk vereist. U beheert nu een publieke HTTPS-dienst, wat betekent dat u een DNS-naam, een certificaat en een reverse proxy nodig heeft die WebSocket-upgrades correct doorstuurt. U bent zelf verantwoordelijk voor de uptime; als de coördinatieserver offline is, kunnen nieuwe nodes zich niet registreren en kunnen bestaande nodes geen wijzigingen ophalen. Headscale bevindt zich bovendien nog onder versie 1.0 en kleine releases bevatten soms ingrijpende wijzigingen. Lees daarom voor elke upgrade de changelog. Headscale draaien als uw eigen Tailscale-controlserver behandelt de installatie, config.yaml, preauth-sleutels en de poorten die moeten worden geopend.
Eén kanttekening waar gebruikers vaak pas laat achter komen: Headscale beschikt niet over het wereldwijde relay-netwerk van Tailscale. Wanneer twee peers geen directe verbinding kunnen maken, moet u de ingebouwde relay op uw eigen server inschakelen of de configuratie naar een andere server verwijzen. Deze relay is slechts één machine in één regio, in plaats van een wereldwijd netwerk. Peers aan de andere kant van de wereld zullen dit verschil merken. Als u dit onderdeel liever niet zelf configureert, is NetBird zelf hosten een alternatief om de controlelaag in eigen beheer te houden, aangezien de quickstart-procedure het beheer, de signalering en de relay-diensten gezamenlijk op één VPS opzet.
Hoe u in één keer een beslissing neemt
Vraag uzelf af hoeveel machines elkaar moeten kunnen bereiken. Als het antwoord is dat ze allemaal alleen met de server communiceren, dan is standaard WireGuard minder software voor hetzelfde resultaat.
Vraag uzelf af of de machines stabiele publieke adressen hebben. Als de meeste zich achter NAT bevinden waar u geen controle over heeft, dan heeft u een control plane nodig. Hole punching is namelijk het lastige gedeelte en het is niet de moeite waard om dat zelf opnieuw te bouwen.
Vraag uzelf af wie de structuur van uw netwerk mag kennen. Als het antwoord externe bedrijven uitsluit, of als uw gebruikersaantal facturering per gebruiker ongunstig maakt, draai dan Headscale en accepteer dat u nu zelf de control server beheert. Als de kosten de drijfveer zijn, maak dan de rekensom voordat u zich vastlegt op de migratie. Wat een team van uw omvang daadwerkelijk betaalt hangt namelijk af van het aantal mensen met een account in plaats van het aantal machines dat u draait, en die twee getallen liggen zelden dicht bij elkaar.
U kunt uw besluit goedkoop herzien. Omdat het data plane in alle drie de gevallen hetzelfde protocol gebruikt, is de overstap van standaard WireGuard naar een gecoördineerd mesh-netwerk slechts een kwestie van een client-installatie in plaats van een herontwerp. De overstap van Tailscale naar Headscale is een kwestie van het opnieuw registreren van elke node bij een andere login-server.
Wat geen van de drie biedt
Geen van deze oplossingen is een firewall. Een tunnel bepaalt welke pakketten worden getransporteerd, niet welke services luisteren. Een server die via de tunnel bereikbaar is, blijft vanaf het internet toegankelijk op elke poort die u open heeft gelaten. Zorg er daarom voor dat UFW firewallregels op de VPS hun werk blijven doen. Het policy-bestand van Tailscale beperkt weliswaar welke andere nodes toegang hebben, maar het doet niets met de publieke interface.
Geen van deze oplossingen biedt authenticatie per service, en geen van hen houdt een audit trail bij van de acties van een gebruiker zodra deze verbonden is. Beschouw alle drie als transportmiddelen en implementeer de inlogcontroles in de applicatie zelf.
FAQ
Is Tailscale alleen WireGuard met extra stappen?
Tailscale gebruikt het WireGuard-protocol voor het datapad, dus de versleuteling en de tunnel zijn identiek. Wat het toevoegt is coördinatie: sleuteluitwisseling, toewijzing van adressen, NAT-traversal met STUN- en DERP-relays, sleutelverloop en een beleidsbestand dat gebruikers benoemt in plaats van IP-reeksen. Dat zijn de onderdelen die standaard WireGuard aan u overlaat, en dat zijn de onderdelen die complex worden zodra machines tussen netwerken wisselen.
Gaat mijn verkeer via de servers van Tailscale?
Normaal gesproken niet. Peers maken rechtstreeks verbinding met elkaar zodra de coördinatieserver ze aan elkaar heeft voorgesteld, en tailscale status toont direct op die peer-regels. Wanneer een direct pad niet kan worden opgezet, valt het verkeer terug op een DERP-relay en staat er relay op de regel. Zelfs dan vervoert de relay versleutelde pakketten en beschikt deze niet over uw private WireGuard-sleutels, waardoor de inhoud niet kan worden gelezen. Voer tailscale netcheck uit om te zien of uw netwerk het UDP-verkeer blokkeert dat nodig is voor directe verbindingen.
Kan ik Headscale gebruiken met de officiële Tailscale-apps?
Ja. Headscale spreekt hetzelfde controleprotocol, dus de officiële clients sluiten aan met sudo tailscale up --login-server https://headscale.example.com. Desktop- en mobiele apps kunnen ook naar een aangepaste inlogserver worden verwezen, hoewel de instelling op elk platform op een andere plek staat en de mobiele apps het meest waarschijnlijk een specifieke versie vereisen. Test één telefoon voordat u een heel netwerk migreert.
Moet ik nog steeds poorten openen voor Tailscale of Headscale?
Een Tailscale-client heeft geen inkomende poort nodig, omdat deze uitgaand verbinding maakt met de coördinatieserver en die verbinding openhoudt. Een zelfgehoste Headscale-server heeft wel inkomende poorten nodig: 443 voor het controleprotocol, 80 als u een HTTP-01 certificaat-challenge gebruikt, en 3478/udp alleen wanneer u de ingebouwde relay inschakelt. Standaard WireGuard heeft zijn UDP-luisterpoort, meestal 51820, nodig op de server en op elke afzonderlijke netwerkfirewall die uw provider beheert.
Welke van de drie is het snelst?
De doorvoer is gelijk, omdat alle drie de pakketten verplaatsen met WireGuard. Het verschil zit in het opzetten van de verbinding en in de padkwaliteit. Standaard WireGuard met een correcte Endpoint maakt elke keer direct verbinding. Tailscale en Headscale maken meestal direct verbinding en vallen terug op een relay wanneer het netwerk 'hole punching' blokkeert; een relayed pad voegt latentie toe. Meet uw eigen pad met tailscale ping <node>, dat rapporteert of de route direct of relayed is, of met iperf3 via de tunnel. Als dat getal ver onder uw lijnsnelheid uitkomt op een direct pad, dan is de keuze tussen de drie niet de oorzaak van het probleem, en de gebruikelijke oorzaak is een mismatch in de pad-MTU die zich op dezelfde manier gedraagt met of zonder een control plane.