
âEs gibt mehrere Möglichkeiten, eine Lösung zu schaffen (ein Problem zu lösen), aber der teuerste und/oder beliebteste Weg ist nicht immer der effektivste!â
PrÀambel
Vor etwa drei Jahren stieĂ ich bei der Entwicklung eines Remote-Modells zur Notfallwiederherstellung auf ein Hindernis, das nicht sofort bemerkt wurde: einen Mangel an Informationen ĂŒber neue Originallösungen zur Netzwerkvirtualisierung in Community-Quellen.
Der Algorithmus des entwickelten Modells war wie folgt geplant:
- Ein Remote-Benutzer, der mich kontaktiert hat und dessen Computer sich einmal mit der Meldung âSystemfestplatte nicht erkannt/nicht formatiertâ nicht starten lieĂ, startet ihn ĂŒber einen USB-Stick.
- WÀhrend des Bootvorgangs verbindet sich das System automatisch mit einem sicheren privaten lokalen Netzwerk, das neben dem System selbst auch die Workstation des Administrators, in diesem Fall ein Laptop, und einen NAS-Knoten enthÀlt.
- Dann verbinde ich mich â entweder um Festplattenpartitionen wiederzubeleben oder um Daten daraus zu extrahieren.
ZunÀchst habe ich dieses Modell mithilfe eines VPN-Servers auf einem lokalen Router in einem Netzwerk unter meiner Kontrolle und dann auf einem gemieteten VDS implementiert. Doch wie so oft und gemÀà Chisholms erstem Gesetz kommt es bei Regen zu einem Netzwerkausfall des Internetanbieters oder zu Streitigkeiten zwischen Unternehmen, und die Energie des Dienstanbieters verschwindet ...
Daher habe ich mich entschlossen, zunĂ€chst die grundlegenden Anforderungen zu formulieren, die das erforderliche Werkzeug erfĂŒllen muss. Das erste ist die Dezentralisierung. Zweitens, wenn man bedenkt, dass ich mehrere solcher Life-USBs habe, verfĂŒgt jeder von ihnen ĂŒber ein separates isoliertes Netzwerk. Und drittens: eine schnelle Anbindung verschiedener GerĂ€te an das Netzwerk und deren einfache Verwaltung, auch fĂŒr den Fall, dass mein Laptop ebenfalls dem oben genannten Gesetz zum Opfer fĂ€llt.
Auf dieser Grundlage und nachdem ich zweieinhalb Monate mit der praktischen Recherche mehrerer nicht sehr geeigneter Optionen verbracht hatte, beschloss ich auf eigenes Risiko, ein anderes Tool eines mir damals unbekannten Startups namens ZeroTier auszuprobieren. Was ich spÀter nie bereut habe.
Um herauszufinden, ob sich die inhaltliche Situation seit diesem denkwĂŒrdigen Moment geĂ€ndert hat, habe ich wĂ€hrend dieser Neujahrsfeiertage eine selektive PrĂŒfung von Artikeln zu diesem Thema durchgefĂŒhrt und dabei Habr als Quelle verwendet. FĂŒr die Suchanfrage âZeroTierâ gibt es in den Suchergebnissen nur drei Artikel, die es erwĂ€hnen, und nicht einen einzigen mit auch nur einer kurzen Beschreibung. Und das, obwohl sich darunter auch die Ăbersetzung eines Artikels befindet, den der GrĂŒnder von ZeroTier, Inc. selbst verfasst hat. â .
Die Ergebnisse waren enttĂ€uschend und veranlassten mich, ausfĂŒhrlicher ĂŒber ZeroTier zu sprechen, um modernen âSuchernâ den gleichen Weg wie mir zu ersparen.
Also, was bist du?
Der Entwickler positioniert ZeroTier als intelligenten Ethernet-Switch fĂŒr den Planeten Erde.
âEs handelt sich um einen verteilten Netzwerk-Hypervisor, der auf einem kryptografisch sicheren globalen Peer-to-Peer-Netzwerk (P2P) aufbaut. Ein SDN-Tool Ă€hnlich einem Enterprise-Switch, das virtuelle Netzwerke auf physischen Netzwerken ermöglicht, sowohl lokale als auch globale, mit der Möglichkeit, praktisch jede Anwendung oder jedes GerĂ€t zu verbinden.â
Dies ist eher eine Marketingbeschreibung, nun zu den technologischen Merkmalen.
âKern:
Der ZeroTier-Netzwerk-Hypervisor ist eine eigenstĂ€ndige Netzwerkvirtualisierungs-Engine, die ein Ethernet-Netzwerk, Ă€hnlich wie VXLAN, auf einem globalen verschlĂŒsselten Peer-to-Peer-Netzwerk (P2P) emuliert.
Die in ZeroTier verwendeten Protokolle sind originell, Àhneln jedoch in ihrer Erscheinung VXLAN und IPSec und bestehen aus zwei konzeptionell getrennten, aber eng verwandten Schichten: VL1 und VL2.
â
âVL1 ist eine grundlegende Peer-to-Peer-Transportschicht (P2P), eine Art âvirtuelles Kabelâ.
âEin globales Rechenzentrum erfordert einen âglobalen Schrankâ voller Kabel.â
In herkömmlichen Netzwerken bezieht sich L1 (OSI-Schicht 1) auf die eigentlichen Kabel oder drahtlosen FunkkanĂ€le, die Daten ĂŒbertragen, und die physischen Chips in den Sende-/EmpfangsgerĂ€ten, die diese modulieren und demodulieren. VL1 ist ein Peer-to-Peer-Netzwerk (P2P), das dasselbe tut und VerschlĂŒsselung, Authentifizierung und andere Netzwerktricks verwendet, um virtuelle Kabel nach Bedarf zu organisieren.
DarĂŒber hinaus geschieht dies automatisch, schnell und ohne dass der Benutzer einen neuen ZeroTier-Knoten starten muss.
Um dies zu erreichen, ist VL1 Ă€hnlich wie das Domain Name System organisiert. Den Kern des Netzwerks bildet eine Gruppe hochverfĂŒgbarer Root-Server, deren Rolle der von DNS-Root-Nameservern Ă€hnelt. Derzeit werden die wichtigsten (planetaren) Root-Server vom Entwickler ZeroTier, Inc. verwaltet und als kostenloser Dienst bereitgestellt.
Es ist jedoch möglich, benutzerdefinierte Root-Server (LUNs) zu erstellen, die Folgendes ermöglichen:
- Verringerung der AbhÀngigkeit von der Infrastruktur von ZeroTier, Inc.;
- Verbessern Sie die ProduktivitÀt, indem Sie Verzögerungen minimieren.
- funktioniert weiterhin wie gewohnt, wenn Ihre Internetverbindung verloren geht.
ZunÀchst werden Knoten ohne direkte Verbindung zueinander gestartet.
Jeder Peer auf VL1 verfĂŒgt ĂŒber eine eindeutige 40-Bit-ZeroTier-Adresse (10 Hexadezimalziffern), die im Gegensatz zu IP-Adressen eine verschlĂŒsselte Kennung ist, die keine Routing-Informationen enthĂ€lt. Diese Adresse wird aus dem öffentlichen Teil des öffentlichen/privaten SchlĂŒsselpaars berechnet. Die Adresse, der öffentliche SchlĂŒssel und der private SchlĂŒssel eines Knotens bilden zusammen seine IdentitĂ€t.
Member ID: df56c5621c
|
ZeroTier address of nodeWas die VerschlĂŒsselung betrifft, ist dies ein Grund fĂŒr einen separaten Artikel.
â
Um eine Kommunikation herzustellen, senden Peers zunĂ€chst Pakete ânach obenâ in den Stammserverbaum und initiieren auf ihrem Weg durch das Netzwerk die zufĂ€llige Erstellung direkter Verbindungen. Der Baum versucht stĂ€ndig, sich selbst âzusammenzubrechenâ, um sich fĂŒr die gespeicherte Routenkarte zu optimieren.
Der Mechanismus zum Herstellen einer Peer-to-Peer-Verbindung ist wie folgt:

- Knoten A möchte ein Paket an Knoten B senden, da er aber den direkten Pfad nicht kennt, sendet er es stromaufwÀrts an Knoten R (Moon, den Root-Server des Benutzers).
- Wenn Knoten R eine direkte Verbindung zu Knoten B hat, leitet er das Paket dorthin weiter. Andernfalls sendet es das Paket stromaufwĂ€rts, bis es die Planetenwurzeln erreicht. Die Planetenwurzeln kennen alle Knoten, sodass das Paket schlieĂlich Knoten B erreicht, wenn es online ist.
- Knoten R sendet auĂerdem eine als Rendezvous bezeichnete Nachricht an Knoten A, die Hinweise dazu enthĂ€lt, wie er Knoten B erreichen kann. In der Zwischenzeit sendet der Root-Server, der das Paket an Knoten B weiterleitet, ein Rendezvous, das ihm mitteilt, wie er Knoten A erreichen kann.
- Die Knoten A und B empfangen ihre Rendezvous-Nachrichten und versuchen, einander Testnachrichten zu senden. Dabei versuchen sie, alle auf dem Weg angetroffenen NATs oder Stateful Firewalls zu âdurchbrechenâ. Wenn dies funktioniert, wird eine direkte Verbindung hergestellt und Pakete reisen nicht mehr âdurch die GĂ€rtenâ.
Wenn keine direkte Verbindung hergestellt werden kann, wird die Kommunikation ĂŒber das Relay fortgesetzt und es werden so lange Versuche unternommen, eine direkte Verbindung herzustellen, bis ein positives Ergebnis erzielt wird.
VL1 verfĂŒgt auĂerdem ĂŒber weitere Funktionen zum Herstellen einer direkten KonnektivitĂ€t, darunter LAN-Peer-Erkennung, Portvorhersage fĂŒr symmetrisches IPv4-NAT-Traversal und explizites Port-Mapping mithilfe von uPnP und/oder NAT-PMP, sofern im lokalen physischen LAN verfĂŒgbar.
â
âVL2 ist ein VXLAN-Ă€hnliches Ethernet-Netzwerkvirtualisierungsprotokoll mit SDN-Verwaltungsfunktionen. Vertraute Kommunikationsumgebung fĂŒr Betriebssystem und Anwendungen âŠ
Anders als bei VL1 erfordert das Erstellen von VL2-Netzwerken (VLANs), das Verbinden von Knoten mit ihnen sowie deren Verwaltung die direkte Beteiligung des Benutzers. Dies kann er mit Hilfe eines Netzwerkcontrollers tun. Im Wesentlichen handelt es sich um einen regulĂ€ren ZeroTier-Knoten, bei dem die Controllerfunktionen auf zwei Arten gesteuert werden: entweder direkt durch Ăndern von Dateien oder, wie der Entwickler dringend empfiehlt, mithilfe der veröffentlichten API.
Diese Methode zur Verwaltung virtueller ZeroTier-Netzwerke ist fĂŒr den durchschnittlichen Benutzer nicht sehr praktisch, daher gibt es mehrere GUIs:
- Eines vom Entwickler ZeroTier, verfĂŒgbar als Public-Cloud-SaaS-Lösung mit vier AbonnementplĂ€nen, darunter kostenlos, aber begrenzt in der Anzahl der verwalteten GerĂ€te und im Support-Level
- Die zweite stammt von einem unabhĂ€ngigen Entwickler, ist in der FunktionalitĂ€t etwas vereinfacht, aber als private Open-Source-Lösung fĂŒr die Verwendung vor Ort oder auf Cloud-Ressourcen verfĂŒgbar.
Die VL2-Schicht wird ĂŒber VL1 implementiert und von dieser transportiert. Dabei ĂŒbernimmt es die VL1-EndpunktverschlĂŒsselung und -authentifizierung und verwendet seine asymmetrischen SchlĂŒssel zum Signieren und ĂberprĂŒfen von Anmeldeinformationen. VL1 ermöglicht die Implementierung von VL2 ohne RĂŒcksicht auf die vorhandene physische Netzwerktopologie. Das heiĂt, Probleme mit der KonnektivitĂ€t und der Routing-Effizienz sind Aufgaben auf VL1-Ebene. Es ist wichtig zu verstehen, dass zwischen virtuellen VL2-Netzwerken und VL1-Pfaden keine Verbindung besteht. Ăhnlich wie beim VLAN-Multiplexing in einem kabelgebundenen LAN verfĂŒgen zwei Knoten, die mehrere Netzwerkmitgliedschaften gemeinsam nutzen, weiterhin nur ĂŒber einen VL1-Pfad (virtuelles Kabel) zwischen sich.
Jedes VL2-Netzwerk (VLAN) wird durch eine 64-Bit-ZeroTier-Netzwerkadresse (16 Hexadezimalziffern) identifiziert, die die 40-Bit-ZeroTier-Adresse des Controllers und eine 24-Bit-Nummer enthÀlt, die das von diesem Controller erstellte Netzwerk identifiziert.
Network ID: 8056c2e21c123456
| |
| Network number on controller
|
ZeroTier address of controllerWenn ein Knoten einem Netzwerk beitritt oder eine Aktualisierung der Netzwerkkonfiguration anfordert, sendet er eine Netzwerkkonfigurationsanforderungsnachricht (ĂŒber VL1) an den Netzwerkcontroller. Der Controller verwendet dann die VL1-Adresse des Knotens, um ihn im Netzwerk zu lokalisieren und ihm die entsprechenden Zertifikate, Anmeldeinformationen und Konfigurationsinformationen zu senden. Aus der Perspektive eines virtuellen VL2-Netzwerks können ZeroTier-VL1-Adressen als Portnummern auf einem riesigen virtuellen Switch im globalen MaĂstab betrachtet werden.
Alle Anmeldeinformationen, die von Netzwerkcontrollern an Knoten ausgegeben werden, die an einem bestimmten Netzwerk teilnehmen, werden mit dem geheimen SchlĂŒssel des Controllers signiert, sodass alle Netzwerkteilnehmer sie ĂŒberprĂŒfen können. Die Anmeldeinformationen verfĂŒgen ĂŒber vom Controller generierte Zeitstempel, die relative Vergleiche ermöglichen, ohne auf die lokale Systemuhr des Knotens zugreifen zu mĂŒssen.
Anmeldeinformationen werden nur an ihre Besitzer ausgegeben und dann an Peers gesendet, die Daten mit anderen Knoten im Netzwerk austauschen möchten. Dadurch kann das Netzwerk auf enorme GröĂen skaliert werden, ohne dass groĂe Mengen an Anmeldeinformationen auf Knoten zwischengespeichert oder stĂ€ndig Kontakt mit dem Netzwerkcontroller aufgenommen werden mĂŒssen.
ZeroTier-Netzwerke unterstĂŒtzen Multicasting ĂŒber ein einfaches Publish/Subscribe-System.
â
Wenn ein Knoten einen Multicast fĂŒr eine bestimmte Broadcast-Gruppe empfangen möchte, gibt er seine Mitgliedschaft in dieser Gruppe gegenĂŒber anderen Mitgliedern des Netzwerks, mit dem er kommuniziert, und gegenĂŒber dem Netzwerkcontroller bekannt. Wenn ein Knoten einen Multicast senden möchte, konsultiert er gleichzeitig seinen Cache der letzten Veröffentlichungen und fordert regelmĂ€Ăig zusĂ€tzliche Veröffentlichungen an.
Ein Broadcast (Ethernet ff:ff:ff:ff:ff:ff) wird als Multicast-Gruppe behandelt, der alle Teilnehmer beitreten. Es kann auf Netzwerkebene deaktiviert werden, um den Datenverkehr zu reduzieren, wenn es nicht benötigt wird.
ZeroTier emuliert einen echten Ethernet-Switch. Diese Tatsache ermöglicht die DurchfĂŒhrung Kombinieren erstellter virtueller Netzwerke mit anderen Ethernet-Netzwerken (kabelgebundenes lokales Netzwerk, WLAN, virtuelle Backplane usw.) auf Datenverbindungsebene â mithilfe einer normalen Ethernet-BrĂŒcke.
Um als BrĂŒcke zu fungieren, muss ein Netzwerkcontroller einen Netzwerkknoten als solche kennzeichnen. Dieses Schema wird aus SicherheitsgrĂŒnden implementiert, da es normalen Netzwerkknoten nicht gestattet ist, Datenverkehr von einer anderen Quelle als ihrer MAC-Adresse zu senden. Als Bridges bezeichnete Knoten verwenden auĂerdem einen speziellen Multicast-Algorithmusmodus, der beim Gruppieren von Abonnements aggressiver und gezielter mit ihnen interagiert und den gesamten Broadcast-Verkehr und alle ARP-Anfragen repliziert.
Der Switch verfĂŒgt auĂerdem ĂŒber die Möglichkeit, öffentliche und Ad-hoc-Netzwerke zu erstellen, einen QoS-Mechanismus und einen Netzwerkregel-Editor.
âKnoten:
ZeroTier One ist ein Dienst, der auf Laptops, Desktops, Servern, virtuellen Maschinen und Containern ausgefĂŒhrt wird und ĂŒber einen virtuellen Netzwerkport Verbindungen zu einem virtuellen Netzwerk bereitstellt, Ă€hnlich einem VPN-Client.
Sobald der Dienst installiert und gestartet ist, können Sie ĂŒber deren 16-stellige Adressen eine Verbindung zu virtuellen Netzwerken herstellen. Jedes Netzwerk erscheint als virtueller Netzwerkport im System, der sich wie ein normaler Ethernet-Port verhĂ€lt.
ZeroTier One ist derzeit fĂŒr die folgenden Betriebssysteme und Systeme verfĂŒgbar.
Betriebssysteme:
- Microsoft Windows â MSI-Installer x86/x64
- MacOS â PKG-Installer
- apple iOS â App Store
- Android - Spielladen
- Linux â DEB/RPM
- FreeBSD â FreeBSD-Paket
NAS:
- Synology NAS
- QNAP NAS
- WD MyCloud NAS
Andere:
- Docker â Docker-Datei
- OpenWRT â Gemeinschaftshafen
- App-Einbettung â SDK (libzt)
Zusammenfassend wĂŒrde ich sagen, dass ZeroTier ein groĂartiges und schnelles Tool ist, um Ihre physischen, virtuellen oder Cloud-Ressourcen in einem gemeinsamen lokalen Netzwerk zu kombinieren, mit der Möglichkeit, es in VLANs aufzuteilen, und ohne einen einzelnen Ausfallpunkt.
Das ist wahrscheinlich alles zum theoretischen Teil im Format des ersten Artikels ĂŒber ZeroTier fĂŒr Habr! Im nĂ€chsten Artikel möchte ich die Erstellung einer virtuellen Netzwerkinfrastruktur auf Basis von ZeroTier in der Praxis demonstrieren, wobei ein VDS mit einer privaten Open-Source-GUI-Vorlage als Netzwerkcontroller verwendet wird.
Liebe Leser! Verwenden Sie in Ihren Projekten die ZeroTier-Technologie? Wenn nicht, welche Tools verwenden Sie, um Ihre Ressourcen in einem gemeinsamen Netzwerk zu verbinden?
Source: habr.com
