Έξυπνος διακόπτης Ethernet για τον πλανήτη Γη

Έξυπνος διακόπτης Ethernet για τον πλανήτη Γη
«Μπορείτε να δημιουργήσετε μια λύση (να λύσετε ένα πρόβλημα) με διάφορους τρόπους, αλλά η πιο ακριβή και/ή δημοφιλής μέθοδος δεν είναι πάντα η πιο αποτελεσματική!»

Προοίμιο

Πριν από περίπου τρία χρόνια, κατά τη διαδικασία ανάπτυξης ενός απομακρυσμένου μοντέλου για την ανάκτηση δεδομένων καταστροφής, συνάντησα ένα εμπόδιο που δεν έγινε αμέσως αντιληπτό - την έλλειψη πληροφοριών σχετικά με νέες πρωτότυπες λύσεις για εικονικοποίηση δικτύου σε πηγές κοινότητας. 

Ο αλγόριθμος για το αναπτυγμένο μοντέλο σχεδιάστηκε ως εξής: 

  1. Ένας απομακρυσμένος χρήστης που επικοινώνησε μαζί μου, του οποίου ο υπολογιστής κάποτε αρνήθηκε να εκκινήσει, εμφανίζοντας το μήνυμα "Ο δίσκος συστήματος δεν εντοπίστηκε/δεν μορφοποιήθηκε", τον φορτώνει χρησιμοποιώντας το life USB. 
  2. Κατά τη διαδικασία εκκίνησης, το σύστημα συνδέεται αυτόματα σε ένα ασφαλές ιδιωτικό τοπικό δίκτυο, το οποίο εκτός από αυτό περιέχει τον σταθμό εργασίας του διαχειριστή, σε αυτήν την περίπτωση έναν φορητό υπολογιστή και έναν κόμβο NAS. 
  3. Στη συνέχεια, συνδέομαι - είτε για να αναζωογονήσω τα διαμερίσματα του δίσκου, είτε για να εξαγάγω δεδομένα από εκεί.

Αρχικά, εφάρμοσα αυτό το μοντέλο χρησιμοποιώντας έναν διακομιστή VPN σε έναν τοπικό δρομολογητή σε ένα δίκτυο υπό τον έλεγχό μου και στη συνέχεια σε ένα νοικιασμένο VDS. Όμως, όπως συμβαίνει συχνά και σύμφωνα με τον πρώτο νόμο του Chisholm, αν βρέξει, το δίκτυο του παρόχου Διαδικτύου θα διακοπεί, τότε οι διαφωνίες μεταξύ επιχειρηματικών οντοτήτων θα κάνουν τον πάροχο υπηρεσιών να χάσει «ενέργεια»...

Ως εκ τούτου, αποφάσισα να διατυπώσω πρώτα τις βασικές απαιτήσεις που πρέπει να πληροί το απαραίτητο εργαλείο. Το πρώτο είναι η αποκέντρωση. Δεύτερον, δεδομένου ότι έχω πολλά τέτοια life USB, το καθένα από αυτά έχει ξεχωριστό απομονωμένο δίκτυο. Λοιπόν, τρίτον, γρήγορη σύνδεση με το δίκτυο διαφόρων συσκευών και απλή διαχείρισή τους, συμπεριλαμβανομένης της περίπτωσης που ο φορητός μου υπολογιστής πέσει θύμα του νόμου που αναφέρεται παραπάνω.

Με βάση αυτό και έχοντας περάσει δυόμισι μήνες σε πρακτική έρευνα πολλών όχι πολύ κατάλληλων επιλογών, αποφάσισα, με δικό μου κίνδυνο και κίνδυνο, να δοκιμάσω ένα άλλο εργαλείο από μια άγνωστη σε εμένα εκείνη την εποχή startup που ονομάζεται ZeroTier. Για το οποίο δεν μετάνιωσα ποτέ αργότερα.

Κατά τη διάρκεια αυτών των διακοπών της Πρωτοχρονιάς, προσπαθώντας να καταλάβω αν η κατάσταση με το περιεχόμενο έχει αλλάξει από εκείνη την αξιομνημόνευτη στιγμή, διεξήγαγα έναν επιλεκτικό έλεγχο για τη διαθεσιμότητα άρθρων σχετικά με αυτό το θέμα, χρησιμοποιώντας το Habr ως πηγή. Για το ερώτημα "ZeroTier" στα αποτελέσματα αναζήτησης υπάρχουν μόνο τρία άρθρα που το αναφέρουν και όχι ένα με τουλάχιστον μια σύντομη περιγραφή. Και αυτό παρά το γεγονός ότι ανάμεσά τους υπάρχει μετάφραση ενός άρθρου που έγραψε ο ίδιος ο ιδρυτής της ZeroTier, Inc. — Adam Ierymenko.

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

Τι είσαι λοιπόν;

Ο προγραμματιστής τοποθετεί το ZeroTier ως έναν έξυπνο διακόπτη Ethernet για τον πλανήτη Γη. 

«Είναι ένας κατανεμημένος υπερεπόπτης δικτύου που έχει δημιουργηθεί πάνω από ένα κρυπτογραφικά ασφαλές παγκόσμιο δίκτυο peer-to-peer (P2P). Ένα εργαλείο παρόμοιο με ένα εταιρικό μεταγωγέα SDN, σχεδιασμένο να οργανώνει εικονικά δίκτυα σε φυσικά, τοπικά και παγκόσμια, με δυνατότητα σύνδεσης σχεδόν κάθε εφαρμογής ή συσκευής.»

Αυτή είναι περισσότερο μια περιγραφή μάρκετινγκ, τώρα για τα τεχνολογικά χαρακτηριστικά.

▍Πυρήνας: 

Το ZeroTier Network Hypervisor είναι μια αυτόνομη μηχανή εικονικοποίησης δικτύου που μιμείται ένα δίκτυο Ethernet, παρόμοιο με το VXLAN, πάνω από ένα παγκόσμιο κρυπτογραφημένο δίκτυο peer-to-peer (P2P).

Τα πρωτόκολλα που χρησιμοποιούνται στο ZeroTier είναι πρωτότυπα, αν και παρόμοια στην εμφάνιση με το VXLAN και το IPSec και αποτελούνται από δύο εννοιολογικά ξεχωριστά, αλλά στενά συνδεδεμένα επίπεδα: VL1 και VL2.

Σύνδεσμος με την τεκμηρίωση

▍ Το VL1 είναι ένα βασικό στρώμα μεταφοράς peer-to-peer (P2P), ένα είδος «εικονικού καλωδίου».

«Ένα παγκόσμιο κέντρο δεδομένων απαιτεί μια «παγκόσμια ντουλάπα» καλωδίωσης».

Στα συμβατικά δίκτυα, το L1 (OSI Layer 1) αναφέρεται στα πραγματικά καλώδια ή ασύρματα ραδιόφωνα που μεταφέρουν δεδομένα και στα τσιπ της φυσικής συσκευής πομποδέκτη που τα διαμορφώνουν και τα αποδιαμορφώνουν. Το VL1 είναι ένα δίκτυο peer-to-peer (P2P) που κάνει το ίδιο πράγμα, χρησιμοποιώντας κρυπτογράφηση, έλεγχο ταυτότητας και άλλα κόλπα δικτύωσης για την οργάνωση των εικονικών καλωδίων όπως απαιτείται.

Επιπλέον, το κάνει αυτό αυτόματα, γρήγορα και χωρίς τη συμμετοχή του χρήστη που εκκινεί έναν νέο κόμβο ZeroTier.

Για να επιτευχθεί αυτό, το VL1 είναι οργανωμένο παρόμοια με το σύστημα ονομάτων τομέα. Στην καρδιά του δικτύου βρίσκεται μια ομάδα ριζικών διακομιστών υψηλής διαθεσιμότητας, των οποίων ο ρόλος είναι παρόμοιος με αυτόν των διακομιστών ριζικών ονομάτων DNS. Προς το παρόν, οι κύριοι (πλανητικοί) ριζικοί διακομιστές βρίσκονται υπό τον έλεγχο του προγραμματιστή - ZeroTier, Inc. και παρέχονται ως δωρεάν υπηρεσία. 

Ωστόσο, είναι δυνατό να δημιουργήσετε προσαρμοσμένους διακομιστές root (luns) που σας επιτρέπουν να:

  • μείωση της εξάρτησης από την υποδομή ZeroTier, Inc. Σύνδεσμος με την τεκμηρίωση
  • αύξηση της παραγωγικότητας ελαχιστοποιώντας τις καθυστερήσεις· 
  • συνεχίστε να λειτουργείτε κανονικά εάν χαθεί η σύνδεση στο Διαδίκτυο.

Αρχικά, οι κόμβοι εκκινούνται χωρίς άμεσες συνδέσεις μεταξύ τους. 

Κάθε peer στο VL1 έχει μια μοναδική διεύθυνση ZeroTier 40-bit (10 δεκαεξαδικών), η οποία, σε αντίθεση με τις διευθύνσεις IP, είναι ένα κρυπτογραφημένο αναγνωριστικό που δεν περιέχει πληροφορίες δρομολόγησης. Αυτή η διεύθυνση υπολογίζεται από το δημόσιο τμήμα του ζεύγους δημόσιου/ιδιωτικού κλειδιού. Η διεύθυνση, το δημόσιο κλειδί και το ιδιωτικό κλειδί ενός κόμβου σχηματίζουν μαζί την ταυτότητά του.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Όσο για την κρυπτογράφηση, αυτό είναι λόγος για ξεχωριστό άρθρο.

Σύνδεσμος με την τεκμηρίωση

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

Ο μηχανισμός για τη δημιουργία μιας peer-to-peer σύνδεσης είναι ο ακόλουθος:

Έξυπνος διακόπτης Ethernet για τον πλανήτη Γη

  1. Ο κόμβος Α θέλει να στείλει ένα πακέτο στον κόμβο Β, αλλά επειδή δεν γνωρίζει την άμεση διαδρομή, το στέλνει ανάντη στον κόμβο R (φεγγάρι, ο ριζικός διακομιστής του χρήστη).
  2. Εάν ο κόμβος R έχει άμεση σύνδεση με τον κόμβο Β, προωθεί το πακέτο εκεί. Διαφορετικά, στέλνει το πακέτο ανάντη πριν φτάσει στις πλανητικές ρίζες.Οι πλανητικές ρίζες γνωρίζουν για όλους τους κόμβους, οπότε το πακέτο θα φτάσει τελικά στον κόμβο Β εάν είναι συνδεδεμένο.
  3. Ο κόμβος R στέλνει επίσης ένα μήνυμα που ονομάζεται ραντεβού στον κόμβο Α, το οποίο περιέχει συμβουλές για το πώς μπορεί να φτάσει στον κόμβο Β. Εν τω μεταξύ, ο διακομιστής ρίζας, ο οποίος προωθεί το πακέτο στον κόμβο Β, στέλνει ένα ραντεβού, ενημερώνοντάς τον για το πώς μπορεί να φτάσει στον κόμβο Α .
  4. Οι κόμβοι Α και Β λαμβάνουν τα μηνύματα του ραντεβού τους και προσπαθούν να στείλουν δοκιμαστικά μηνύματα ο ένας στον άλλο σε μια προσπάθεια παραβίασης οποιουδήποτε τείχους προστασίας NAT ή κατάστασης που συναντώνται στην πορεία. Εάν αυτό λειτουργεί, τότε δημιουργείται μια άμεση σύνδεση και τα πακέτα δεν πηγαίνουν πλέον μπρος-πίσω.

Εάν δεν μπορεί να πραγματοποιηθεί απευθείας σύνδεση, η επικοινωνία θα συνεχιστεί μέσω ρελέ και οι προσπάθειες απευθείας σύνδεσης θα συνεχιστούν μέχρι να επιτευχθεί ένα επιτυχές αποτέλεσμα. 

Το VL1 διαθέτει επίσης άλλα χαρακτηριστικά για την καθιέρωση άμεσης συνδεσιμότητας, συμπεριλαμβανομένης της ανακάλυψης ομοτίμων LAN, της πρόβλεψης θύρας για διέλευση συμμετρικού IPv4 NAT και ρητή αντιστοίχιση θυρών χρησιμοποιώντας uPnP ή/και NAT-PMP, εάν είναι διαθέσιμο στο τοπικό φυσικό LAN.

→ Σύνδεσμος με την τεκμηρίωση

▍ Το VL2 είναι ένα πρωτόκολλο εικονικοποίησης δικτύου Ethernet τύπου VXLAN με λειτουργίες διαχείρισης SDN. Γνωστό περιβάλλον επικοινωνίας για λειτουργικό σύστημα και εφαρμογές...

Σε αντίθεση με το VL1, η δημιουργία δικτύων VL2 (VLAN) και η σύνδεση κόμβων σε αυτά, καθώς και η διαχείρισή τους, απαιτεί άμεση συμμετοχή από τον χρήστη. Μπορεί να το κάνει αυτό χρησιμοποιώντας έναν ελεγκτή δικτύου. Ουσιαστικά, είναι ένας κανονικός κόμβος ZeroTier, όπου οι λειτουργίες του ελεγκτή ελέγχονται με δύο τρόπους: είτε απευθείας, αλλάζοντας αρχεία, είτε, όπως συστήνει έντονα ο προγραμματιστής, χρησιμοποιώντας ένα δημοσιευμένο API. 

Αυτή η μέθοδος διαχείρισης εικονικών δικτύων ZeroTier δεν είναι πολύ βολική για τον μέσο άνθρωπο, επομένως υπάρχουν πολλά GUI:
 

  • Ένα από τον προγραμματιστή ZeroTier, διαθέσιμο ως δημόσια λύση cloud SaaS με τέσσερα προγράμματα συνδρομής, συμπεριλαμβανομένων δωρεάν, αλλά περιορισμένου αριθμού διαχειριζόμενων συσκευών και επιπέδου υποστήριξης
  • Η δεύτερη προέρχεται από έναν ανεξάρτητο προγραμματιστή, κάπως απλοποιημένη στη λειτουργικότητα, αλλά διαθέσιμη ως ιδιωτική λύση ανοιχτού κώδικα για χρήση εντός εγκατάστασης ή σε πόρους cloud.

Το VL2 υλοποιείται πάνω από το VL1 και μεταφέρεται από αυτό. Ωστόσο, κληρονομεί την κρυπτογράφηση και τον έλεγχο ταυτότητας του τερματικού σημείου VL1 και χρησιμοποιεί επίσης τα ασύμμετρα κλειδιά του για την υπογραφή και την επαλήθευση των διαπιστευτηρίων. Το VL1 σας επιτρέπει να εφαρμόσετε το VL2 χωρίς να ανησυχείτε για την υπάρχουσα φυσική τοπολογία δικτύου. Δηλαδή, προβλήματα συνδεσιμότητας και απόδοσης δρομολόγησης είναι προβλήματα VL1. Είναι σημαντικό να κατανοήσουμε ότι δεν υπάρχει σύνδεση μεταξύ των εικονικών δικτύων VL2 και των διαδρομών VL1. Παρόμοια με την πολυπλεξία VLAN σε ένα ενσύρματο LAN, δύο κόμβοι που μοιράζονται πολλαπλές συνδρομές δικτύου θα εξακολουθούν να έχουν μόνο μία διαδρομή VL1 (εικονικό καλώδιο) μεταξύ τους.

Κάθε δίκτυο VL2 (VLAN) αναγνωρίζεται από μια διεύθυνση δικτύου ZeroTier 64-bit (16 δεκαεξαδικών), η οποία περιέχει τη διεύθυνση ZeroTier 40-bit του ελεγκτή και έναν αριθμό 24-bit που προσδιορίζει το δίκτυο που δημιουργήθηκε από αυτόν τον ελεγκτή.

Network ID: 8056c2e21c123456
            |         |
            |         Network number on controller
            |
            ZeroTier address of controller

Όταν ένας κόμβος ενώνεται σε ένα δίκτυο ή ζητά μια ενημέρωση διαμόρφωσης δικτύου, στέλνει ένα μήνυμα αίτησης διαμόρφωσης δικτύου (μέσω VL1) στον ελεγκτή δικτύου. Στη συνέχεια, ο ελεγκτής χρησιμοποιεί τη διεύθυνση VL1 του κόμβου για να τον βρει στο δίκτυο και να του στείλει τα κατάλληλα πιστοποιητικά, διαπιστευτήρια και πληροφορίες διαμόρφωσης. Από την άποψη των εικονικών δικτύων VL2, οι διευθύνσεις VL1 ZeroTier μπορούν να θεωρηθούν ως αριθμοί θυρών σε έναν τεράστιο παγκόσμιο εικονικό μεταγωγέα.

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

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

Τα δίκτυα ZeroTier υποστηρίζουν διανομή πολλαπλής διανομής μέσω ενός απλού συστήματος δημοσίευσης/συνδρομής.

Σύνδεσμος με την τεκμηρίωση

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

Μια μετάδοση (Ethernet ff: ff: ff: ff: ff: ff) αντιμετωπίζεται ως ομάδα πολλαπλής εκπομπής στην οποία είναι συνδρομητές όλοι οι συμμετέχοντες. Μπορεί να απενεργοποιηθεί σε επίπεδο δικτύου για να μειωθεί η επισκεψιμότητα εάν δεν είναι απαραίτητο. 

Το ZeroTier μιμείται έναν πραγματικό διακόπτη Ethernet. Αυτό το γεγονός μας επιτρέπει να πραγματοποιήσουμε συνδυάζοντας τα δημιουργημένα εικονικά δίκτυα με άλλα δίκτυα Ethernet (ενσύρματο LAN, WiFi, εικονικό backplane, κ.λπ.) σε επίπεδο σύνδεσης δεδομένων - χρησιμοποιώντας μια κανονική γέφυρα Ethernet.

Για να λειτουργήσει ως γέφυρα, ο ελεγκτής δικτύου πρέπει να ορίσει έναν κεντρικό υπολογιστή ως τέτοιο. Αυτό το σχήμα υλοποιείται για λόγους ασφαλείας, καθώς οι κανονικοί κεντρικοί υπολογιστές δικτύου δεν επιτρέπεται να στέλνουν κίνηση από πηγή διαφορετική από τη διεύθυνση MAC τους. Οι κόμβοι που ορίζονται ως γέφυρες χρησιμοποιούν επίσης μια ειδική λειτουργία του αλγόριθμου πολλαπλής εκπομπής, ο οποίος αλληλεπιδρά μαζί τους πιο επιθετικά και στοχευμένα κατά τις ομαδικές συνδρομές και την αναπαραγωγή όλης της κυκλοφορίας εκπομπής και των αιτημάτων ARP. 

Ο διακόπτης έχει επίσης τη δυνατότητα δημιουργίας δημόσιων και ad-hoc δικτύων, μηχανισμό QoS και πρόγραμμα επεξεργασίας κανόνων δικτύου.

▍Κόμβος:

ZeroTier One είναι μια υπηρεσία που εκτελείται σε φορητούς υπολογιστές, επιτραπέζιους υπολογιστές, διακομιστές, εικονικές μηχανές και κοντέινερ που παρέχει συνδέσεις σε ένα εικονικό δίκτυο μέσω μιας θύρας εικονικού δικτύου, παρόμοια με έναν πελάτη VPN. 

Μόλις εγκατασταθεί και ξεκινήσει η υπηρεσία, μπορείτε να συνδεθείτε σε εικονικά δίκτυα χρησιμοποιώντας τις 16-ψήφιες διευθύνσεις τους. Κάθε δίκτυο εμφανίζεται ως μια εικονική θύρα δικτύου στο σύστημα, η οποία συμπεριφέρεται ακριβώς όπως μια κανονική θύρα Ethernet.

Το ZeroTier One είναι προς το παρόν διαθέσιμο για τα ακόλουθα λειτουργικά συστήματα και συστήματα.

ΛΣ:

  • Microsoft Windows - Εγκατάσταση MSI x86/x64
  • MacOS - Εγκαταστάτης PKG
  • apple iOS - App Store
  • Android — Play Store
  • Linux - DEB/RPM
  • FreeBSD - Πακέτο FreeBSD

NAS:

  • Synology NAS
  • QNAP NAS
  • WD MyCloud NAS

Άλλα:

  • Λιμενεργάτης - αρχείο docker
  • OpenWrt - κοινοτικό λιμάνι
  • Ενσωμάτωση εφαρμογής - SDK (libzt)

Συνοψίζοντας όλα τα παραπάνω, θα σημειώσω ότι το ZeroTier είναι ένα εξαιρετικό και γρήγορο εργαλείο για το συνδυασμό των φυσικών, εικονικών ή cloud πόρων σας σε ένα κοινό τοπικό δίκτυο, με δυνατότητα διαίρεσης σε VLAN και απουσία ενός μόνο σημείου αποτυχίας .

Αυτό είναι για το θεωρητικό μέρος στη μορφή του πρώτου άρθρου για το ZeroTier για το Habr - αυτό είναι μάλλον όλο! Στο επόμενο άρθρο, σκοπεύω να δείξω στην πράξη τη δημιουργία μιας υποδομής εικονικού δικτύου με βάση το ZeroTier, όπου ένα VDS με πρότυπο GUI ιδιωτικού ανοιχτού κώδικα θα χρησιμοποιείται ως ελεγκτής δικτύου. 

Αγαπητοί αναγνώστες! Χρησιμοποιείτε την τεχνολογία ZeroTier στα έργα σας; Εάν όχι, ποια εργαλεία χρησιμοποιείτε για τη δικτύωση των πόρων σας;

Έξυπνος διακόπτης Ethernet για τον πλανήτη Γη

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο