WireGuard vs Tailscale vs Headscale: welke kiest u?
WireGuard is de tunnel; Tailscale voegt coördinatie toe en Headscale biedt een zelf gehost alternatief. Vergelijk beheer, kosten en de beste keuze voor uw VPS.
WireGuard vs Tailscale: het korte antwoord
WireGuard vs Tailscale is geen keuze tussen twee protocollen, omdat Tailscale WireGuard is. Tailscale gebruikt dezelfde versleuteling en dezelfde tunnel en voegt daar een control plane aan toe: een coördinatieserver die openbare sleutels uitwisselt, adressen toewijst, door NAT (network address translation) heen verbindingen tot stand brengt en toegangsbeleid toepast. U kiest hoeveel van die coördinatie u zelf wilt beheren.
Er zijn drie duidelijke antwoorden. Gebruik plain WireGuard wanneer u één server en een handvol clients hebt die allemaal daarmee verbinding maken. Gebruik Tailscale wanneer u wilt dat elke machine zonder te onderhouden configuratiebestand elke andere machine kan bereiken. Gebruik Headscale wanneer u die mesh wilt, maar niet wilt dat een externe partij de lijst met nodes beheert.
Wat het control plane u daadwerkelijk oplevert
Plain WireGuard biedt geen discovery. Elke peer bestaat uit een tekstblok dat u handmatig schrijft: een publieke sleutel, een regel AllowedIPs en een Endpoint als die peer bereikbaar is. Als u één machine toevoegt aan een netwerk van tien machines, moet u tien configuratiebestanden aanpassen, omdat beide kanten de sleutel van de andere kant nodig hebben. Daarom gebruikt vrijwel elke self-hosted WireGuard-configuratie een hub-and-spoke-model: één server met een publiek IP-adres en clients die uitsluitend met die server communiceren.
Een control plane maakt handmatige wijzigingen overbodig. Elke node registreert zich eenmaal, ontvangt een adres uit het 100.64.0.0/10 CGNAT-bereik (carrier-grade NAT) en krijgt de publieke sleutels van de nodes die hij mag bereiken. De tunnel blijft een directe WireGuard-verbinding tussen twee peers. Uw verkeer loopt nooit via de coördinatieserver. De server bevat alleen metadata: welke nodes bestaan, welke sleutel bij elke node hoort en welke nodes met elkaar mogen communiceren.
Daaruit volgen drie concrete voordelen.
NAT-traversal. Twee laptops achter twee thuisrouters hebben geen publiek IP-adres waarmee ze elkaar rechtstreeks kunnen bereiken. Tailscale gebruikt STUN (session traversal utilities for NAT) om het externe adres en de poort van beide kanten te ontdekken. Daarna sturen beide kanten op hetzelfde moment pakketten, zodat elke router eerst uitgaand verkeer ziet en het antwoord accepteert. Als dat niet lukt, valt het verkeer terug op een DERP-relay. Dat is een versleutelde relay die door Tailscale wordt beheerd. Uw gegevens blijven via de relay end-to-end versleuteld, omdat de relay de sleutels nooit bezit. Voer tailscale status uit. Elke peerregel bevat dan direct of relay. Voer tailscale netcheck uit om te zien welke relay het dichtst bij is en of uw netwerk UDP-verkeer überhaupt toestaat.
Sleutelrotatie met een vervaldatum. WireGuard-sleutels verlopen nooit. Een sleutel die u drie jaar geleden hebt uitgegeven, blijft werken totdat u het peer-blok handmatig verwijdert. Tailscale laat node-sleutels in plaats daarvan verlopen. Sinds juli 2026 is de standaardvervalperiode voor een nieuwe tailnet 180 dagen. Een machine die zich niet opnieuw heeft geauthenticeerd, kan geen verbinding meer maken. U kunt het verlopen per apparaat uitschakelen voor een server of een subnetrouter waarop niemand aanwezig zal zijn om in te loggen.
Beleid in plaats van routing. In plain WireGuard zijn AllowedIPs tegelijk de routingtabel en de toegangscontrolelijst. De regel "alice mag de database bereiken" moet daar dus als een IP-bereik worden vastgelegd. Tailscale gebruikt een afzonderlijk beleidsbestand waarin regels gebruikers, groepen en tags benoemen. Een regel kan bepalen dat tag:laptop tag:db op poort 5432 mag bereiken en niets anders. Die regel blijft van kracht als een machine een nieuw adres krijgt.
Wat het control plane u kost
De coördinatieserver kent uw netwerk. De server bevat de openbare sleutel van elk knooppunt, de naam van elk knooppunt, de toegewezen adressen en het beleid. Bij gehoste Tailscale wordt deze server beheerd door een bedrijf waarover u geen controle hebt. Dat bedrijf kan uw pakketten niet lezen, omdat de private WireGuard-sleutels op uw machines blijven staan. Het kan wel de structuur van uw netwerk zien. Bovendien is uw mogelijkheid om verbinding te maken afhankelijk van de beschikbaarheid van de service en van een actief account.
Er zijn nog kosten die gemakkelijk over het hoofd worden gezien. Tailscale draait als daemon op elke machine. U moet deze software daarom op elke machine up-to-date houden met patches. Plain WireGuard op Ubuntu 24.04 is een kernelmodule die met de distributie wordt meegeleverd en samen met de kernel wordt bijgewerkt.
De derde kostenpost is facturering. In juli 2026 is het Personal-abonnement gratis voor maximaal 6 gebruikers met een onbeperkt aantal apparaten. Standard kost $8 per gebruiker per maand en Premium kost $18 per gebruiker per maand. Voor een huishouden blijft de dienst gratis. Voor een team van 10 personen geldt dat niet.
Wanneer plain WireGuard de juiste keuze is
Kies plain WireGuard wanneer de topologie echt hub-and-spoke is. Eén VPS met een openbaar IP-adres en drie of vier apparaten die daarmee verbinding maken, zonder vereiste dat deze apparaten elkaar kunnen bereiken. De configuratie past op één scherm. Er is geen daemon die u moet bijwerken, geen account dat u kunt kwijtraken en geen externe dienst tussen u en uw server.
Het is ook de juiste keuze wanneer u de laag wilt begrijpen waarop al het andere is gebouwd. Zelf een WireGuard-VPN hosten op een VPS behandelt het genereren van sleutels, wg0.conf, IP-forwarding, NAT en handshakefouten. Elk van deze mechanismen draait nog steeds onder een tailnet. Als u de oudere optie nog overweegt, behandelt WireGuard versus OpenVPN de vier situaties waarin OpenVPN een voordeel behoudt.
De installatie is kort:
sudo apt update && sudo apt install -y wireguard
sudo modprobe wireguard && echo okPlain WireGuard wordt minder praktisch zodra elk apparaat elk ander apparaat moet kunnen bereiken. Een volledig mesh-netwerk met N nodes vereist N maal N min één peerblokken. Bij zes apparaten zijn dat dertig blokken die u handmatig gesynchroniseerd moet houden. Een dubbele AllowedIPs-vermelding leidt er bovendien stilzwijgend toe dat netwerkverkeer wordt overgenomen van de peer die deze vermelding als eerste had. Er wordt nergens een fout weergegeven.
Wanneer Tailscale de juiste keuze is
Kies Tailscale wanneer de machines van netwerk wisselen. Laptops op hotelnetwerken, een telefoon via mobiele data en een thuisserver achter een router die u niet beheert. Dit zijn precies de situaties waarin plain WireGuard slecht werkt, omdat geen van beide zijden een stabiel publiek endpoint heeft dat u in Endpoint kunt plaatsen.
U installeert de client met één opdracht uit het officiële installatieprogramma:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale statustailscale up geeft een URL weer. Open deze, meld u aan en de machine wordt toegevoegd. U hoeft geen sleutel te kopiëren en geen inkomende poort te openen, omdat de daemon een uitgaande verbinding met de coördinatieserver maakt en deze openhoudt. Daarom werkt een Tailscale-node ook op een netwerk waarop u helemaal geen firewall beheert.
Daarna doen twee instellingen het meeste nuttige werk. Een subnetrouter maakt een volledig LAN beschikbaar 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 beheerconsole. Dit is bewust: een node kan niet zelfstandig een route in uw netwerk injecteren. Linux-clients hebben ook sudo tailscale set --accept-routes nodig, omdat Linux geadverteerde routes standaard niet accepteert. Een route die aan serverzijde goedgekeurd lijkt, doet daarom nog niets op een Linux-laptop totdat u deze instelling configureert.
Een exit-node stuurt al het verkeer van een client via één machine. Dit is het volledige tunnelgedrag dat meestal met "een VPN" wordt bedoeld:
sudo tailscale set --advertise-exit-nodeWanneer Headscale de juiste keuze is
Headscale is een opensource-implementatie van de coördinatieserver en draait op een VPS die u zelf beheert. De officiële Tailscale-clients maken verbinding met deze server in plaats van met de gehoste service:
sudo tailscale up --login-server https://headscale.example.comDe gegevensroute blijft volledig ongewijzigd. Het verkeer gebruikt nog steeds WireGuard en loopt waar de netwerkomstandigheden dat toestaan rechtstreeks tussen peers. Alleen de node-lijst, de cryptografische sleutels en het beleid staan nu in een SQLite-bestand op een schijf die u zelf beheert. Externe partijen kunnen de structuur van uw netwerk niet zien, uw account niet uitschakelen en u geen kosten per gebruiker in rekening brengen.
Daar staat reëel beheerwerk tegenover. U beheert nu een openbare HTTPS-service. Daarvoor zijn een DNS-naam, een certificaat en een reverse proxy nodig die WebSocket-upgrades correct doorgeeft. U bent verantwoordelijk voor de beschikbaarheid. Als de coördinatieserver niet beschikbaar is, kunnen nieuwe nodes zich niet registreren en kunnen bestaande nodes wijzigingen niet ophalen. Headscale is bovendien nog niet op versie 1.0 en minor releases hebben incompatibele wijzigingen bevat. Lees daarom vóór elke upgrade de changelog. Headscale uitvoeren als uw eigen Tailscale-controlserver behandelt de installatie, config.yaml, preauth-sleutels en de open te stellen poorten.
Eén beperking wordt vaak pas laat ontdekt. Headscale wordt niet geleverd met het wereldwijde relaynetwerk van Tailscale. Als twee peers geen rechtstreekse verbinding kunnen maken, schakelt u de ingebouwde relay op uw eigen server in of verwijst u de configuratie naar een andere relay. Die relay is dan één server in één regio, geen wereldwijd netwerk. Peers aan de andere kant van de wereld merken dat verschil.
Hoe u in één keer beslist
Vraag hoeveel machines elkaar moeten kunnen bereiken. Als het antwoord is dat ze alleen met de server communiceren, vereist plain WireGuard minder software voor hetzelfde resultaat.
Vraag of de machines stabiele publieke adressen hebben. Als de meeste machines zich achter NAT bevinden waarover u geen controle hebt, hebt u een control plane nodig. Hole punching is namelijk het moeilijke deel en het is niet de moeite waard om dit opnieuw te bouwen.
Vraag wie de topologie van uw netwerk mag kennen. Als het antwoord externe bedrijven uitsluit, of als het aantal gebruikers facturering per seat lastig maakt, voert u Headscale uit en accepteert u dat u nu de control server beheert.
U kunt goedkoop van gedachten veranderen. Omdat het data plane in alle drie gevallen hetzelfde protocol gebruikt, bestaat de overstap van plain WireGuard naar een gecoördineerd mesh uit het installeren van een client en niet uit een herontwerp. De overstap van Tailscale naar Headscale bestaat uit het opnieuw registreren van elke node bij een andere login server.
Wat geen van de drie u biedt
Geen van de drie is een firewall. Een tunnel bepaalt welke pakketten worden doorgestuurd, niet welke services luisteren. Een server die via de tunnel bereikbaar is, blijft via het internet bereikbaar op elke poort die u open hebt gelaten. Zorg daarom dat UFW-firewallregels op de VPS hun werk blijven doen. Het beleidsbestand van Tailscale beperkt wat andere nodes kunnen bereiken. Het doet niets aan de openbare interface.
Geen van de drie biedt authenticatie per service. Geen van de drie legt vast wat een gebruiker na het maken van de verbinding heeft gedaan. Beschouw alle drie als transport en plaats de aanmeldingscontroles in de applicatie.
FAQ
Is Tailscale gewoon WireGuard met extra stappen?
Tailscale gebruikt het WireGuard-protocol voor het datapad. De versleuteling en de tunnel zijn dus hetzelfde. Tailscale voegt coördinatie toe: sleuteluitwisseling, adres toewijzen, NAT-traversal met STUN- en DERP-relays, het verlopen van sleutels en een beleidsbestand waarin gebruikers worden genoemd in plaats van IP-bereiken. Bij plain WireGuard moet u deze onderdelen zelf configureren. Dat wordt lastig zodra machines van netwerk veranderen.
Loopt mijn verkeer via de servers van Tailscale?
Normaal gesproken niet. Peers maken rechtstreeks verbinding zodra de coördinatieserver ze aan elkaar heeft voorgesteld. tailscale status toont direct op deze peerregels. Als er geen rechtstreeks pad kan worden opgezet, valt het verkeer terug op een DERP-relay en luidt de regel relay. Ook dan vervoert de relay versleutelde pakketten. De relay beschikt niet over uw private WireGuard-sleutels en kan de inhoud dus niet lezen. Voer tailscale netcheck uit om te controleren of uw netwerk het UDP-verkeer blokkeert dat nodig is voor rechtstreekse verbindingen.
Kan ik Headscale gebruiken met de officiële Tailscale-apps?
Ja. Headscale gebruikt hetzelfde control-protocol. De officiële clients maken verbinding met sudo tailscale up --login-server https://headscale.example.com. U kunt desktop- en mobiele apps ook naar een aangepaste loginserver laten verwijzen. De instelling staat echter op elk platform op een andere plaats. Vooral voor mobiele apps kan een specifieke versie nodig zijn. Test één telefoon voordat u een volledig netwerk migreert.
Moet ik nog steeds poorten openen voor Tailscale of Headscale?
Een Tailscale-client heeft geen inkomende poort nodig. De client maakt zelf verbinding met de coördinatieserver en houdt die verbinding open. Een zelf gehoste Headscale-server heeft wel inkomende poorten nodig: 443 voor het control-protocol, 80 als u een HTTP-01-certificaatuitdaging gebruikt en alleen 3478/udp wanneer u de ingebouwde relay inschakelt. Voor plain WireGuard moet de UDP-listenpoort, meestal 51820, zijn geopend op de server en op elke afzonderlijke netwerkfirewall die door uw provider wordt beheerd.
Welke van de drie is het snelst?
De doorvoer is gelijk, omdat alle drie pakketten met WireGuard transporteren. Het verschil zit in het opzetten van de verbinding en in de kwaliteit van het pad. Plain WireGuard maakt met een correcte Endpoint elke keer rechtstreeks verbinding. Tailscale en Headscale maken meestal rechtstreeks verbinding en vallen terug op een relay wanneer het netwerk hole punching blokkeert. Een pad via een relay voegt latency toe. Meet uw eigen pad met tailscale ping <node>. Deze opdracht rapporteert of de route rechtstreeks of via een relay loopt. U kunt ook iperf3 over de tunnel gebruiken.