2 Punkte von GN⁺ 2025-04-04 | 1 Kommentare | Auf WhatsApp teilen
  • Headscale ist ein Open-Source-Alternativprojekt, mit dem sich die Control-Server-Funktion von Tailscale selbst hosten lässt
  • Tailscale ist eine moderne VPN-Lösung auf Basis von WireGuard, mit der sich auch in NAT-Umgebungen ein Overlay-Netzwerk aufbauen lässt
  • Der ursprüngliche Tailscale-Control-Server ist proprietäre Software, Headscale wurde jedoch als frei installierbare Server-Software entwickelt, die ihn ersetzen kann
  • Windows-, macOS- und iOS-Clients benötigen weiterhin die GUI von Tailscale

Zweck und Merkmale von Headscale

  • Headscale unterstützt nur ein einziges tailnet (virtuelles privates Netzwerk), sodass es von Einzelpersonen und kleinen Open-Source-Organisationen genutzt werden kann
  • Eine passende Lösung für Nutzer, die ihren eigenen Server betreiben möchten, und Anhänger freier Software
  • Der bewusst eng gefasste Designumfang erleichtert Wartung und Administration

Hauptfunktionen

  • Austausch von öffentlichen WireGuard-Schlüsseln zwischen Client-Knoten
  • Zuweisung von IP-Adressen und Festlegung von Grenzen für jeden Knoten
  • Funktion zum Teilen von Maschinen zwischen Nutzern
  • Verwaltung von Route Advertisements der Knoten
  • Die offizielle Funktionsliste ist hier zu finden

Unterstützte Client-Betriebssysteme

Hinweise zu Installation und Betrieb

  • Reverse Proxy oder containerbasierter Betrieb werden offiziell nicht empfohlen
  • Ausführungsmethoden und Konfiguration siehe offizielle Dokumentation

Community und Beiträge

Entwicklungsumgebung und Code-Stil

  • Wichtige Werkzeuge für die Entwicklung:
    • die neueste Version von Go
    • Buf (Protobuf-Generator)
    • Entwicklungsumgebung mit Nix möglich (nix develop-Befehl)
  • Code-Stil:
    • Go-Code: Verwendung von golangci-lint, golines, gofumpt
    • Proto-Code: Verwendung von buf, clang-format
    • andere Dateien: Formatierung mit prettier
  • Vor dem Commit ist das Aufräumen des Codes mit make lint und make fmt Pflicht

Build und Tests

  • Bei Änderungen am Protobuf-Code muss der Go-Code mit make generate neu erzeugt werden
  • Tests ausführen: make test
  • Build:
    • nix build
    • oder der Befehl make build

Weitere Informationen

  • Auf der FOSDEM 2023 gab es einen Vortrag zu Headscale: Video ansehen
  • Das Projekt steht in keiner direkten Verbindung zu Tailscale Inc., allerdings beteiligen sich Mitwirkende von Tailscale, und Code-Reviews sowie die Ausrichtung des Projekts werden unabhängig festgelegt

1 Kommentare

 
GN⁺ 2025-04-04
Hacker-News-Kommentare
  • Ich besuche dieses Repository alle paar Monate erneut, um zu prüfen, ob Tailnet Lock funktioniert oder ob ein Sicherheitsaudit durchgeführt wurde. Leider gibt es bei beidem keinen Fortschritt, sodass ich mir unsicher bin, ob ich diesem System als zentralem Teil der Infrastruktur vertrauen kann

    • Die gesamte Prämisse von Tailscale SaaS ist, Tunnel durch Firewalls zu bauen und es Nutzern zu ermöglichen, auf intuitive und integrierte Weise zu verwalten, was über diese Tunnel geroutet werden darf
    • Headscale scheint den Teil, der Firewalls umgeht und NAT-Traversal durchführt, gut zu lösen. Ich frage mich jedoch, ob es genug Sicherheit bieten kann, um das auszugleichen, was damit umgangen wird, oder ob es am Ende nur zu einem Werkzeug wird, das lokale Netzwerkadministratoren behindert
    • Es wirkt gewagt, bei einer Tailscale-Implementierung den Server-Code überhaupt nicht zu auditieren und Nutzern gleichzeitig keine Möglichkeit zu geben, zu verstehen oder abzulehnen, was der Control-Server den Clients vorgibt
  • Wenn man daran interessiert ist, den Orchestrierungsserver selbst zu hosten, kann man sich Netbird ansehen. Es ist sehr ähnlich, aber der Server ist als Open Source verfügbar. Dadurch kann man einen selbst gehosteten Control-Server mit allen Funktionen der Bezahlversion und einer schicken GUI haben

  • Es wäre schön, wenn Headscale Peering/Föderation zwischen Instanzen erlauben würde (notfalls auch erst nach der ACL-Überarbeitung). Eines der Hauptprobleme sind Adresskonflikte

    • Vorschlag: sich auf ein reines IPv6-Overlay-Netzwerk im Unique Local Address (ULA)-Bereich festlegen und die verbleibenden 121 Bit in 20 Bit für Geräteadressen (~1 Million) und 101 Bit für den Hash des öffentlichen Schlüssels des Servers aufteilen. Dann die öffentlichen Schlüssel anderer Instanzen hinzufügen und mit Policies und ACLs die Kommunikation zwischen Knoten verwalten
    • Ich halte diese Idee für gut, aber als ich das Problem 2023 angesprochen habe, sagte der Maintainer kradalby, dass es außerhalb des Umfangs liege GitHub-Issue-Link
  • Der Projektname, Headscale, sollte im Titel ergänzt werden

    • Headscale war schon mehrfach auf HN zu sehen
  • Ich frage mich, ob es auf Plan 9 läuft

  • Ich liebe Headscale. Wir haben es in die Produktion übernommen und es war großartig

  • Ich frage mich, wie hoch das Risiko ist, dass meine Geräte kompromittiert werden, wenn der Tailscale-Koordinationsserver kompromittiert wird und Tailnet Lock aktiviert ist

  • Für viele Anwendungsfälle (mobiler Zugriff, GUI auf macOS) hängt der offizielle Tailscale-Client davon ab, dass er einen Control-Server konfigurieren kann

    • Wenn bei Tailscale die unvermeidliche Funktionsbeschneidung beginnt, wird diese Fähigkeit verschwinden
    • Ich sage das als derzeit sehr zufriedener Tailscale-Kunde, obwohl ich in der Vergangenheit mehrfach von anderen Unternehmen enttäuscht wurde, weil sie verkauft wurden oder ihnen das VC-Geld ausging
  • Ich frage mich, welchen zusätzlichen Mehrwert dieses Setup im Vergleich zu einer wireguard + openwrt-Konfiguration bietet

  • Die Aussage „Es wirkt gewagt, bei einer Tailscale-Implementierung den Server-Code überhaupt nicht zu auditieren und Nutzern gleichzeitig keine Möglichkeit zu geben, zu verstehen oder abzulehnen, was der Control-Server den Clients vorgibt“ deutet darauf hin, dass allein die Offenlegung des Quellcodes des Headscale-Control-Servers keine hinreichende Bedingung dafür ist, dass Nutzer „verstehen oder ablehnen können, was der Control-Server den Clients vorgibt“

    • Wenn man den Headscale-Control-Server verwendet, können Nutzer „alles verstehen oder ablehnen, was der Control-Server den Clients vorgibt“. Das lässt sich erreichen, indem man den Quellcode liest, bearbeitet und kompiliert
    • Wenn man den Tailscale-Control-Server verwendet, können Nutzer nur in dem Umfang „verstehen oder ablehnen, was der Control-Server den Clients vorgibt“, den das Unternehmen Tailscale zulässt. Den Quellcode zu bearbeiten oder zu kompilieren ist Nutzern untersagt
    • Nicht alle Nutzer wollen die Option haben, Drittanbieter-Software, die sie verwenden, zu lesen, zu bearbeiten und zu kompilieren. Manche sind zufrieden damit, sich auf die fortlaufenden Zusicherungen eines mit Silicon-Valley-VC-Geld betriebenen Unternehmens zu verlassen. Für Nutzer, die ein zu 100 % Open-Source-Projekt wollen, kann Headscale nützlich sein
    • Der Autor von Headscale bezeichnete den Tailscale-Koordinationsserver als „im Wesentlichen eine gemeinsame Dropbox für öffentliche Schlüssel“