Smart Ethernet-switch för Planet Earth

Smart Ethernet-switch för Planet Earth
"Du kan skapa en lösning (lösa ett problem) på flera sätt, men den dyraste och/eller populäraste metoden är inte alltid den mest effektiva!"

ingressen

För ungefär tre år sedan, i processen med att utveckla en fjärrmodell för återställning av katastrofdata, stötte jag på ett hinder som inte omedelbart märktes - bristen på information om nya ursprungliga lösningar för nätverksvirtualisering i community-källor. 

Algoritmen för den utvecklade modellen planerades enligt följande: 

  1. En fjärranvändare som kontaktade mig, vars dator en gång vägrade starta, visar meddelandet "systemdisken inte upptäckt/inte formaterad", laddar den med livs-USB. 
  2. Under uppstartsprocessen ansluter systemet automatiskt till ett säkert privat lokalt nätverk, som förutom sig självt innehåller administratörens arbetsstation, i detta fall en bärbar dator, och en NAS-nod. 
  3. Sedan ansluter jag - antingen för att återuppliva diskpartitionerna, eller för att extrahera data därifrån.

Till en början implementerade jag den här modellen med en VPN-server på en lokal router i ett nätverk under min kontroll, sedan på en hyrd VDS. Men, som ofta händer och enligt Chisholms första lag, om det regnar, kommer internetleverantörens nätverk att gå ner, då kommer tvister mellan affärsenheter att få tjänsteleverantören att förlora "energi"...

Därför bestämde jag mig för att först formulera de grundläggande kraven som det nödvändiga verktyget måste uppfylla. Den första är decentralisering. För det andra, med tanke på att jag har flera sådana livs-USB, har var och en av dem ett separat isolerat nätverk. Tja, för det tredje, snabb anslutning till nätverket av olika enheter och enkel hantering av dem, inklusive om min bärbara dator också faller offer för lagen som nämns ovan.

Baserat på detta och efter att ha spenderat två och en halv månad på praktisk forskning av flera inte särskilt lämpliga alternativ, bestämde jag mig, på egen risk och risk, för att prova ett annat verktyg från en för mig okänd startup vid den tiden som heter ZeroTier. Vilket jag aldrig ångrade senare.

Under dessa nyårshelger, för att försöka förstå om situationen med innehåll har förändrats sedan det minnesvärda ögonblicket, genomförde jag en selektiv granskning för tillgängligheten av artiklar om detta ämne, med Habr som källa. För frågan "ZeroTier" i sökresultaten finns det bara tre artiklar som nämner den, och inte en enda med åtminstone en kort beskrivning. Och detta trots att det bland dem finns en översättning av en artikel skriven av grundaren av ZeroTier, Inc. själv. — Adam Ierymenko.

Resultaten var en besvikelse och fick mig att börja prata om ZeroTier mer i detalj, vilket räddade moderna "sökare" från att behöva gå samma väg som jag tog.

Så vad är du?

Utvecklaren positionerar ZeroTier som en intelligent Ethernet-switch för planeten Jorden. 

"Det är en distribuerad nätverkshypervisor byggd ovanpå ett kryptografiskt säkert globalt peer-to-peer-nätverk (P2P). Ett verktyg som liknar en företags SDN-switch, designad för att organisera virtuella nätverk över fysiska, både lokala och globala, med möjligheten att ansluta nästan alla program eller enheter.”

Detta är mer en marknadsföringsbeskrivning, nu om de tekniska funktionerna.

▍Kärna: 

ZeroTier Network Hypervisor är en fristående nätverksvirtualiseringsmotor som emulerar ett Ethernet-nätverk, liknande VXLAN, ovanpå ett globalt krypterat peer-to-peer-nätverk (P2P).

Protokollen som används i ZeroTier är original, även om de liknar VXLAN och IPSec till utseendet och består av två begreppsmässigt separata, men närbesläktade lager: VL1 och VL2.

Länk till dokumentation

▍VL1 är ett grundläggande peer-to-peer (P2P) transportlager, ett slags "virtuell kabel".

"Ett globalt datacenter kräver en "global garderob" med kablar."

I konventionella nätverk hänvisar L1 (OSI Layer 1) till de faktiska kablarna eller trådlösa radioapparater som bär data och de fysiska sändtagarenhetens chips som modulerar och demodulerar den. VL1 är ett peer-to-peer-nätverk (P2P) som gör samma sak, med kryptering, autentisering och andra nätverksknep för att organisera virtuella kablar efter behov.

Dessutom gör den detta automatiskt, snabbt och utan inblandning av användaren som lanserar en ny ZeroTier-nod.

För att uppnå detta är VL1 organiserat på samma sätt som domännamnssystemet. I hjärtat av nätverket finns en grupp mycket tillgängliga rotservrar, vars roll liknar den för DNS-rotnamnservrar. För tillfället är de viktigaste (planetära) rotservrarna under kontroll av utvecklaren - ZeroTier, Inc. och tillhandahålls som en gratis tjänst. 

Det är dock möjligt att skapa anpassade rotservrar (luns) som låter dig:

  • minska beroendet av ZeroTier, Inc.s infrastruktur; Länk till dokumentation
  • öka produktiviteten genom att minimera förseningar; 
  • fortsätta att fungera som vanligt om internetanslutningen bryts.

Initialt startas noder utan direkta kopplingar till varandra. 

Varje peer på VL1 har en unik 40-bitars (10 hexadecimal) ZeroTier-adress, som till skillnad från IP-adresser är en krypterad identifierare som inte innehåller någon routinginformation. Denna adress beräknas från den offentliga delen av det offentliga/privata nyckelparet. En nods adress, offentliga nyckel och privata nyckel bildar tillsammans dess identitet.

Member ID: df56c5621c  
            |
            ZeroTier address of node

När det gäller kryptering är detta en anledning till en separat artikel.

Länk till dokumentation

För att upprätta kommunikation skickar kamrater först paket "upp" i rotservrarnas träd, och när dessa paket färdas genom nätverket initierar de slumpmässigt skapande av framåtkanaler längs vägen. Trädet försöker hela tiden att "kollapsa av sig själv" för att optimera sig själv för den ruttkarta det lagrar.

Mekanismen för att upprätta en peer-to-peer-anslutning är följande:

Smart Ethernet-switch för Planet Earth

  1. Nod A vill skicka ett paket till nod B, men eftersom den inte känner till den direkta sökvägen skickar den det uppströms till nod R (månen, användarens rotserver).
  2. Om nod R har en direkt förbindelse med nod B, vidarebefordrar den paketet dit. Annars skickar den paketet uppströms innan den når planetrötterna. Planetrötterna känner till alla noder, så paketet kommer så småningom att nå nod B om det är online.
  3. Nod R skickar också ett meddelande som kallas "rendezvous" till nod A, som innehåller tips om hur den kan nå nod B. Under tiden skickar rotservern, som vidarebefordrar paketet till nod B, ett "rendezvous" som informerar den om hur den kan nå nod A.
  4. Noderna A och B tar emot sina mötesmeddelanden och försöker skicka testmeddelanden till varandra i ett försök att bryta mot eventuella NAT eller tillståndsfulla brandväggar som påträffas längs vägen. Om detta fungerar upprättas en direkt anslutning och paket går inte längre fram och tillbaka.

Om en direkt anslutning inte kan upprättas kommer kommunikationen att fortsätta via relä, och direktanslutningsförsök kommer att fortsätta tills ett framgångsrikt resultat uppnås. 

VL1 har också andra funktioner för att etablera direkt anslutning, inklusive LAN-peer-upptäckt, portprediktion för korsning av symmetrisk IPv4 NAT och explicit portmappning med hjälp av uPnP och/eller NAT-PMP om tillgängligt på det lokala fysiska LAN:et.

→ Länk till dokumentation

▍VL2 är ett VXLAN-liknande Ethernet-nätverksvirtualiseringsprotokoll med SDN-hanteringsfunktioner. Bekant kommunikationsmiljö för OS och applikationer...

Till skillnad från VL1 kräver att skapa VL2-nätverk (VLAN) och ansluta noder till dem, såväl som att hantera dem, direkt deltagande från användaren. Han kan göra detta med hjälp av en nätverkskontroller. I huvudsak är det en vanlig ZeroTier-nod, där kontrollerns funktioner styrs på två sätt: antingen direkt, genom att ändra filer, eller, som utvecklaren starkt rekommenderar, med hjälp av ett publicerat API. 

Denna metod för att hantera ZeroTier virtuella nätverk är inte särskilt bekväm för den genomsnittliga personen, så det finns flera GUI:er:
 

  • En från utvecklaren ZeroTier, tillgänglig som en offentlig moln SaaS-lösning med fyra abonnemangsplaner, inklusive gratis, men begränsat i antal hanterade enheter och nivå av support
  • Den andra är från en oberoende utvecklare, något förenklad i funktionalitet, men tillgänglig som en privat öppen källkodslösning för användning på plats eller på molnresurser.

VL2 implementeras ovanpå VL1 och transporteras av den. Den ärver dock krypteringen och autentiseringen av VL1-slutpunkten och använder även dess asymmetriska nycklar för att signera och verifiera autentiseringsuppgifter. VL1 låter dig implementera VL2 utan att oroa dig för den befintliga fysiska nätverkstopologin. Det vill säga problem med anslutning och routingeffektivitet är VL1-problem. Det är viktigt att förstå att det inte finns någon koppling mellan virtuella VL2-nätverk och VL1-vägar. I likhet med VLAN-multiplexering i ett trådbundet LAN kommer två noder som delar flera nätverksmedlemskap fortfarande bara att ha en VL1-väg (virtuell kabel) mellan sig.

Varje VL2-nätverk (VLAN) identifieras av en 64-bitars (16 hexadecimal) ZeroTier-nätverksadress, som innehåller 40-bitars ZeroTier-adressen för styrenheten och ett 24-bitars nummer som identifierar nätverket som skapats av den styrenheten.

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

När en nod ansluter sig till ett nätverk eller begär en uppdatering av nätverkskonfigurationen, skickar den ett meddelande om begäran om nätverkskonfiguration (via VL1) till nätverksstyrenheten. Styrenheten använder sedan nodens VL1-adress för att hitta den i nätverket och skicka den lämpliga certifikat, autentiseringsuppgifter och konfigurationsinformation. Ur VL2 virtuella nätverks synvinkel kan VL1 ZeroTier-adresser ses som portnummer på en enorm global virtuell switch.

Alla referenser som utfärdas av nätverkskontrollanter till medlemsnoder i ett givet nätverk signeras med kontrollenhetens hemliga nyckel så att alla nätverksdeltagare kan verifiera dem. Autentiseringsuppgifterna har tidsstämplar som genereras av styrenheten, vilket möjliggör relativ jämförelse utan att behöva komma åt värdens lokala systemklocka. 

Inloggningsuppgifter utfärdas endast till deras ägare och skickas sedan till kamrater som vill kommunicera med andra noder i nätverket. Detta gör att nätverket kan skalas till enorma storlekar utan att behöva cachelagra stora mängder referenser på noder eller ständigt kontakta nätverkskontrollern.

ZeroTier-nätverk stöder multicast-distribution genom ett enkelt publicerings-/prenumerationssystem.

Länk till dokumentation

När en nod önskar ta emot en multicast-sändning för en viss distributionsgrupp, annonserar den medlemskap i den gruppen till andra medlemmar av nätverket den kommunicerar med och till nätverksstyrenheten. När en nod vill skicka en multicast, kommer den samtidigt åt sin cache med senaste publikationer och begär periodvis ytterligare publikationer.

En sändning (Ethernet ff: ff: ff: ff: ff: ff) behandlas som en multicast-grupp som alla deltagare abonnerar på. Den kan inaktiveras på nätverksnivå för att minska trafiken om den inte behövs. 

ZeroTier emulerar en riktig Ethernet-switch. Detta faktum tillåter oss att utföra att kombinera de skapade virtuella nätverken med andra Ethernet-nätverk (trådbundet LAN, WiFi, virtuellt bakplan, etc.) på datalänksnivå - med hjälp av en vanlig Ethernet-brygga.

För att fungera som en brygga måste nätverksstyrenheten utse en värd som sådan. Detta schema implementeras av säkerhetsskäl, eftersom normala nätverksvärdar inte tillåts skicka trafik från en annan källa än sin MAC-adress. Noder betecknade som broar använder också ett speciellt läge för multicast-algoritmen, som interagerar med dem mer aggressivt och målinriktat under gruppabonnemang och replikering av all broadcast-trafik och ARP-förfrågningar. 

Switchen har också förmågan att skapa publika och ad-hoc-nätverk, en QoS-mekanism och en nätverksreglerredigerare.

▍Nod:

ZeroTier One är en tjänst som körs på bärbara datorer, stationära datorer, servrar, virtuella maskiner och behållare som tillhandahåller anslutningar till ett virtuellt nätverk via en virtuell nätverksport, liknande en VPN-klient. 

När tjänsten är installerad och startad kan du ansluta till virtuella nätverk med deras 16-siffriga adresser. Varje nätverk visas som en virtuell nätverksport på systemet, som fungerar precis som en vanlig Ethernet-port.

ZeroTier One är för närvarande tillgänglig för följande operativsystem och system.

OS:

  • Microsoft Windows - MSI installationsprogram x86/x64
  • MacOS - PKG-installatör
  • Apple iOS - App Store
  • Android — Play Butik
  • Linux - DEB/RPM
  • FreeBSD - FreeBSD-paket

NAS:

  • Synology NAS
  • QNAP NAS
  • WD MyCloud NAS

andra:

  • Hamnarbetare - docker-fil
  • OpenWRT - Gemensam hamn
  • Appinbäddning - SDK (libzt)

För att sammanfatta allt ovan, vill jag notera att ZeroTier är ett utmärkt och snabbt verktyg för att kombinera dina fysiska, virtuella eller molnresurser till ett gemensamt lokalt nätverk, med möjligheten att dela upp det i VLAN och frånvaron av en enda felpunkt .

Det var allt för den teoretiska delen i formatet av den första artikeln om ZeroTier för Habr - det är nog allt! I nästa artikel planerar jag att i praktiken demonstrera skapandet av en virtuell nätverksinfrastruktur baserad på ZeroTier, där en VDS med en privat GUI-mall med öppen källkod kommer att användas som nätverkskontroller. 

Kära läsare! Använder du ZeroTier-teknik i dina projekt? Om inte, vilka verktyg använder du för att nätverka dina resurser?

Smart Ethernet-switch för Planet Earth

Källa: will.com

Lägg en kommentar