- 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
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
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
Der Projektname, Headscale, sollte im Titel ergänzt werden
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
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“