Intelligenter Ethernet-Switch für den Planeten Erde

Intelligenter Ethernet-Switch für den Planeten Erde
„Man kann eine Lösung (ein Problem lösen) auf verschiedene Arten schaffen, aber die teuerste und/oder beliebteste Methode ist nicht immer die effektivste!“

Präambel

Vor etwa drei Jahren stieß ich bei der Entwicklung eines Remote-Modells für die Notfalldatenwiederherstellung auf ein Hindernis, das nicht sofort bemerkt wurde – den Mangel an Informationen über neue Originallösungen für die Netzwerkvirtualisierung in Community-Quellen. 

Der Algorithmus für das entwickelte Modell wurde wie folgt geplant: 

  1. Ein Remote-Benutzer, der mich kontaktiert hat und dessen Computer einmal den Start verweigerte und die Meldung „Systemfestplatte nicht erkannt/nicht formatiert“ anzeigte, lädt ihn über USB. 
  2. Während des Bootvorgangs verbindet sich das System automatisch mit einem sicheren privaten lokalen Netzwerk, das zusätzlich zu sich selbst den Arbeitsplatz des Administrators, in diesem Fall einen Laptop, und einen NAS-Knoten enthält. 
  3. Dann verbinde ich mich – entweder um die Festplattenpartitionen wiederzubeleben oder um Daten von dort 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. Aber wie so oft und nach Chisholms erstem Gesetz wird bei Regen das Netzwerk des Internetanbieters ausfallen, und Streitigkeiten zwischen Unternehmen führen dazu, dass der Dienstanbieter „Energie“ verliert …

Deshalb habe ich mich entschieden, zunächst die grundlegenden Anforderungen zu formulieren, die das benötigte Werkzeug erfüllen muss. Die erste ist die Dezentralisierung. Zweitens verfügt jeder von ihnen über ein separates isoliertes Netzwerk, da ich mehrere dieser Life-USBs habe. Nun, drittens die schnelle Verbindung verschiedener Geräte mit dem 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 Erforschung mehrerer nicht sehr geeigneter Optionen verbracht hatte, beschloss ich auf eigene Gefahr und Gefahr, ein anderes Tool eines mir damals unbekannten Startups namens ZeroTier auszuprobieren. Was ich später nie bereut habe.

Während dieser Neujahrsfeiertage versuchte ich herauszufinden, ob sich die inhaltliche Situation seit diesem denkwürdigen Moment verändert hat, und führte eine selektive Prüfung der Verfügbarkeit von Artikeln zu diesem Thema durch, wobei ich Habr als Quelle verwendete. Zur Suchanfrage „ZeroTier“ gibt es in den Suchergebnissen nur drei Artikel, in denen sie erwähnt wird, und keinen einzigen, der zumindest eine kurze Beschreibung enthält. Und das, obwohl sich darunter eine Übersetzung eines Artikels befindet, der vom Gründer von ZeroTier, Inc. selbst verfasst wurde. — Adam Ierymenko.

Die Ergebnisse waren enttäuschend und veranlassten mich, ausführlicher über ZeroTier zu sprechen, um modernen „Suchenden“ den Weg zu ersparen, den ich eingeschlagen habe.

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 Tool, das einem Unternehmens-SDN-Switch ähnelt und dazu dient, virtuelle Netzwerke über physische Netzwerke zu organisieren, sowohl lokal als auch global, mit der Möglichkeit, nahezu jede Anwendung oder jedes Gerät zu verbinden.“

Dies ist eher eine Marketingbeschreibung, nun geht es um die technologischen Features.

▍Kernel: 

ZeroTier Network 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 im Aussehen jedoch VXLAN und IPSec und bestehen aus zwei konzeptionell getrennten, aber eng verwandten Schichten: VL1 und VL2.

Link zur Dokumentation

▍VL1 ist eine grundlegende Peer-to-Peer-Transportschicht (P2P), eine Art „virtuelles Kabel“.

„Ein globales Rechenzentrum erfordert einen ‚globalen Schrank‘ mit Kabeln.“

In herkömmlichen Netzwerken bezieht sich L1 (OSI Layer 1) auf die tatsächlichen Kabel oder drahtlosen Funkgeräte, die Daten übertragen, und auf die physischen Transceiver-Gerätechips, die diese modulieren und demodulieren. VL1 ist ein Peer-to-Peer-Netzwerk (P2P), das dasselbe tut, indem es 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. Das Herzstück des Netzwerks ist eine Gruppe hochverfügbarer Root-Server, deren Rolle der von DNS-Root-Nameservern ähnelt. Derzeit stehen die wichtigsten (planetaren) Root-Server unter der Kontrolle des Entwicklers – ZeroTier, Inc. und werden als kostenloser Service angeboten. 

Es ist jedoch möglich, benutzerdefinierte Root-Server (LUNs) zu erstellen, die Ihnen Folgendes ermöglichen:

  • Verringerung der Abhängigkeit von der Infrastruktur von ZeroTier, Inc.; Link zur Dokumentation
  • Steigerung der Produktivität durch Minimierung von Verzögerungen; 
  • Funktioniert wie gewohnt weiter, wenn die Internetverbindung unterbrochen wird.

Zunächst werden Knoten ohne direkte Verbindung untereinander gestartet. 

Jeder Peer auf VL1 verfügt über eine eindeutige 40-Bit-ZeroTier-Adresse (10 hexadezimal), bei der es sich im Gegensatz zu IP-Adressen um eine verschlüsselte Kennung handelt, 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 node

Was die Verschlüsselung betrifft, ist dies ein Grund für einen separaten Artikel.

Link zur Dokumentation

Um die Kommunikation herzustellen, senden Peers zunächst Pakete „nach oben“ im Baum der Root-Server, und während diese Pakete durch das Netzwerk wandern, initiieren sie unterwegs die zufällige Erstellung von Weiterleitungskanälen. Der Baum versucht ständig, „selbst zusammenzufallen“, um sich für die von ihm gespeicherte Routenkarte zu optimieren.

Der Mechanismus zum Aufbau einer Peer-to-Peer-Verbindung ist wie folgt:

Intelligenter Ethernet-Switch für den Planeten Erde

  1. Knoten A möchte ein Paket an Knoten B senden, da er jedoch den direkten Pfad nicht kennt, sendet er es stromaufwärts an Knoten R (Mond, der Root-Server des Benutzers).
  2. Wenn Knoten R eine direkte Verbindung zu Knoten B hat, leitet er das Paket dorthin weiter. Andernfalls sendet es das Paket stromaufwärts, bevor es die Planetenwurzeln erreicht. Die Planetenwurzeln kennen alle Knoten, sodass das Paket schließlich Knoten B erreicht, wenn es online ist.
  3. Knoten R sendet außerdem eine Nachricht namens „Rendezvous“ an Knoten A, die Hinweise darauf enthält, wie er Knoten B erreichen kann. In der Zwischenzeit sendet der Root-Server, der das Paket an Knoten B weiterleitet, ein „Rendezvous“, in dem er ihn darüber informiert, wie er Knoten B erreichen kann Knoten A erreichen.
  4. Die Knoten A und B empfangen ihre Rendezvous-Nachrichten und versuchen, sich gegenseitig Testnachrichten zu senden, um unterwegs auftretende NAT- oder Stateful-Firewalls zu durchbrechen. Wenn dies funktioniert, wird eine direkte Verbindung hergestellt und es werden keine Pakete mehr hin- und hergeschickt.

Wenn keine direkte Verbindung hergestellt werden kann, wird die Kommunikation über Relay fortgesetzt und direkte Verbindungsversuche werden fortgesetzt, bis ein erfolgreiches Ergebnis erzielt wird. 

VL1 verfügt außerdem über weitere Funktionen zum Herstellen einer direkten Konnektivität, einschließlich LAN-Peer-Erkennung, Portvorhersage für die Durchquerung von symmetrischem IPv4-NAT und explizite Portzuordnung mithilfe von uPnP und/oder NAT-PMP, sofern im lokalen physischen LAN verfügbar.

→ Link zur Dokumentation

▍VL2 ist ein VXLAN-ähnliches Ethernet-Netzwerkvirtualisierungsprotokoll mit SDN-Verwaltungsfunktionen. Vertraute Kommunikationsumgebung für Betriebssystem und Anwendungen...

Im Gegensatz zu VL1 erfordert die Erstellung von VL2-Netzwerken (VLANs) und die Verbindung von Knoten mit ihnen sowie deren Verwaltung eine direkte Beteiligung des Benutzers. Dies kann er über einen Netzwerkcontroller tun. Im Wesentlichen handelt es sich um einen regulären ZeroTier-Knoten, bei dem die Controller-Funktionen auf zwei Arten gesteuert werden: entweder direkt, durch Ändern von Dateien oder, wie der Entwickler dringend empfiehlt, mithilfe einer veröffentlichten API. 

Diese Methode zur Verwaltung virtueller ZeroTier-Netzwerke ist für den Durchschnittsbürger 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 den Einsatz vor Ort oder auf Cloud-Ressourcen verfügbar.

VL2 ist auf VL1 implementiert und wird von diesem transportiert. Es übernimmt jedoch die Verschlüsselung und Authentifizierung des VL1-Endpunkts und verwendet auch dessen asymmetrische Schlüssel zum Signieren und Überprüfen von Anmeldeinformationen. Mit VL1 können Sie VL2 implementieren, ohne sich Gedanken über die vorhandene physische Netzwerktopologie machen zu müssen. Das heißt, Probleme mit Konnektivität und Routing-Effizienz sind VL1-Probleme. Es ist wichtig zu verstehen, dass keine Verbindung zwischen virtuellen VL2-Netzwerken und VL1-Pfaden besteht. Ähnlich wie beim VLAN-Multiplexing in einem kabelgebundenen LAN verfügen zwei Knoten, die mehrere Netzwerkmitgliedschaften teilen, immer noch nur über einen VL1-Pfad (virtuelles Kabel) zwischen ihnen.

Jedes VL2-Netzwerk (VLAN) wird durch eine 64-Bit-ZeroTier-Netzwerkadresse (16 hexadezimal) 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 controller

Wenn ein Knoten einem Netzwerk beitritt oder eine Netzwerkkonfigurationsaktualisierung anfordert, sendet er eine Netzwerkkonfigurationsanforderungsnachricht (über VL1) an den Netzwerkcontroller. Der Controller verwendet dann die VL1-Adresse des Knotens, um ihn im Netzwerk zu finden und ihm die entsprechenden Zertifikate, Anmeldeinformationen und Konfigurationsinformationen zu senden. Aus der Sicht virtueller VL2-Netzwerke können VL1-ZeroTier-Adressen als Portnummern auf einem riesigen globalen virtuellen Switch betrachtet werden.

Alle von Netzwerkcontrollern an Mitgliedsknoten eines bestimmten Netzwerks ausgestellten Anmeldeinformationen 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 einen relativen Vergleich ermöglichen, ohne auf die lokale Systemuhr des Hosts zugreifen zu müssen. 

Anmeldeinformationen werden nur an ihre Besitzer ausgegeben und dann an Peers gesendet, die mit anderen Knoten im Netzwerk kommunizieren 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 der Netzwerkcontroller kontaktiert werden muss.

ZeroTier-Netzwerke unterstützen die Multicast-Verteilung über ein einfaches Publish/Subscribe-System.

Link zur Dokumentation

Wenn ein Knoten eine Multicast-Übertragung für eine bestimmte Verteilergruppe empfangen möchte, kündigt er die Mitgliedschaft in dieser Gruppe den anderen Mitgliedern des Netzwerks, mit dem er kommuniziert, und dem Netzwerkcontroller an. Wenn ein Knoten einen Multicast senden möchte, greift er gleichzeitig auf seinen Cache mit aktuellen Veröffentlichungen zu und fordert regelmäßig weitere Veröffentlichungen an.

Ein Broadcast (Ethernet ff: ff: ff: ff: ff: ff) wird als Multicast-Gruppe behandelt, die alle Teilnehmer abonnieren. 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 uns die Umsetzung Kombinieren der erstellten virtuellen Netzwerke mit anderen Ethernet-Netzwerken (kabelgebundenes LAN, WLAN, virtuelle Rückwandplatine usw.) auf Datenverbindungsebene – mithilfe einer regulären Ethernet-Brücke.

Um als Brücke zu fungieren, muss der Netzwerkcontroller einen Host als solchen kennzeichnen. Dieses Schema wird aus Sicherheitsgründen implementiert, da es normalen Netzwerkhosts nicht gestattet ist, Datenverkehr von einer anderen Quelle als ihrer MAC-Adresse zu senden. Als Bridges bezeichnete Knoten verwenden außerdem einen speziellen Modus des Multicast-Algorithmus, der bei Gruppenabonnements und der Replikation des gesamten Broadcast-Verkehrs und der ARP-Anfragen aggressiver und gezielter mit ihnen interagiert. 

Der Switch verfügt außerdem über die Möglichkeit, öffentliche und Ad-hoc-Netzwerke zu erstellen, einen QoS-Mechanismus und einen Netzwerkregeleditor.

▍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-Installationsprogramm x86/x64
  • MacOS - PKG-Installationsprogramm
  • apple iOS - Appstore
  • 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)

Um all das zusammenzufassen, möchte ich anmerken, dass ZeroTier ein hervorragendes 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 zu unterteilen, und ohne einen einzigen Fehlerpunkt .

Das war’s mit dem theoretischen Teil im Format des ersten Artikels über ZeroTier für Habr – das ist wahrscheinlich alles! 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! Nutzen Sie die ZeroTier-Technologie in Ihren Projekten? Wenn nicht, mit welchen Tools vernetzen Sie Ihre Ressourcen?

Intelligenter Ethernet-Switch für den Planeten Erde

Source: habr.com

Kommentar hinzufügen