Slimme Ethernet-switch voor de planeet Aarde

Slimme Ethernet-switch voor de planeet Aarde
“Je kunt op verschillende manieren een oplossing creëren (een probleem oplossen), maar de duurste en/of populairste methode is niet altijd de meest effectieve!”

Преамбула

Ongeveer drie jaar geleden, tijdens het ontwikkelen van een model op afstand voor gegevensherstel bij rampen, kwam ik één obstakel tegen dat niet meteen werd opgemerkt: het gebrek aan informatie over nieuwe, originele oplossingen voor netwerkvirtualisatie in gemeenschapsbronnen. 

Het algoritme voor het ontwikkelde model was als volgt gepland: 

  1. Een externe gebruiker die contact met mij opnam, wiens computer ooit weigerde op te starten en het bericht 'systeemschijf niet gedetecteerd/niet geformatteerd' weergaf, laadt de schijf met behulp van levens-USB. 
  2. Tijdens het opstartproces maakt het systeem automatisch verbinding met een beveiligd privé lokaal netwerk, dat naast zichzelf het werkstation van de beheerder bevat, in dit geval een laptop, en een NAS-knooppunt. 
  3. Vervolgens maak ik verbinding - om de schijfpartities nieuw leven in te blazen, of om daar gegevens uit te halen.

Aanvankelijk implementeerde ik dit model met behulp van een VPN-server op een lokale router in een netwerk dat ik beheerde, en vervolgens op een gehuurde VDS. Maar zoals vaak gebeurt en volgens de eerste wet van Chisholm: als het regent, zal het netwerk van de internetprovider uitvallen, en zullen geschillen tussen zakelijke entiteiten ervoor zorgen dat de serviceprovider “energie” verliest...

Daarom besloot ik eerst de basisvereisten te formuleren waaraan het benodigde hulpmiddel moet voldoen. De eerste is decentralisatie. Ten tweede, aangezien ik meerdere van dergelijke levens-USB's heb, heeft elk van hen een afzonderlijk geïsoleerd netwerk. Ten derde: snelle verbinding met het netwerk van verschillende apparaten en eenvoudig beheer ervan, ook voor het geval mijn laptop ook het slachtoffer wordt van de hierboven genoemde wet.

Op basis hiervan en nadat ik twee en een halve maand had besteed aan praktisch onderzoek naar verschillende niet erg geschikte opties, besloot ik, op eigen risico en risico, een andere tool te proberen van een toen nog onbekende startup genaamd ZeroTier. Waar ik later geen spijt van heb gehad.

Tijdens deze nieuwjaarsvakantie heb ik, in een poging te begrijpen of de situatie met de inhoud sinds dat gedenkwaardige moment is veranderd, een selectieve audit uitgevoerd voor de beschikbaarheid van artikelen over dit onderwerp, waarbij ik Habr als bron gebruikte. Voor de zoekopdracht “ZeroTier” in de zoekresultaten zijn er slechts drie artikelen waarin dit wordt vermeld, en geen enkele met minstens een korte beschrijving. En dit ondanks het feit dat er onder hen een vertaling is van een artikel geschreven door de oprichter van ZeroTier, Inc. zelf. — Adam Ierymenko.

De resultaten waren teleurstellend en brachten mij ertoe meer in detail over ZeroTier te praten, waardoor moderne ‘zoekers’ niet dezelfde route moesten volgen als ik.

Dus, wat ben jij?

De ontwikkelaar positioneert ZeroTier als een intelligente Ethernet-switch voor planeet Aarde. 

“Het is een gedistribueerde netwerkhypervisor die is gebouwd bovenop een cryptografisch veilig wereldwijd peer-to-peer (P2P) netwerk. Een tool vergelijkbaar met een bedrijfs-SDN-switch, ontworpen om virtuele netwerken te organiseren over fysieke netwerken, zowel lokaal als mondiaal, met de mogelijkheid om vrijwel elke applicatie of elk apparaat te verbinden.”

Dit is meer een marketingbeschrijving, nu over de technologische kenmerken.

▍Kernel: 

ZeroTier Network Hypervisor is een stand-alone netwerkvirtualisatie-engine die een Ethernet-netwerk emuleert, vergelijkbaar met VXLAN, bovenop een wereldwijd gecodeerd peer-to-peer (P2P) netwerk.

De protocollen die in ZeroTier worden gebruikt, zijn origineel, hoewel ze qua uiterlijk lijken op VXLAN en IPSec en bestaan ​​uit twee conceptueel gescheiden, maar nauw verwante lagen: VL1 en VL2.

Link naar documentatie

▍VL1 is een eenvoudige peer-to-peer (P2P) transportlaag, een soort “virtuele kabel”.

“Een mondiaal datacenter vereist een ‘global closet’ aan bekabeling.”

In conventionele netwerken verwijst L1 (OSI Layer 1) naar de daadwerkelijke kabels of draadloze radio's die gegevens transporteren en de fysieke chips van het zendontvangerapparaat die deze moduleren en demoduleren. VL1 is een peer-to-peer (P2P) netwerk dat hetzelfde doet, waarbij gebruik wordt gemaakt van encryptie, authenticatie en andere netwerktrucs om virtuele kabels indien nodig te ordenen.

Bovendien doet het dit automatisch, snel en zonder tussenkomst van de gebruiker die een nieuw ZeroTier-knooppunt lanceert.

Om dit te bereiken is VL1 op dezelfde manier georganiseerd als het domeinnaamsysteem. Het hart van het netwerk wordt gevormd door een groep zeer beschikbare rootservers, waarvan de rol vergelijkbaar is met die van DNS-rootnaamservers. Op dit moment staan ​​de belangrijkste (planetaire) rootservers onder controle van de ontwikkelaar - ZeroTier, Inc. en worden aangeboden als een gratis dienst. 

Het is echter mogelijk om aangepaste rootservers (luns) te maken waarmee u het volgende kunt doen:

  • de afhankelijkheid van de infrastructuur van ZeroTier, Inc. verminderen; Link naar documentatie
  • verhoog de productiviteit door vertragingen tot een minimum te beperken; 
  • blijven normaal werken als de internetverbinding verbroken wordt.

Aanvankelijk worden knooppunten gelanceerd zonder directe verbindingen met elkaar. 

Elke peer op VL1 heeft een uniek 40-bits (10 hexadecimaal) ZeroTier-adres, dat, in tegenstelling tot IP-adressen, een gecodeerde identificatie is die geen routeringsinformatie bevat. Dit adres wordt berekend op basis van het publieke deel van het publieke/private sleutelpaar. Het adres, de publieke sleutel en de private sleutel van een knooppunt vormen samen de identiteit ervan.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Wat betreft encryptie is dit een reden voor een apart artikel.

Link naar documentatie

Om communicatie tot stand te brengen, sturen peers eerst pakketten “omhoog” in de boom van rootservers, en terwijl deze pakketten door het netwerk reizen, initiëren ze onderweg willekeurige creatie van voorwaartse kanalen. De boom probeert voortdurend ‘uit zichzelf in te storten’ om zichzelf te optimaliseren voor de routekaart die hij opslaat.

Het mechanisme voor het tot stand brengen van een peer-to-peer-verbinding is als volgt:

Slimme Ethernet-switch voor de planeet Aarde

  1. Knooppunt A wil een pakket naar knooppunt B sturen, maar omdat het het directe pad niet kent, stuurt het het stroomopwaarts naar knooppunt R (maan, de rootserver van de gebruiker).
  2. Als knooppunt R een directe verbinding heeft met knooppunt B, stuurt het het pakket daarheen door. Anders stuurt het het pakket stroomopwaarts voordat het de planetaire wortels bereikt. De planetaire wortels kennen alle knooppunten, dus het pakket zal uiteindelijk knooppunt B bereiken als het online is.
  3. Knooppunt R stuurt ook een bericht dat een "rendez-vous" wordt genoemd naar knooppunt A, met daarin tips over hoe het knooppunt B kan bereiken. Ondertussen verzendt de rootserver, die het pakket doorstuurt naar knooppunt B, een "rendez-vous" waarin wordt geïnformeerd hoe het knooppunt B kan bereiken. knooppunt A bereiken.
  4. Knooppunten A en B ontvangen hun rendez-vous-berichten en proberen testberichten naar elkaar te sturen in een poging om eventuele NAT- of stateful firewalls die u onderweg tegenkomt, te doorbreken. Als dit werkt, wordt er een directe verbinding tot stand gebracht en gaan er geen pakketten meer heen en weer.

Als er geen directe verbinding tot stand kan worden gebracht, wordt de communicatie voortgezet via relais, en blijven directe verbindingspogingen doorgaan totdat er een succesvol resultaat is bereikt. 

VL1 heeft ook andere functies voor het tot stand brengen van directe connectiviteit, waaronder LAN-peer-detectie, poortvoorspelling voor het doorlopen van symmetrische IPv4 NAT en expliciete poorttoewijzing met behulp van uPnP en/of NAT-PMP, indien beschikbaar op het lokale fysieke LAN.

→ Link naar documentatie

▍VL2 is een VXLAN-achtig Ethernet-netwerkvirtualisatieprotocol met SDN-beheerfuncties. Vertrouwde communicatieomgeving voor besturingssystemen en applicaties...

In tegenstelling tot VL1 vereist het creëren van VL2-netwerken (VLAN's), het verbinden van knooppunten ermee en het beheren ervan, directe deelname van de gebruiker. Hij kan dit doen met behulp van een netwerkcontroller. In wezen is het een regulier ZeroTier-knooppunt, waarbij de controllerfuncties op twee manieren worden bestuurd: rechtstreeks, door bestanden te wijzigen, of, zoals de ontwikkelaar sterk aanbeveelt, met behulp van een gepubliceerde API. 

Deze methode voor het beheren van virtuele ZeroTier-netwerken is niet erg handig voor de gemiddelde persoon, daarom zijn er verschillende GUI's:
 

  • Eén van de ontwikkelaar ZeroTier, beschikbaar als een publieke cloud SaaS-oplossing met vier abonnementen, inclusief gratis, maar beperkt in het aantal beheerde apparaten en het ondersteuningsniveau
  • De tweede is van een onafhankelijke ontwikkelaar, enigszins vereenvoudigd qua functionaliteit, maar beschikbaar als een private opensource-oplossing voor gebruik op locatie of in de cloud.

VL2 wordt bovenop VL1 geïmplementeerd en wordt daardoor getransporteerd. Het neemt echter de encryptie en authenticatie van het VL1-eindpunt over en gebruikt ook de asymmetrische sleutels om inloggegevens te ondertekenen en te verifiëren. Met VL1 kunt u VL2 implementeren zonder dat u zich zorgen hoeft te maken over de bestaande fysieke netwerktopologie. Dat wil zeggen dat problemen met connectiviteit en routeringsefficiëntie VL1-problemen zijn. Het is belangrijk om te begrijpen dat er geen verbinding bestaat tussen virtuele VL2-netwerken en VL1-paden. Net als bij VLAN-multiplexing in een bekabeld LAN, zullen twee knooppunten die meerdere netwerklidmaatschappen delen nog steeds slechts één VL1-pad (virtuele kabel) tussen hen hebben.

Elk VL2-netwerk (VLAN) wordt geïdentificeerd door een 64-bits (16 hexadecimaal) ZeroTier-netwerkadres, dat het 40-bits ZeroTier-adres van de controller bevat en een 24-bits nummer dat het netwerk identificeert dat door die controller is gemaakt.

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

Wanneer een knooppunt zich bij een netwerk aansluit of een netwerkconfiguratie-update aanvraagt, verzendt het een netwerkconfiguratieverzoekbericht (via VL1) naar de netwerkcontroller. De controller gebruikt vervolgens het VL1-adres van het knooppunt om het op het netwerk te vinden en het de juiste certificaten, inloggegevens en configuratie-informatie te sturen. Vanuit het oogpunt van virtuele VL2-netwerken kunnen VL1 ZeroTier-adressen worden gezien als poortnummers op een enorme wereldwijde virtuele switch.

Alle inloggegevens die door netwerkcontrollers aan lidknooppunten van een bepaald netwerk worden uitgegeven, worden ondertekend met de geheime sleutel van de controller, zodat alle netwerkdeelnemers deze kunnen verifiëren. De inloggegevens hebben tijdstempels die door de controller zijn gegenereerd, waardoor relatieve vergelijking mogelijk is zonder toegang tot de lokale systeemklok van de host. 

Inloggegevens worden alleen aan hun eigenaren verstrekt en vervolgens naar peers verzonden die met andere knooppunten in het netwerk willen communiceren. Hierdoor kan het netwerk enorm groot worden zonder dat grote hoeveelheden inloggegevens op knooppunten in de cache hoeven te worden opgeslagen of voortdurend contact moeten maken met de netwerkcontroller.

ZeroTier-netwerken ondersteunen multicast-distributie via een eenvoudig publicatie-/abonneersysteem.

Link naar documentatie

Wanneer een knooppunt een multicast-uitzending voor een bepaalde distributiegroep wil ontvangen, maakt het het lidmaatschap van die groep bekend aan andere leden van het netwerk waarmee het communiceert en aan de netwerkcontroller. Wanneer een knooppunt een multicast wil verzenden, heeft het tegelijkertijd toegang tot zijn cache met recente publicaties en vraagt ​​het periodiek om aanvullende publicaties.

Een uitzending (Ethernet ff: ff: ff: ff: ff: ff) wordt behandeld als een multicastgroep waarop alle deelnemers zich abonneren. Het kan op netwerkniveau worden uitgeschakeld om het verkeer te verminderen als dit niet nodig is. 

ZeroTier emuleert een echte Ethernet-switch. Dit feit maakt het mogelijk om uit te voeren het combineren van de gecreëerde virtuele netwerken met andere Ethernet-netwerken (bekabeld LAN, WiFi, virtuele backplane, enz.) op datalinkniveau - met behulp van een gewone Ethernet-brug.

Om als brug te kunnen fungeren, moet de netwerkcontroller een host als zodanig aanwijzen. Dit schema is geïmplementeerd om veiligheidsredenen, omdat normale netwerkhosts geen verkeer mogen verzenden vanaf een andere bron dan hun MAC-adres. Knooppunten die als bruggen zijn aangewezen, gebruiken ook een speciale modus van het multicast-algoritme, dat agressiever en doelgerichter met hen communiceert tijdens groepsabonnementen en replicatie van al het uitzendverkeer en ARP-verzoeken. 

De switch heeft ook de mogelijkheid om openbare en ad-hocnetwerken te creëren, een QoS-mechanisme en een editor voor netwerkregels.

▍Knooppunt:

ZeroTier Eén is een service die draait op laptops, desktops, servers, virtuele machines en containers en die verbindingen biedt met een virtueel netwerk via een virtuele netwerkpoort, vergelijkbaar met een VPN-client. 

Zodra de service is geïnstalleerd en gestart, kunt u verbinding maken met virtuele netwerken met behulp van hun 16-cijferige adressen. Elk netwerk verschijnt als een virtuele netwerkpoort op het systeem, die zich net als een gewone Ethernet-poort gedraagt.

ZeroTier One is momenteel beschikbaar voor de volgende besturingssystemen en systemen.

Besturingssystemen:

  • Microsoft Windows - MSI-installatieprogramma x86/x64
  • MacOS - PKG-installatieprogramma
  • Apple iOS - App Winkel
  • Android — Speelwinkel
  • Linux - DEB/RPM
  • FreeBSD - FreeBSD-pakket

NAS:

  • Synology NAS
  • QNAP-NAS
  • WD MyCloud NAS

andere:

  • havenarbeider - docker-bestand
  • OpenWRT - gemeenschapshaven
  • App-insluiting - SDK (libzt)

Om al het bovenstaande samen te vatten, zou ik willen opmerken dat ZeroTier een uitstekend en snel hulpmiddel is voor het combineren van uw fysieke, virtuele of cloudbronnen in een gemeenschappelijk lokaal netwerk, met de mogelijkheid om het in VLAN's te verdelen en de afwezigheid van één enkel storingspunt. .

Dat is alles voor het theoretische gedeelte in de vorm van het eerste artikel over ZeroTier voor Habr - dat is waarschijnlijk alles! In het volgende artikel ben ik van plan om in de praktijk de creatie van een virtuele netwerkinfrastructuur op basis van ZeroTier te demonstreren, waarbij een VDS met een privé open source GUI-sjabloon als netwerkcontroller zal worden gebruikt. 

Beste lezers! Gebruikt u ZeroTier-technologie in uw projecten? Zo niet, welke tools gebruikt u om uw bronnen te netwerken?

Slimme Ethernet-switch voor de planeet Aarde

Bron: www.habr.com

Voeg een reactie