GuiderNätverk och VPNWireGuard vs Headscale

WireGuard, Headscale eller Tailscale för ett privat nätverk mellan ditt teams enheter och servrar

Vanlig WireGuard, Headscale och Tailscales värdtjänst kopplar alla ihop datorer, telefoner och servrar i ett privat nätverk. Vi kopplade ihop samma server och klienter med WireGuard och Headscale, mätte hastighet, fördröjning och minne, och jämförde åtkomstregler, reläer, avbrott och kostnad.

Testad på WireGuard (wireguard-tools 1.0.20210914), Headscale 0.29.5 och Tailscale 1.104.1 på Debian 13 (trixie) på en server hos Melonslab Uppdaterad 14 oktober 2026

Rekommenderad server för guiden

SSD RAID 1 · ECC DDR4 · 10 Gbit

VC-P Alloy · 2 vCPU · 8 GB Minne · 60 GB Lagring

Månadsvis, ingen bindningstid 7 dagars öppet köp

100 kr/mån

Beställ nu
På den här sidan

Det korta svaret

Välj vanlig WireGuard om du har en handfull enheter som framför allt ska nå en server, och inte har något emot att ändra i en konfigurationsfil för varje enhet du lägger till eller tar bort. Välj Headscale om du vill ha det Tailscale gör, enheter som hittar varandra direkt, namn, åtkomstregler och exit nodes, med listan över enheter på din egen server och inget att betala. Välj Tailscales värdtjänst om du hellre slipper köra styrservern, accepterar att Tailscale känner till dina enheter, och betalar för den när du använder den i jobbet: gratispaketet är bara för icke-kommersiellt bruk.

Det här testade vi

Vi använde en Melonslab VC-P Alloy (2 vCPU, 8 GB) med Debian 13 och grunden från Podman-guiden. På samma server skapade vi tre klienter, var och en i ett eget nätverksnamnområde (network namespace): en med publik adress, som en server hos en annan leverantör, en bakom NAT som en router hemma, som stoppar inkommande anslutningar, och en tredje att lägga till och ta bort. Själva servern var också med i nätverket.

  • WireGuard: vi följde vår WireGuard-guide med servern som nav och två klienter som "telefonen" och "datorn", och lade sedan till åtkomstregler med ufw.
  • Headscale: vi följde vår Headscale-guide, anslöt servern och två klienter, en via inloggningslänken och en med en nyckel, och lade till en policyfil för åtkomstregler.
  • Tailscales värdtjänst testades inte. För att registrera dig behöver du ett konto hos Google, Microsoft, GitHub, Apple eller en annan identitetsleverantör, och Tailscale har ingen registrering med e-postadress, så vi kunde inte skapa ett konto utan en människa. Allt vi skriver om tjänsten kommer från Tailscales egen dokumentation och prissida, som vi läste den 14 oktober 2026. Den använder samma Tailscale-appar som Headscale, så det vi såg på enheterna gäller den också.

Med båda gjorde vi samma sak: kopplade ihop enheterna, mätte hastigheten med iperf3 och fördröjningen med ping, jämfört med utan tunnel, lade till och tog bort en enhet, begränsade en klient till en port på servern, skickade trafik genom en exit node och stoppade styrservern för att se vad som fortsatte att fungera.

Alla klienter kördes på samma server med 2 vCPU som navet, så krypteringen i båda ändar av varje tunnel delade på samma två kärnor. Hastigheterna nedan jämför de tre sätten med varandra på lika villkor. Mellan två riktiga datorer över internet är det oftast din uppkoppling som sätter gränsen.

Siffrorna

Utan tunnelWireGuardHeadscale och Tailscales app
Klient till server, hastighet18,3 Gbit/s1,15 Gbit/s1,34 Gbit/s
Klient till server, fördröjning0,12 ms0,55 ms1,2 ms
Klient till klient, hastighet14,8 Gbit/s683 Mbit/s, via servern1,20 Gbit/s direkt, genom NAT
Klient till klient, fördröjning0,17 ms0,83 ms, via servern1,2 ms direkt
Klient till klient, via relä52 Mbit/s, 3,3 ms
Tid för guidens kommandonomkring 20 sekunderomkring 45 sekunder, och några sekunder per enhet
Minne på serverni stort sett inget: den är en del av Linux-kärnanHeadscale 16 till 20 MB, och omkring 50 MB för Tailscale-appen på varje enhet
Diskunder 1 MB paketHeadscales avbild 78 MB, dess data under 1 MB, och 75 MB för Tailscale-paketet på varje Linux-enhet
Containraringa1

Tiderna är hur länge kommandona tog att köra, inte tiden du behöver för att läsa guiden och skriva in dem. Headscale behöver också ett namn med certifikat innan enheter kan ansluta; Caddy fick det inom en minut.

Installation

WireGuard är några paket, ett nyckelpar per enhet och en konfigurationsfil på servern med ett [Peer]-block per enhet. Varje enhet får en egen fil, eller en QR-kod för en telefon. Den är snabbast att få igång, och det finns inget att hålla uppdaterat utöver Debians paket. Vår guide sätter upp servern som en VPN ut mot internet. För att enheterna också ska nå varandra via servern behövde vi ufw route allow in on wg0 out on wg0, som inte finns i guiden.

Headscale är en container bakom Caddy, med en A- och AAAA-post och STUN-porten öppen. Varje enhet kör Tailscale-appen, pekad mot din server. Telefoner och datorer loggar in via en länk, och du godkänner dem med ett kommando på servern; servrar ansluter med en nyckel som fungerar en gång. Varje steg i vår guide fungerade som det står med Headscale 0.29.5, som precis hade ersatt 0.29.4.

Tailscales värdtjänst behöver enligt dokumentationen ingen server: du loggar in via en identitetsleverantör, installerar appen på varje enhet och loggar in. Det är klart minst jobb av de tre.

Lägga till och ta bort enheter

WireGuard: en ny enhet är ett nytt nyckelpar, ett nytt [Peer]-block och, i vår guide, en rad för dess IPv6-adress, och sedan en omstart av WireGuard. Omstarten kopplade bort alla anslutna enheter i omkring 15 sekunder innan deras tunnlar kom tillbaka. wg set kan lägga till en enhet utan omstart, men då kan filen och det som körs glida isär. Att ta bort en enhet är samma sak baklänges. Tar du bort dess rader i wg0.conf före omstarten blir dess IPv6-proxy kvar, eftersom WireGuard läser den nya filen när den stoppar; ta bort den med ip -6 neigh del proxy ADRESS dev eth0.

Headscale: en ny enhet med nyckel var ansluten 8,5 sekunder efter att vi skapade nyckeln. headscale nodes delete stängde ute en enhet direkt, och den försvann ur de andra enheternas listor. Inget startas om och ingen annan märker något.

Tailscale: samma sak, från administrationskonsolen, med godkännande av enheter och inbjudningar ovanpå.

Direkt, genom NAT eller via relä

WireGuard ansluter varje enhet till adressen i dess Endpoint, servern. En enhet bakom NAT når servern men inte en annan enhet bakom NAT, så i praktiken går allt via navet. Det passar ett team som ska nå servrar, men trafiken mellan två enheter tar dubbla vägen: vår hastighet från klient till klient via servern var ungefär hälften av vad Tailscales app klarade direkt.

Headscale med Tailscale-appen fick en direkt anslutning från klienten bakom NAT till de andra: tailscale ping svarade via den andra klientens adress och port, inte via DERP. När vi blockerade all UDP från den klienten gick den över till Headscales eget relä, via DERP(headscale), med 52 Mbit/s och 3,3 ms i stället för 1,2 Gbit/s och 1,2 ms. Trafik via reläet är fortfarande krypterad hela vägen, men reläet är en flaskhals: räkna med det om dina enheter sitter bakom brandväggar som stoppar UDP.

Tailscales värdtjänst använder samma appar och ansluter direkt på samma sätt, och går via Tailscales DERP-servrar runt om i världen när det inte går. Dokumentationen beskriver också peer relays, egna enheter som skickar vidare trafik åt andra.

Namn

WireGuard har inga namn. Du använder adresser, skriver in namn i varje enhets hosts-fil eller kör en egen DNS-server som Unbound.

Headscale gav varje enhet ett namn med MagicDNS, som c2.tail.example.com, och klienterna slog upp varandras namn. Tailscale-appen på Linux skriver om /etc/resolv.conf till 100.100.100.100 medan den är ansluten, också på servern, och återställer den med tailscale down.

Tailscale gör samma sak, med namn under en ts.net-domän som Tailscale väljer.

Åtkomstregler

Vi begränsade en klient till TCP-port 8080 på servern och inget annat.

WireGuard: brandväggen på servern är åtkomstkontrollen. ufw allow in on wg0 from 10.8.0.2 to any port 8080 proto tcp lät klienten nå port 8080 och ingen annan; trafik mellan enheter styr du med ufw route-regler. Det fungerar, men reglerna skrivs per adress, och inget kopplar en adress till en person.

Headscale: vår guide sätter inte upp någon policy, och utan en når varje enhet alla andra enheter och alla portar. Vi lade till en policyfil, monterade den i containern och angav den i config.yaml under policy.path, med två grants: anna@ når allt, och bob@ når tcp:8080 på servern. Bobs klient nådde port 8080 och inget annat, och kunde inte pinga Annas enheter, medan Annas kunde pinga hans. Reglerna följer användare och taggar, inte adresser.

En sak att känna till: Tailscale-appen lägger in en egen brandväggskedja före ufw och släpper igenom allt på tailscale0. Dina ufw-regler gäller alltså inte för trafik över ditt tailnet, så det är policyn som skyddar servern.

Tailscale använder samma policyspråk, som du redigerar i administrationskonsolen, med tester och en historik över ändringar. Gratispaketet Personal tillåter tre grupper, Standard 10 och Premium 300.

Exit nodes och subnät

WireGuard: vår guide är redan en exit node: enheter med AllowedIPs = 0.0.0.0/0, ::/0 surfar via servern, och varje enhet får en egen publik IPv6-adress. För att nå ett nätverk bakom en enhet lägger du till det i AllowedIPs på båda sidor och routar det.

Headscale: vi gjorde servern till exit node med tailscale set --advertise-exit-node, och en klient till router för ett nätverk bakom den med --advertise-routes. Båda behövde godkännas med headscale nodes approve-routes, och sedan surfade klienten med serverns IPv4- och IPv6-adress, och servern nådde nätverket bakom klienten. Inget av det finns i vår guide. Till skillnad från vår WireGuard-guide delar enheterna serverns IPv6-adress i stället för att få en var.

Tailscale: samma sak, godkänt i administrationskonsolen.

Nycklar och utgångstid

WireGuard-nycklar går aldrig ut. Att byta en betyder ett nytt nyckelpar och ändringar i både enhetens fil och serverns, och en enhet du glömmer att ta bort fortsätter att fungera.

Headscale-nycklar går inte heller ut som standard (node.expiry: 0). Du kan ställa in en standardtid, eller låta en enhet gå ut med headscale nodes expire, som loggade ut vår klient direkt. När den loggade in igen med tailscale up --force-reauth fick den en ny nyckel och behöll sitt namn och sin adress.

Tailscale låter enheternas nycklar gå ut efter 180 dagar som standard, går att ändra mellan 1 och 180 dagar, och kan stänga av utgångstiden per enhet, enligt dokumentationen.

Det här vet styrservern

WireGuard har ingen styrserver. Din server känner till varje enhets publika nyckel, tunneladress och den adress den senast anslöt från.

Headscale sparar för varje enhet: användare, namn, nycklar, tunneladresser, de publika och lokala adresser den kan nås på, när den senast sågs, och det den rapporterar om sig själv: operativsystem och kärnversion, appversion, distribution, om UDP fungerar och vilket relä som är närmast. Den loggade också den riktiga adress varje enhet anslöt från. Allt ligger på din server, i en SQLite-fil.

Tailscale-appen skickar själv loggar till log.tailscale.com som standard. Headscale säger åt apparna att sluta, men våra klienter hade redan skickat omkring 7,5 kB loggar från starten innan de anslöt till den. Vill du att inget skickas, starta appen med --no-logs-no-support, eller på Linux, skriv TS_NO_LOGS_NO_SUPPORT=true i /etc/default/tailscaled.

Tailscales värdtjänst ser samma information om enheterna, och vem som loggade in via vilken identitetsleverantör. Apparna skickar också loggar om vad de gör till Tailscale, bland annat när anslutningar öppnas och stängs, om du inte stänger av det per enhet; Tailscale skriver att de då kanske inte kan ge support. Network flow logs, som visar vilka enheter som pratar med vilka, är frivilliga och ingår i Premium.

När styrservern ligger nere

WireGuard: navet är nätverket. Ligger servern nere gör allt som går genom den det också.

Headscale: vi stoppade den. Direkta anslutningar fortsatte att fungera så länge vi tittade, och namnen fortsatte att slås upp. Anslutningen via relä slutade direkt, eftersom Headscales relä körs i samma container. En klient som vi startade om medan Headscale låg nere kom tillbaka utloggad och nådde ingen, och nya enheter kunde inte ansluta. När Headscale startade igen var den omstartade klienten tillbaka inom 4 sekunder och den via relä inom 6.

Tailscales värdtjänst är byggd på samma sätt: enligt dokumentationen och Tailscales tekniska blogg fortsätter befintliga anslutningar att fungera, medan nya enheter och ändrade regler får vänta. Dess reläer är separata servrar på många platser, så de går inte ner med styrservern.

Appar

WireGuard har officiella appar för Android, iOS, macOS, Windows och Linux, och finns inbyggt i många routrar. Den har bredast stöd av de tre.

Headscale fungerar med Tailscales officiella appar för Linux, Windows, macOS, Android, iOS och iPadOS; du pekar varje app mot din server med några tryck i en debug- eller kontomeny. Headscales dokumentation listar exit nodes, subnet routers, MagicDNS, Taildrop, Taildrive och Tailscale SSH som stödda, och Funnel, Serve och network flow logs som inte klara. Den har inget eget webbgränssnitt: du sköter den med kommandon på servern.

Tailscale har samma appar, och en administrationskonsol på webben för enheter, användare och regler.

Uppdateringar och säkerhetskopior

WireGuard är en del av Linux-kärnan, och verktygen kommer från Debian, så unattended-upgrades håller den uppdaterad. Säkerhetskopiera /etc/wireguard, där alla nycklar ligger.

Headscale följer taggen 0.29, som Podman uppdaterar varje dag. Till 0.30 och senare uppgraderar du för hand, en version i taget, efter att ha läst versionsinformationen. Säkerhetskopian är en volym och konfigurationsfilen. Tailscale-apparna uppdateras för sig; Headscale 0.29 avvisar appar äldre än 1.80.

Tailscales värdtjänst uppdateras av Tailscale; du uppdaterar bara apparna.

Licens och kostnad

Vi kontrollerade projektens licenser och Tailscales prissida den 14 oktober 2026.

  • WireGuard är GPLv2 i Linux-kärnan och i wireguard-tools. Apparna är MIT, och Apache 2.0 på Android. Den kostar ingenting.
  • Headscale är BSD 3-clause. Det är ett fristående projekt, skilt från Tailscale Inc. Den kostar ingenting.
  • Tailscales klient, tailscaled och kommandot tailscale, är BSD 3-clause. Styrservern och de grafiska apparna för macOS, Windows och iOS är inte öppen källkod. Paketen:
    • Personal, gratis, för upp till 6 användare och bara icke-kommersiellt bruk.
    • Standard, 8 dollar per användare och månad.
    • Premium, 18 dollar per användare och månad, med network flow logs, loggströmning och fler grupper.
    • Enterprise, pris på förfrågan.

    Företag får prova i 14 dagar. Ett team som använder Tailscale i jobbet behöver Standard eller högre, så ett team på tio personer betalar 80 dollar i månaden.

Vilken ska du välja?

  • Några personer som ska nå en eller två servrar? Vanlig WireGuard. Den är snabbast per anslutning, har inget att köra utöver kärnan, inget att logga in på och inget som går ut. Svagheterna: varje ändring är en ändring i en fil och, i vår guide, en omstart som kopplar bort alla i några sekunder; enheter når bara varandra via servern; det finns inga namn; och åtkomstregler är brandväggsregler per adress.
  • Ett team med datorer, telefoner och servrar på många ställen, och du vill äga styrservern? Headscale. Du får direkta anslutningar genom NAT, namn, åtkomstregler per användare, exit nodes och inget att betala, med din lista över enheter på din egen server. Svagheterna: du kör och uppdaterar en tjänst till, det finns inget webbgränssnitt, åtkomstregler kräver en policyfil som vår guide inte sätter upp, reläet går ner med den, Tailscale-appen går förbi ufw, och apparna skickar loggar från starten till Tailscale om du inte stänger av det.
  • Samma sak, men du vill inte köra något själv? Tailscales värdtjänst. Den är minst jobb och mest färdig, med en administrationskonsol, reläer runt om i världen och support. Svagheterna: Tailscale ser alla dina enheter, gratispaketet är inte för jobbet, och ett team betalar 8 dollar per användare och månad eller mer.

WireGuard och Headscale går båda bra att köra på paketet Alloy och använder nästan inget minne, så samma server kan köra dina andra appar. Headscale behöver grunden från Podman-guiden med Caddy; WireGuard behöver bara Debian.

Kör det på din egen server

SSD RAID 1 · ECC DDR4 · 10 Gbit

VC-P Alloy

100 kr/mån

vCPU
2
Minne
8 GB
Lagring
60 GB
Trafik
10 TB
Performance
SSD · RAID 1
  • Full root-åtkomst
  • Nativt /64 IPv6
  • RAID-skyddad lagring
  • Malmö, Sverige
  • Månadsvis, ingen bindningstid
  • 7 dagars öppet köp
Alla guider