Headscale, υλοποίηση ανοιχτού κώδικα της Tailscale

Πριν από λίγες μέρες μιλήσαμε εδώ στο ιστολόγιο για το Firezone, το οποίο είναι ένα εξαιρετικό βοηθητικό πρόγραμμα για τη δημιουργία διακομιστών VPN που βασίζονται στο WireGuard.

Και τώρα, με την ευκαιρία αυτή, θα μιλήσουμε για ένα πολύ παρόμοιο βοηθητικό πρόγραμμα που ονομάζεται "Headscale", το οποίο είναι ένα έργο που αναπτύχθηκε ως υλοποίηση ανοιχτού κώδικα του στοιχείου διακομιστή VPN Tailscale , επιτρέποντάς σας να δημιουργείτε VPN τύπου Tailscale στις δικές σας εγκαταστάσεις, χωρίς να είστε συνδεδεμένοι με υπηρεσίες τρίτων.

Το Tailscale επιτρέπει τον συνδυασμό ενός αυθαίρετου αριθμού γεωγραφικά διασκορπισμένων κεντρικών υπολογιστών σε ένα δίκτυο , κατασκευασμένο κατ' εικόνα ενός δικτύου mesh, στο οποίο κάθε κόμβος επικοινωνεί με άλλους κόμβους απευθείας (P2P) ή μέσω γειτονικών κόμβων, χωρίς να μεταδίδει κίνηση μέσω κεντρικών εξωτερικών διακομιστών του παρόχου VPN.

Εκτός από την υποστήριξη ελέγχου δρομολόγησης και πρόσβασης που βασίζεται σε ACL και την ενεργοποίηση της δημιουργίας καναλιών επικοινωνίας υπό συνθήκες χρήσης Μετάφρασης Διευθύνσεων Δικτύου (NAT), το σύστημα υποστηρίζει μηχανισμούς STUN, ICE και DERP (ανάλογους με τον TURN, αλλά βασισμένους στο HTTPS). Εάν το κανάλι επικοινωνίας μεταξύ ορισμένων κόμβων είναι αποκλεισμένο, το δίκτυο μπορεί να αναδρομολογήσει την κυκλοφορία μέσω άλλων κόμβων.

Το Tailscale διαφέρει από το έργο Nebula , το οποίο έχει επίσης σχεδιαστεί για τη δημιουργία κατανεμημένων δικτύων VPN με δρομολόγηση πλέγματος, χρησιμοποιώντας το πρωτόκολλο Wireguard για την οργάνωση της μεταφοράς δεδομένων μεταξύ κόμβων, ενώ το Nebula χρησιμοποιεί εξελίξεις από το έργο Tinc, το οποίο χρησιμοποιεί τον αλγόριθμο AES-256 για την κρυπτογράφηση πακέτων GSM (το Wireguard χρησιμοποιεί την κρυπτογράφηση ChaCha20, η οποία σε δοκιμές επιδεικνύει υψηλότερη απόδοση και απόκριση).

Ένα άλλο παρόμοιο έργο, το Innernet, αναπτύσσεται ξεχωριστά, στο οποίο χρησιμοποιείται επίσης το πρωτόκολλο Wireguard για την ανταλλαγή δεδομένων μεταξύ κόμβων. Σε αντίθεση με το Tailscale και το Nebula, το Innernet χρησιμοποιεί ένα διαφορετικό σύστημα διαχωρισμού πρόσβασης που βασίζεται σε ACL. Οι ετικέτες δεν συνδέονται με μεμονωμένους κόμβους και υποδίκτυα για τον διαχωρισμό και την απομόνωση διαφορετικών εύρων διευθύνσεων IP, όπως στα συμβατικά δίκτυα διαδικτύου.

Επίσης, το Innernet χρησιμοποιεί Rust αντί για Go και αξίζει να αναφερθεί ότι το Innernet 1.5 με βελτιωμένη υποστήριξη διασύνδεσης NAT κυκλοφόρησε πριν από λίγες ημέρες. Υπάρχει επίσης ένα έργο Netmaker, το οποίο σας επιτρέπει να συνδέετε δίκτυα με διαφορετικές τοπολογίες χρησιμοποιώντας το Wireguard, αλλά ο κωδικός του παρέχεται υπό την SSPL (Server Side Public License), η οποία δεν είναι ανοιχτή λόγω της ύπαρξης απαιτήσεων που εισάγουν διακρίσεις.

Το Tailscale διανέμεται χρησιμοποιώντας ένα μοντέλο freemium, προσφέροντας δωρεάν πρόσβαση σε άτομα και πρόσβαση επί πληρωμή σε επιχειρήσεις και ομάδες. Τα στοιχεία-πελάτες του Tailscale, με εξαίρεση τις γραφικές εφαρμογές για Windows και macOS, αναπτύσσονται ως έργα ανοιχτού κώδικα με άδεια BSD.

Το λογισμικό διακομιστή της Tailscale που έχει ανατεθεί σε εξωτερικούς συνεργάτες, το οποίο ελέγχει την ταυτότητα νέων πελατών , συντονίζει τη διαχείριση κλειδιών και οργανώνει την επικοινωνία μεταξύ κόμβων, είναι ιδιόκτητο. Το έργο Headscale αντιμετωπίζει αυτό το ζήτημα και παρέχει μια υλοποίηση ανοιχτού κώδικα ανεξάρτητη από τα στοιχεία του διακομιστή Tailscale.

Το Headscale αναλαμβάνει τις λειτουργίες της ανταλλαγής δημόσιου κλειδιού μεταξύ κόμβων και επίσης εκτελεί τις λειτουργίες της ανάθεσης διευθύνσεων IP και της κατανομής πινάκων δρομολόγησης μεταξύ κόμβων.

Στην τρέχουσα μορφή του, το Headscale υλοποιεί όλα τα βασικά χαρακτηριστικά ενός διακομιστή διαχείρισης, με εξαίρεση την υποστήριξη για MagicDNS και Smart DNS. Συγκεκριμένα, υποστηρίζει την εγγραφή κόμβων (συμπεριλαμβανομένων και μέσω του ιστού), την προσαρμογή του δικτύου για προσθήκη ή αφαίρεση κόμβων, τη δημιουργία υποδικτύων χρησιμοποιώντας χώρους ονομάτων (επιτρέποντας τη δημιουργία ενός VPN για πολλαπλούς χρήστες), την οργάνωση της πρόσβασης κοινόχρηστων κόμβων σε υποδίκτυα σε διαφορετικούς χώρους ονομάτων, τον έλεγχο δρομολόγησης (συμπεριλαμβανομένης της ανάθεσης εξερχόμενων κόμβων για πρόσβαση στον έξω κόσμο), την κοινόχρηστη πρόσβαση μέσω ACL και την εκτέλεση DNS.

Ο κωδικός Headscale είναι γραμμένος σε Go και διανέμεται με άδεια BSD. Το έργο αναπτύσσεται από τον Juan Font του Ευρωπαϊκού Οργανισμού Διαστήματος.

Τέλος, αν ενδιαφέρεστε να μάθετε περισσότερα, μπορείτε να βρείτε τις λεπτομέρειες στον παρακάτω σύνδεσμο.


Προσθήκη ως προτιμώμενης πηγής στην Google