Vor einigen Tagen haben wir hier im Blog über Firezone gesprochen, ein hervorragendes Tool zum Erstellen von WireGuard-basierten VPN-Servern.
Und nun, bei dieser Gelegenheit, werden wir über ein sehr ähnliches Dienstprogramm namens "Headscale" sprechen. Es handelt sich um ein Projekt, das als Open-Source-Implementierung der Tailscale VPN- Serverkomponente entwickelt wurde und es Ihnen ermöglicht, Tailscale-ähnliche VPNs in Ihren eigenen Räumlichkeiten zu erstellen, ohne an Dienste von Drittanbietern gebunden zu sein.
Tailscale ermöglicht die Kombination einer beliebigen Anzahl geografisch verteilter Hosts zu einem Netzwerk , das nach dem Vorbild eines Mesh-Netzwerks aufgebaut ist, in dem jeder Knoten direkt (P2P) oder über benachbarte Knoten mit anderen Knoten kommuniziert, ohne dass der Datenverkehr über zentralisierte externe Server des VPN-Anbieters geleitet wird.
Zusätzlich zur Unterstützung von ACL-basierter Routen- und Zugriffskontrolle sowie der Einrichtung von Kommunikationskanälen unter NAT-Bedingungen (Network Address Translation) unterstützt das System die Mechanismen STUN, ICE und DERP (analog zu TURN, jedoch basierend auf HTTPS). Wenn der Kommunikationskanal zwischen bestimmten Knoten blockiert ist, kann das Netzwerk den Datenverkehr über andere Knoten umleiten.
Tailscale unterscheidet sich vom Nebula-Projekt , das ebenfalls für die Erstellung verteilter VPN-Netzwerke mit Mesh-Routing entwickelt wurde und das Wireguard-Protokoll zur Organisation des Datentransfers zwischen den Knoten verwendet. Nebula hingegen nutzt Entwicklungen aus dem Tinc-Projekt, das den AES-256-Algorithmus zur Verschlüsselung von GSM-Paketen verwendet (Wireguard verwendet die ChaCha20-Verschlüsselung, die in Tests eine höhere Leistung und Reaktionsfähigkeit aufweist).
Ein weiteres ähnliches Projekt, Innernet, wird separat entwickelt. Auch hier kommt das WireGuard-Protokoll zum Einsatz, um Daten zwischen den Knoten auszutauschen. Im Gegensatz zu Tailscale und Nebula verwendet Innernet ein anderes Zugriffstrennungssystem auf Basis von ACLs. Anders als in herkömmlichen Internetnetzwerken werden Labels nicht mit einzelnen Knoten und Subnetzen verknüpft, um verschiedene IP-Adressbereiche zu trennen und zu isolieren.
Außerdem verwendet Innernet Rust statt Go und es ist erwähnenswert, dass vor einigen Tagen Innernet 1.5 mit verbesserter NAT-Traversal-Unterstützung veröffentlicht wurde. Es gibt auch ein Netmaker-Projekt, das es Ihnen ermöglicht, Netzwerke mit unterschiedlichen Topologien mit Wireguard zu verbinden, dessen Code jedoch unter der SSPL (Server-Side Public License) bereitgestellt wird, die aufgrund diskriminierender Anforderungen nicht offen ist.
Tailscale wird über ein Freemium-Modell vertrieben und bietet kostenlosen Zugang für Einzelpersonen sowie kostenpflichtigen Zugang für Unternehmen und Teams. Die Client-Komponenten von Tailscale, mit Ausnahme der grafischen Anwendungen für Windows und macOS, werden als Open-Source-Projekte unter der BSD-Lizenz entwickelt.
Die ausgelagerte Serversoftware von Tailscale, die neue Clients authentifiziert , die Schlüsselverwaltung koordiniert und die Kommunikation zwischen den Knoten organisiert, ist proprietär. Das Headscale-Projekt behebt dieses Problem und bietet eine Open-Source-Implementierung, die unabhängig von den Tailscale-Serverkomponenten ist.
Headscale übernimmt die Funktionen des öffentlichen Schlüsselaustauschs zwischen den Knoten und führt außerdem die Operationen der IP-Adresszuweisung und der Verteilung der Routingtabelle zwischen den Knoten durch.
Headscale implementiert in seiner aktuellen Form alle Kernfunktionen eines Management-Servers, mit Ausnahme der Unterstützung für MagicDNS und Smart DNS. Konkret unterstützt es die Registrierung von Knoten (auch über das Web), die Anpassung des Netzwerks zum Hinzufügen oder Entfernen von Knoten, Subnetting mithilfe von Namespaces (wodurch die Einrichtung eines VPN für mehrere Benutzer ermöglicht wird), die Organisation des gemeinsamen Knotenzugriffs auf Subnetze in verschiedenen Namespaces, die Routing-Steuerung (einschließlich der Zuweisung ausgehender Knoten für den Zugriff nach außen), den gemeinsamen Zugriff über ACLs und die DNS-Ausführung.
Der Headscale-Code ist in Go geschrieben und wird unter der BSD-Lizenz vertrieben. Das Projekt wird von Juan Font von der European Space Agency entwickelt.
Sollten Sie mehr erfahren wollen, finden Sie die Details unter folgendem Link.