Das Headscale-Projekt entwickelt eine offene Implementierung der Serverkomponente des VPN-Netzwerks Tailscale, die es ermöglicht, ähnliche VPN-Netzwerke wie Tailscale auf eigener Infrastruktur zu erstellen, ohne auf externe Dienste angewiesen zu sein. Der Code von Headscale ist in der Programmiersprache Go geschrieben und steht unter der BSD-Lizenz. Das Projekt wird von Juan Font Alonso vom Europäischen Raumfahrtzentrum geleitet.
Tailscale ermöglicht es, eine beliebige Anzahl geografisch verteilter Hosts in ein Netzwerk zu integrieren, das auf einem Mesh-Netzwerk basiert, in dem jeder Knoten direkt (P2P) mit anderen Knoten kommuniziert oder über benachbarte Knoten, ohne den Datenverkehr über zentralisierte externe Server zu leiten. VPN-Anbieter. Es wird ein Zugriffs- und Routenmanagement auf Basis von ACL unterstützt. Für den Aufbau von Kommunikationskanälen in Umgebungen mit Adressübersetzern (NAT) gibt es Unterstützung für die Mechanismen STUN, ICE und DERP (ähnlich TURN, aber auf Basis von HTTPS). Im Falle einer Blockierung des Kommunikationskanals zwischen bestimmten Knoten kann das Netzwerk die Routen neu konfigurieren, um den Datenverkehr über andere Knoten zu lenken.

Im Gegensatz zum Nebula-Projekt, das ebenfalls für den Aufbau verteilter VPN-Netzwerke mit Mesh-Routing konzipiert ist, unterscheidet sich Tailscale durch die Verwendung des Wireguard-Protokolls zur Datenübertragung zwischen den Knoten, während im Nebula-Projekt die Ressourcen des Tinc-Projekts verwendet werden, bei dem der AES-256-GSM-Algorithmus zur Verschlüsselung von Paketen eingesetzt wird (in Wireguard wird der ChaCha20-Verschlüsselungsalgorithmus verwendet, der in Tests eine höhere Durchsatzrate und Reaktionsfähigkeit zeigt).
Ein weiteres ähnliches Projekt wird separat entwickelt - Innernet, das auch das Wireguard-Protokoll für den Datenaustausch zwischen Knoten verwendet. Im Gegensatz zu Tailscale und Nebula verwendet Innernet ein anderes Zugriffssteuerungssystem, das nicht auf ACLs mit Tag-Zuordnungen zu einzelnen Knoten basiert, sondern auf der Aufteilung von Subnetzen und der Zuweisung verschiedener Adressbereiche. IP-Adressen, wie in herkömmlichen Internet-Netzwerken. Außerdem wird anstelle der Sprache Go im Innernet die Sprache Rust verwendet. Vor drei Tagen wurde das Update Innernet 1.5 mit verbesserter Unterstützung für NAT-Umgehung veröffentlicht. Es gibt auch das Projekt Netmaker, das es ermöglicht, Netzwerke mit unterschiedlichen Topologien mithilfe von Wireguard zu verbinden, dessen Code jedoch unter der Lizenz SSPL (Server Side Public License) steht, die aufgrund diskriminierender Anforderungen nicht offen ist.
Tailscale wird im Rahmen eines Freemium-Modells vertrieben, das eine kostenlose Nutzung für Einzelpersonen und kostenpflichtigen Zugriff für Unternehmen und Teams vorsieht. Die Client-Komponenten von Tailscale, mit Ausnahme der grafischen Anwendungen für Windows und macOS, entwickeln sich in Form von Open-Source-Projekten unter der BSD-Lizenz. Die serverseitige Software von Tailscale, die die Authentifizierung beim Anschluss neuer Clients ermöglicht, das Schlüsselmanagement koordiniert und die Interaktion zwischen den Knoten organisiert, ist proprietär. Das Projekt Headscale behebt diesen Nachteil und bietet eine unabhängige, offene Implementierung der Serverkomponenten von Tailscale.

Headscale übernimmt die Funktion des Austauschs öffentlicher Schlüssel zwischen den Knoten und führt Operationen zur Zuweisung von IP-Adressen sowie zur Verbreitung von Routing-Tabellen zwischen den Knoten durch. In der aktuellen Version implementiert Headscale alle grundlegenden Funktionen des Verwaltungsservers, mit Ausnahme der Unterstützung für MagicDNS und Smart DNS. Insbesondere werden Funktionen zur Registrierung von Knoten (einschließlich über das Web), zur Anpassung des Netzwerks beim Hinzufügen oder Entfernen von Knoten, zur Aufteilung von Subnetzen mithilfe von Namensräumen (ein VPN-Netzwerk kann für mehrere Benutzer erstellt werden), zur Organisation des Zugriffs von Knoten auf Subnetze in verschiedenen Namensräumen, zum Routing-Management (einschließlich der Zuweisung von Ausgangsknoten für den Zugriff auf die Außenwelt), zur Zugriffssteuerung über ACL und zur DNS-Dienstleistung unterstützt.
Quelle: opennet.ru
