juist im Vergleich
Worin sich juist von anderen Mesh-VPNs unterscheidet, und wann eines davon besser zu dir passt.
Der entscheidende Unterschied #
Den Verkehr übertragen die meisten Mesh-VPNs ähnlich: über verschlüsselte Tunnel zwischen den Geräten, direkt, wo das NAT es zulässt, und sonst über ein Relay. Der Unterschied liegt darin, wer bestimmt, welche Geräte zum Netz gehören, und wie man ein Gerät wieder hinauswirft.
Bei juist bestimmen das deine Admins, indem sie Änderungen im Mitgliederlog signieren, und jedes Gerät prüft diese Änderungen selbst. Dafür ist kein Server nötig, und man muss niemandem vertrauen. Wie das aufgebaut ist, erklärt die Seite Architektur.
Vier Dinge hat von den Meshes hier nur juist:
- Keine zentrale Infrastruktur, und trotzdem WireGuard. Die anderen Meshes ohne Server nutzen eigene Protokolle, und EasyTier bietet WireGuard nur als eine Möglichkeit unter mehreren. WireGuard allein kommt nicht durchs NAT.
- Ein Admin-Quorum. Du kannst für jede Änderung mehrere Admins verlangen. Dann kann keine einzelne Person ein Gerät aufnehmen.
- Routing und Namen ohne Server. Von den Meshes ohne Server veröffentlicht nur juist Dienste im Internet und lässt öffentliche Namen auf Mitglieder zeigen. Bei den anderen werden Routen und Namen von Hand in der Konfiguration jedes Geräts eingetragen, oder es gibt sie nicht.
- Durchgehend quantensicher. Jeder Tunnel mischt einen Schlüssel ein, den ein Quantencomputer nicht herausfinden kann, und jede Änderung am Netz ist mit ML-DSA signiert. Keines der anderen signiert seine Mitglieder so. Von den anderen Meshes bietet nur NetBird quantensichere Tunnel an, als experimentelle Option; reines WireGuard bekommt sie durch einen Preshared Key, den du von Hand setzt.
Auf einen Blick #
EasyTier steht für die Meshes mit gemeinsamem Geheimnis.
| Mit zentralem Server | Ohne zentralen Server | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| juist | Tailscale | Headscale | NetBird | Netmaker | ZeroTier | Nebula | Tinc | rayfish | EasyTier | WireGuard | |
| Aufbau | |||||||||||
| Keine zentrale Infrastruktur | |||||||||||
| Keine zentrale Infrastruktur | ● | – | – | – | – | – | ● | ● | ◐1 | ● | ● |
| Kein Server, dem man vertrauen muss | |||||||||||
| Kein Server, dem man vertrauen muss | ● | ◐2 | – | – | – | – | ● | ● | ● | ● | ● |
| Tunnel über WireGuard | |||||||||||
| Tunnel über WireGuard | ● | ● | ● | ● | ● | – | – | – | – | ◐3 | ● |
| Mitgliedschaft | |||||||||||
| Änderungen können mehrere Admins erfordern | |||||||||||
| Änderungen können mehrere Admins erfordern | ● | – | – | – | – | – | – | – | – | – | – |
| Ein Gerät entfernen, ohne die übrigen anzupassen | |||||||||||
| Ein Gerät entfernen, ohne die übrigen anzupassen | ● | ● | ● | ● | ● | ● | – | – | ● | – | – |
| Eine Entfernung verbreitet sich ohne Server | |||||||||||
| Eine Entfernung verbreitet sich ohne Server | ● | – | – | – | – | ◐4 | – | – | ◐5 | – | – |
| Gegen einen Quantencomputer | |||||||||||
| Heute mitgeschnittener Tunnelverkehr bleibt unlesbar | |||||||||||
| Heute mitgeschnittener Tunnelverkehr bleibt unlesbar | ● | – | – | ◐6 | – | –7 | – | – | – | – | ◐8 |
| Mitgliedschaft so signiert, dass sie sich nicht fälschen lässt | |||||||||||
| Mitgliedschaft so signiert, dass sie sich nicht fälschen lässt | ● | – | – | – | – | – | – | – | – | – | – |
| Verbindungen | |||||||||||
| Durch NAT auf beiden Seiten | |||||||||||
| Durch NAT auf beiden Seiten | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● | – |
| Ein Relay, wo es direkt nicht geht | |||||||||||
| Ein Relay, wo es direkt nicht geht | ● | ● | ● | ● | ● | ● | ● | ● | ● | ● | – |
| Aus einem Netz, das nur HTTPS hinauslässt | |||||||||||
| Aus einem Netz, das nur HTTPS hinauslässt | ● | ● | ● | ● | ●9 | ◐10 | – | ◐11 | ● | ●12 | – |
| Ethernet (Layer 2) zwischen den Geräten | |||||||||||
| Ethernet (Layer 2) zwischen den Geräten | – | – | – | – | – | ● | – | ● | – | – | – |
| Läuft ohne Server des Herstellers | |||||||||||
| Läuft ohne Server des Herstellers | ● | – | ●13 | ● | ● | –14 | ● | ● | ● | ● | ● |
| Tunnel im Kernel | |||||||||||
| Tunnel im Kernel | ○ | – | – | ● | ● | – | – | – | – | – | ● |
| Verkehr und Namen | |||||||||||
| Exit-Nodes | |||||||||||
| Exit-Nodes | ●15 | ● | ● | ● | ● | ◐16 | ◐17 | ◐18 | ◐19 | ● | ◐20 |
| Subnet-Router | |||||||||||
| Subnet-Router | ●21 | ● | ● | ● | ● | ◐22 | ◐23 | ◐24 | – | ● | ◐25 |
| Namen für jedes Gerät | |||||||||||
| Namen für jedes Gerät | ● | ● | ● | ● | ● | – | ◐26 | – | ● | ◐27 | – |
| Ein öffentlicher Name, der auf ein Mitglied zeigt | |||||||||||
| Ein öffentlicher Name, der auf ein Mitglied zeigt | ●28 | – | ● | ● | – | – | – | – | – | – | – |
| Dienste im Internet veröffentlichen | |||||||||||
| Dienste im Internet veröffentlichen | ● | ◐29 | – | ●30 | – | – | – | – | – | – | – |
| Ein Gerät in mehreren Netzen zugleich | |||||||||||
| Ein Gerät in mehreren Netzen zugleich | ●31 | – | – | – | ● | ●32 | ● | ● | ● | ● | ● |
| Im Alltag | |||||||||||
| Zugriffsregeln | |||||||||||
| Zugriffsregeln | ●33 | ● | ● | ● | ● | ● | ● | – | ●34 | ● | – |
| Benutzer, mit Anmeldung über einen Identitätsanbieter | |||||||||||
| Benutzer, mit Anmeldung über einen Identitätsanbieter | – | ● | ● | ● | ◐35 | ◐36 | – | – | – | – | – |
| Windows, macOS, Android und iOS | |||||||||||
| Windows, macOS, Android und iOS | ◐37 | ● | ● | ● | ● | ● | ● | ◐38 | ◐39 | ◐40 | ● |
● ja ◐ teilweise ○ geplant – nein
Fußnoten
- rayfish: Standardmäßig der pkarr-Server und die Relays von n0; beides lässt sich ersetzen.
- Tailscale: Mit Tailnet Lock nehmen Geräte nur Schlüssel an, die du signiert hast; Entfernen läuft weiter über den Server.
- EasyTier: Eines von mehreren Transportprotokollen.
- ZeroTier: Der Controller stellt die Entfernung aus; die Geräte geben sie weiter.
- rayfish: Über einen pkarr-Server, und vom Coordinator über das Mesh.
- NetBird: Mit Rosenpass, einer experimentellen Option, nicht auf Handys.
- ZeroTier: ZeroTier One nicht; ZeroTier Quantum, eine eigene kommerzielle Plattform, verspricht es.
- WireGuard: Mit einem von Hand gesetzten Preshared Key, oder Rosenpass.
- Netmaker: Seit 1.7, über ein dafür eingerichtetes Gateway.
- ZeroTier: Ein Relay über TCP auf Port 443, ohne TLS.
- Tinc: Über TCP auf Port 443 oder einen HTTP-Proxy, ohne TLS.
- EasyTier: Über WebSocket mit TLS, zu einem Knoten auf Port 443.
- Headscale: Mit einem eigenen DERP-Relay.
- ZeroTier: Die Root-Server betreibt ZeroTier.
- juist: Android kann eine nutzen, aber selbst keine sein.
- ZeroTier: Allow Default von Hand auf jedem Client setzen, NAT von Hand auf dem Gateway einrichten.
- Nebula: Von Hand in der Konfiguration jedes Geräts.
- Tinc: Routen von Hand auf jedem Gerät.
- rayfish: Nur IPv6.
- WireGuard: Von Hand auf jedem Gerät.
- juist: Android kann einen nutzen, aber selbst keiner sein.
- ZeroTier: Weiterleitung und NAT von Hand auf dem Router.
- Nebula: Von Hand in der Konfiguration jedes Geräts.
- Tinc: Routen von Hand auf jedem Gerät.
- WireGuard: Von Hand auf jedem Gerät.
- Nebula: Der Resolver jedes Geräts muss von Hand auf einen Lighthouse zeigen.
- EasyTier: Von Hand auf jedem Gerät.
- juist: Unter Linux und FreeBSD, nicht in der Android-App.
- Tailscale: Nur Namen unter ts.net, über die Server von Tailscale.
- NetBird: In der Beta.
- juist: Unter Android nur eines.
- ZeroTier: Auf Handys nur eines zugleich.
- juist: Nach Geräten und benannten Gerätegruppen, nicht nach Benutzern.
- rayfish: Die eigene Firewall jedes Geräts, mit Regeln, die der Coordinator vorschlägt.
- Netmaker: In der kostenpflichtigen Edition.
- ZeroTier: In den bezahlten Tarifen.
- juist: Nur Android, als Mitglied ohne öffentliche Namen und Rollen.
- Tinc: Kein Android und iOS.
- rayfish: Kein iOS.
- EasyTier: Kein iOS.
Tailscale #
Tailscale hat Clients für Linux, Windows, macOS, iOS und Android, Anmeldung über einen Identitätsanbieter und Zugriffsregeln. juist enthält Teile dieses Clients, siehe Architektur.
Den Koordinationsserver betreibt Tailscale Inc., und er ist nicht Open Source. Er kennt alle Geräte und verteilt die Schlüssel. Wer ihn kontrolliert, könnte also ein eigenes Gerät einschleusen. Tailnet Lock schließt diese Lücke: Geräte nehmen einen neuen Schlüssel nur an, wenn ein Schlüssel in deiner Hand ihn signiert hat. Das Entfernen eines Geräts und das Verteilen der Änderung laufen aber weiterhin über den Server. Seine Tunnel sind nicht quantensicher: Es setzt keinen Preshared Key und lässt dich keinen setzen.
Tailscale passt, wenn du Clients für alle Plattformen und Benutzerkonten mit Zugriffsregeln nach Benutzern brauchst und damit leben kannst, dass der Server einer Firma in der Mitte steht.
Headscale #
Headscale ist ein quelloffener Koordinationsserver für die Tailscale-Clients, den du selbst betreibst. Du musst dann deinem eigenen Server vertrauen statt dem von Tailscale. Tailnet Lock unterstützt Headscale nicht (Feature-Request). Die Geräte übernehmen also ungeprüft, was der Server ihnen mitteilt.
Headscale passt, wenn du Tailscales Clients ohne Tailscales Server nutzen willst und einen eigenen Server betreiben und absichern kannst.
NetBird #
NetBird verbindet Geräte über WireGuard. Koordiniert wird das von einem Management-Server, der die Geräte, ihre Schlüssel und die Zugriffsregeln verwaltet. Du kannst den Server von NetBird nutzen oder ihn mitsamt seinen Signal- und Relay-Servern selbst betreiben. Der Client steht unter BSD-3-Clause, die Server unter AGPL-3.0. Mit Rosenpass, einer experimentellen Option, die es auf Handys nicht gibt, werden seine Tunnel quantensicher.
NetBird passt, wenn du einen selbst betriebenen Server mit Dashboard, Anmeldung über deinen Identitätsanbieter und Zugriffsregeln nach Benutzern willst.
Netmaker #
Auch Netmaker baut sein Mesh aus WireGuard, unter Linux und FreeBSD im Kernel, um einen Server herum, den du selbst betreibst oder bei Netmaker mietest. Wie bei NetBird kennt dieser Server die Geräte und verteilt ihre Schlüssel. Der Kern steht unter Apache-2.0. Die Anmeldung über einen Identitätsanbieter und Ausweich-Relays gibt es in der kostenpflichtigen Edition.
Netmaker passt, wenn du WireGuard im Kernel und einen eigenen Server willst.
ZeroTier #
ZeroTier nutzt nicht WireGuard, sondern ein eigenes Protokoll, und bildet ein Ethernet-Netz zwischen den Geräten nach. Wer dazugehört, bestimmt ein Netzwerk-Controller, entweder der von ZeroTier oder dein eigener. Der Kern steht unter MPL-2.0. Der Quellcode des Controllers ist zwar einsehbar, steht aber unter einer eigenen Lizenz von ZeroTier, die die kommerzielle Nutzung einschränkt. ZeroTier One, der quelloffene Client, ist nicht quantensicher; ZeroTier Quantum, eine eigene kommerzielle Plattform von 2026, verspricht es zu sein.
ZeroTier passt, wenn du ein Layer-2-Netz brauchst, etwa für andere Protokolle als IP.
Nebula #
Nebula stammt von Slack und kommt ebenfalls ohne Server aus. Jedes Gerät hat ein Zertifikat deiner eigenen CA, das seine Adresse und Gruppen enthält. Mitglieder mit öffentlicher Adresse helfen den anderen, einander zu finden. Nebula steht unter MIT-Lizenz und läuft auch in großen Installationen.
Was fehlt, ist ein Weg, ein Gerät wieder hinauszuwerfen. Jedes Gerät muss eine Sperrliste auf anderem Weg bekommen, etwa über ein Konfigurationsmanagement. Ein Gerät, das sie nicht bekommen hat, akzeptiert das entfernte Gerät, bis dessen Zertifikat abläuft. Bei juist ist das Entfernen eine signierte Änderung, die die Geräte untereinander weitergeben. Ein zusätzlicher Weg ist also nicht nötig.
Nebula passt, wenn deine Geräte ohnehin zentral verwaltet werden und du Zugriffsregeln nach Gruppen willst.
Tinc #
Tinc ist das älteste Mesh hier, das ohne Server auskommt. Jedes Gerät hat für jedes Mitglied, mit dem es sich verbindet, eine Datei mit dessen öffentlichem Schlüssel, und die Mitglieder geben weiter, was sie über die übrigen wissen. Ein Mitglied mit öffentlicher Adresse hilft den anderen durchs NAT und leitet ihren Verkehr bei Bedarf weiter. Um ein Gerät zu entfernen, muss seine Datei von jedem Gerät verschwinden, das sie hat. Version 1.0.37 ist wohl die letzte der Reihe 1.0, und 1.1 ist seit 2021 eine Vorabversion.
Tinc passt für wenige Geräte, die du von Hand einrichtest, mit Software, die seit Jahrzehnten läuft.
rayfish #
rayfish ist das jüngste Mesh hier und juist am nächsten: kein Konto und kein Server, dem man vertrauen muss. Ein Netz ist ein Schlüsselpaar. Sein Coordinator nimmt Geräte per Einladung oder nach Bestätigung auf und veröffentlicht die Liste der Mitglieder, signiert mit dem Schlüssel des Netzes. Eine Entfernung erreicht die anderen auf demselben Weg. Die Tunnel laufen nicht über WireGuard, sondern über das QUIC von iroh, und standardmäßig nutzt rayfish die Relays und den pkarr-Server von n0, der Firma hinter iroh. Beides lässt sich ersetzen.
Der Unterschied zu juist: Die Co-Coordinators von rayfish halten ein und denselben Netzschlüssel. Wer eine Kopie davon hat, kann also allein alles ändern. Bei juist hat jeder Admin einen eigenen Schlüssel, und eine Änderung braucht k von ihnen. rayfish nennt sich selbst experimentell, vor 1.0 und ohne Sicherheitsaudit.
Zwei weitere Projekte aus demselben Jahr gehen einen ähnlichen Weg: nostr-vpn, dessen Geräte eine Liste der Mitglieder nur annehmen, wenn einer seiner Admins sie signiert hat, und der Direct-Modus von Tunnet, mit signierten Mitgliedern und Widerrufen in einem Dokument, das die Geräte untereinander abgleichen. Bei beiden kann ein einzelner Admin oder Coordinator jede Änderung vornehmen.
rayfish passt, wenn du ein Mesh ohne Server auf Plattformen ausprobieren willst, die juist fehlen, etwa Windows oder macOS.
Meshes mit gemeinsamem Geheimnis #
Projekte wie EasyTier nehmen jeden auf, der den Namen und das Geheimnis des Netzes kennt. Das ist schnell eingerichtet, aber Geräte werden nicht einzeln aufgenommen, und niemand hält fest, wer sie aufgenommen hat. Um ein Gerät zu entfernen, muss das Geheimnis auf allen anderen Geräten geändert werden.
Reines WireGuard #
WireGuard allein verbindet nur Geräte, deren Schlüssel und Adressen du jeweils in die Konfiguration der anderen eingetragen hast. Dazwischen gibt es nichts, dem man vertrauen müsste, und im Kernel ist es schneller als juist, das WireGuard im Userspace betreibt. Dafür musst du für jedes neue Gerät alle anderen anpassen, stehen beide Seiten hinter NAT, kommt keine Verbindung zustande, und ein Relay gibt es nicht. Ein Preshared Key, von Hand gesetzt oder von Rosenpass erneuert, macht seine Tunnel quantensicher.
Reines WireGuard passt für wenige Geräte mit festen öffentlichen Adressen.
Nicht verglichen #
Manche Projekte, die oft in einem Atemzug mit diesen genannt werden, lösen eine andere Aufgabe. Pangolin, Firezone, Twingate und Defguard verbinden Geräte mit Gateways und Diensten statt miteinander, und Cloudflare Mesh leitet allen Verkehr durch das Netz von Cloudflare. Yggdrasil, cjdns und Mycelium sind ein einziges offenes Netz, dem jeder beitreten kann. Hamachi und Radmin VPN sind für Spiele im LAN gemacht. EdgeVPN, hyprspace und wgmesh nehmen jeden auf, der ein gemeinsames Geheimnis kennt oder in einer von Hand geschriebenen Liste steht, wie die Meshes mit gemeinsamem Geheimnis oben. innernet ist wie juist ein Kommandozeilenwerkzeug für Linux, aber um einen Server herum, der bestimmt, wer dazugehört.
Wo juist schwächer ist #
- Ein Sicherheitsaudit gab es für juist bisher nicht.
- Es läuft unter Linux und FreeBSD. Unter Android ist ein Telefon ein Mitglied ohne Rollen, öffentliche Namen oder Subnetze. Für Windows, macOS und iOS gibt es nichts.
- Es kennt nur Geräte, keine Benutzer: Seine Zugriffsregeln nennen Geräte, und eine Anmeldung über einen Identitätsanbieter gibt es nicht.
- Ein entferntes Gerät ist draußen, sobald die anderen Geräte davon erfahren. Ein abgeschnittenes Gerät erfährt es aber womöglich erst nach bis zu 48 Stunden. Ein zentraler Server teilt es jedem Gerät, das er erreicht, sofort mit.
- Es ist für Netze mit 25 bis 100 Geräten und wenigen Admins gedacht.
Quellen #
- How Tailscale works, Tailnet Lock, Tailscales Open Source
- Headscale und der Feature-Request für Tailnet Lock
- How NetBird works, NetBirds Lizenz
- ZeroTiers Protokoll, Netzwerk-Controller, Lizenz
- Nebulas Dokumentation, seine PKI und Sperrliste, Introducing Nebula
- WireGuard Quick Start
- NAT-Traversal bei Netmaker, Anmeldung über OAuth, Clients
- Tinc
- rayfish und sein Sicherheitsmodell, Protokoll von nostr-vpn, Tunnet
- Headscale und OIDC, NetBird mit WireGuard im Kernel und im Userspace, ZeroTiers SSO, Mobile Nebula, EasyTiers Zugriffsregeln
- EasyTier
- Routing und Namen: Exit-Nodes bei Tailscale, DNS, Funnel und ein Tailnet zur Zeit; Funktionen von Headscale; Custom Zones, Reverse Proxy und Profile bei NetBird; DNS bei Netmaker; Exit-Node und DNS bei ZeroTier; Unsafe Routes und Lighthouse-DNS bei Nebula; Tinc als Gateway; Exit-Nodes bei rayfish; Magic DNS bei EasyTier
- Gegen einen Quantencomputer: Tailscale, NetBird mit Rosenpass, ZeroTier Quantum, Nebulas Feature-Request, Handshakes bei iroh, Grenzen von WireGuard
- Nur HTTPS und Layer 2: DERP-Server bei Tailscale, Relays bei NetBird, Netmaker 1.7, TCP-Relay bei ZeroTier, Konfiguration von Tinc, Relays bei iroh, Nebula und Layer 2, EasyTier und Layer 2
Die Recherche hinter dieser Seite umfasst rund 25 Projekte und steht im Repository (auf Englisch): Control-Plane-Optionen und Projektübersicht.