Smart Ethernet-switch til Planet Earth

Smart Ethernet-switch til Planet Earth
"Du kan skabe en løsning (løse et problem) på flere måder, men den dyreste og/eller populære metode er ikke altid den mest effektive!"

præambel

For omkring tre år siden, i færd med at udvikle en fjernmodel til gendannelse af katastrofedata, stødte jeg på en hindring, som ikke umiddelbart blev bemærket - manglen på information om nye originale løsninger til netværksvirtualisering i fællesskabskilder. 

Algoritmen for den udviklede model var planlagt som følger: 

  1. En fjernbruger, der kontaktede mig, hvis computer engang nægtede at starte, viser meddelelsen "systemdisk ikke fundet/ikke formateret", indlæser den ved hjælp af life USB. 
  2. Under opstartsprocessen opretter systemet automatisk forbindelse til et sikkert privat lokalt netværk, som udover sig selv indeholder administratorens arbejdsstation, i dette tilfælde en bærbar computer og en NAS-node. 
  3. Så forbinder jeg - enten for at genoplive diskpartitionerne, eller for at udtrække data derfra.

Til at begynde med implementerede jeg denne model ved hjælp af en VPN-server på en lokal router i et netværk under min kontrol, derefter på en lejet VDS. Men som det ofte sker og ifølge Chisholms første lov, hvis det regner, vil internetudbyderens netværk gå ned, så vil tvister mellem forretningsenheder få tjenesteudbyderen til at miste "energi"...

Derfor besluttede jeg mig for først at formulere de grundlæggende krav, som det nødvendige værktøj skal opfylde. Den første er decentralisering. For det andet, da jeg har flere sådanne livs-USB'er, har hver af dem et separat isoleret netværk. Nå, for det tredje, hurtig forbindelse til netværket af forskellige enheder og enkel styring af dem, herunder hvis min bærbare computer også bliver offer for ovennævnte lov.

Baseret på dette og efter at have brugt to og en halv måned på praktisk research af flere ikke særlig egnede muligheder, besluttede jeg på egen risiko og risiko at prøve et andet værktøj fra en opstart, der var ukendt for mig på det tidspunkt, kaldet ZeroTier. Hvilket jeg aldrig har fortrudt senere.

I løbet af disse nytårsferier, i et forsøg på at forstå, om situationen med indhold har ændret sig siden det mindeværdige øjeblik, gennemførte jeg en selektiv revision for tilgængeligheden af ​​artikler om dette emne ved at bruge Habr som kilde. For forespørgslen "ZeroTier" i søgeresultaterne er der kun tre artikler, der nævner det, og ikke en eneste med mindst en kort beskrivelse. Og det på trods af, at der blandt dem er en oversættelse af en artikel skrevet af grundlæggeren af ​​ZeroTier, Inc. selv. — Adam Ierymenko.

Resultaterne var skuffende og fik mig til at begynde at tale om ZeroTier mere detaljeret, hvilket reddede moderne "søgende" fra at skulle gå den samme rute, som jeg tog.

Så hvad er du?

Udvikleren placerer ZeroTier som en intelligent Ethernet-switch til planeten Jorden. 

"Det er en distribueret netværkshypervisor bygget oven på et kryptografisk sikkert globalt peer-to-peer (P2P) netværk. Et værktøj, der ligner en virksomheds SDN-switch, designet til at organisere virtuelle netværk over fysiske, både lokale og globale, med evnen til at forbinde næsten enhver applikation eller enhed."

Dette er mere en markedsføringsbeskrivelse, nu om de teknologiske funktioner.

▍Kerne: 

ZeroTier Network Hypervisor er en selvstændig netværksvirtualiseringsmotor, der emulerer et Ethernet-netværk, der ligner VXLAN, oven på et globalt krypteret peer-to-peer (P2P) netværk.

De anvendte protokoller i ZeroTier er originale, selvom de ligner VXLAN og IPSec i udseende og består af to konceptuelt adskilte, men tæt beslægtede lag: VL1 og VL2.

Link til dokumentation

▍VL1 er et grundlæggende peer-to-peer (P2P) transportlag, en slags "virtuelt kabel".

"Et globalt datacenter kræver et 'globalt skab' af kabler."

I konventionelle netværk refererer L1 (OSI Layer 1) til de faktiske kabler eller trådløse radioer, der bærer data, og de fysiske transceiverenhedschips, der modulerer og demodulerer dem. VL1 er et peer-to-peer (P2P) netværk, der gør det samme ved at bruge kryptering, autentificering og andre netværkstricks til at organisere virtuelle kabler efter behov.

Desuden gør den dette automatisk, hurtigt og uden involvering af brugeren, der lancerer en ny ZeroTier-node.

For at opnå dette er VL1 organiseret på samme måde som domænenavnssystemet. I hjertet af netværket er en gruppe af meget tilgængelige rodservere, hvis rolle ligner DNS-rodnavneserverens. I øjeblikket er de vigtigste (planetariske) rodservere under kontrol af udvikleren - ZeroTier, Inc. og leveres som en gratis service. 

Det er dog muligt at oprette brugerdefinerede rodservere (luns), der giver dig mulighed for at:

  • reducere afhængigheden af ​​ZeroTier, Inc. infrastruktur; Link til dokumentation
  • øge produktiviteten ved at minimere forsinkelser; 
  • fortsætte med at fungere som normalt, hvis internetforbindelsen afbrydes.

I første omgang lanceres noder uden direkte forbindelser til hinanden. 

Hver peer på VL1 har en unik 40-bit (10 hexadecimal) ZeroTier-adresse, som i modsætning til IP-adresser er en krypteret identifikator, der ikke indeholder nogen routinginformation. Denne adresse er beregnet ud fra den offentlige del af det offentlige/private nøglepar. En nodes adresse, offentlige nøgle og private nøgle danner sammen dens identitet.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Hvad angår kryptering, er dette en grund til en separat artikel.

Link til dokumentation

For at etablere kommunikation sender peers først pakker "op" i træet af rodservere, og da disse pakker rejser gennem netværket, initierer de tilfældig oprettelse af videregående kanaler undervejs. Træet forsøger konstant at "falde sammen af ​​sig selv" for at optimere sig selv til det rutekort, det gemmer.

Mekanismen til at etablere en peer-to-peer-forbindelse er som følger:

Smart Ethernet-switch til Planet Earth

  1. Node A ønsker at sende en pakke til Node B, men da den ikke kender den direkte sti, sender den den opstrøms til Node R (månen, brugerens rodserver).
  2. Hvis node R har en direkte forbindelse med node B, videresender den pakken dertil. Ellers sender den pakken opstrøms, inden den når planetrødderne. Planetrødderne kender til alle noder, så pakken vil til sidst nå node B, hvis den er online.
  3. Node R sender også en besked kaldet et "rendezvous" til node A, der indeholder hints om, hvordan den kan nå node B. I mellemtiden sender rodserveren, som videresender pakken til node B, et "rendezvous" for at informere den om, hvordan den kan nå node A.
  4. Node A og B modtager deres rendezvous-beskeder og forsøger at sende testmeddelelser til hinanden i et forsøg på at bryde eventuelle NAT- eller stateful firewalls, man støder på undervejs. Hvis dette virker, etableres en direkte forbindelse, og pakker går ikke længere frem og tilbage.

Hvis en direkte forbindelse ikke kan etableres, vil kommunikationen fortsætte gennem relæ, og direkte forbindelsesforsøg vil fortsætte, indtil et vellykket resultat er opnået. 

VL1 har også andre funktioner til etablering af direkte forbindelse, herunder LAN peer-opdagelse, portforudsigelse for gennemløb af symmetrisk IPv4 NAT og eksplicit portkortlægning ved hjælp af uPnP og/eller NAT-PMP, hvis det er tilgængeligt på det lokale fysiske LAN.

→ Link til dokumentation

▍VL2 er en VXLAN-lignende Ethernet-netværksvirtualiseringsprotokol med SDN-administrationsfunktioner. Velkendt kommunikationsmiljø for OS og applikationer...

I modsætning til VL1 kræver oprettelse af VL2-netværk (VLAN'er) og tilslutning af noder til dem, samt styring af dem, direkte deltagelse fra brugeren. Han kan gøre dette ved hjælp af en netværkscontroller. I bund og grund er det en almindelig ZeroTier-node, hvor controllerens funktioner styres på to måder: enten direkte, ved at ændre filer, eller, som udvikleren stærkt anbefaler, ved hjælp af en offentliggjort API. 

Denne metode til at administrere ZeroTier virtuelle netværk er ikke særlig bekvem for den gennemsnitlige person, så der er flere GUI'er:
 

  • En fra udvikleren ZeroTier, tilgængelig som en offentlig cloud SaaS-løsning med fire abonnementsplaner, inklusive gratis, men begrænset i antallet af administrerede enheder og supportniveau
  • Den anden er fra en uafhængig udvikler, noget forenklet i funktionalitet, men tilgængelig som en privat opensource-løsning til brug on-premise eller på cloud-ressourcer.

VL2 er implementeret oven på VL1 og transporteres af den. Det arver dog krypteringen og godkendelsen af ​​VL1-slutpunktet og bruger også dets asymmetriske nøgler til at signere og verificere legitimationsoplysninger. VL1 giver dig mulighed for at implementere VL2 uden at bekymre dig om den eksisterende fysiske netværkstopologi. Det vil sige, at problemer med forbindelse og routingeffektivitet er VL1-problemer. Det er vigtigt at forstå, at der ikke er nogen forbindelse mellem virtuelle VL2-netværk og VL1-stier. I lighed med VLAN-multipleksing i et kablet LAN, vil to noder, der deler flere netværksmedlemskaber, stadig kun have én VL1-sti (virtuel kabel) imellem sig.

Hvert VL2-netværk (VLAN) identificeres af en 64-bit (16 hexadecimal) ZeroTier-netværksadresse, som indeholder controllerens 40-bit ZeroTier-adresse og et 24-bit nummer, der identificerer netværket, der er oprettet af den controller.

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

Når en node tilslutter sig et netværk eller anmoder om en netværkskonfigurationsopdatering, sender den en netværkskonfigurationsanmodningsmeddelelse (via VL1) til netværkscontrolleren. Controlleren bruger derefter nodens VL1-adresse til at finde den på netværket og sende den de relevante certifikater, legitimationsoplysninger og konfigurationsoplysninger. Fra et VL2 virtuelle netværks synspunkt kan VL1 ZeroTier-adresser opfattes som portnumre på en enorm global virtuel switch.

Alle legitimationsoplysninger udstedt af netværkscontrollere til medlemsknudepunkter i et givet netværk er signeret med controllerens hemmelige nøgle, så alle netværksdeltagere kan verificere dem. Legitimationsoplysningerne har tidsstempler genereret af controlleren, hvilket muliggør relativ sammenligning uden at skulle have adgang til værtens lokale systemur. 

Legitimationsoplysninger udstedes kun til deres ejere og sendes derefter til peers, der ønsker at kommunikere med andre noder på netværket. Dette gør det muligt for netværket at skalere til enorme størrelser uden behov for at cache store mængder legitimationsoplysninger på noder eller konstant kontakte netværkscontrolleren.

ZeroTier-netværk understøtter multicast-distribution gennem et simpelt publicerings-/abonnementssystem.

Link til dokumentation

Når en knude ønsker at modtage en multicast-udsendelse for en bestemt distributionsgruppe, annoncerer den medlemskab af denne gruppe til andre medlemmer af netværket, den kommunikerer med, og til netværkscontrolleren. Når en node ønsker at sende en multicast, får den samtidig adgang til sin cache af seneste publikationer og anmoder periodisk om yderligere publikationer.

En udsendelse (Ethernet ff: ff: ff: ff: ff: ff) behandles som en multicast-gruppe, som alle deltagere abonnerer på. Det kan deaktiveres på netværksniveau for at reducere trafikken, hvis det ikke er nødvendigt. 

ZeroTier emulerer en ægte Ethernet-switch. Dette faktum giver os mulighed for at udføre at kombinere de skabte virtuelle netværk med andre Ethernet-netværk (kablet LAN, WiFi, virtuel backplane osv.) på datalink-niveau - ved hjælp af en almindelig Ethernet-bro.

For at fungere som en bro skal netværkscontrolleren udpege en vært som sådan. Denne ordning er implementeret af sikkerhedsmæssige årsager, da normale netværksværter ikke har tilladelse til at sende trafik fra en anden kilde end deres MAC-adresse. Noder, der er udpeget som broer, bruger også en speciel tilstand af multicast-algoritmen, som interagerer med dem mere aggressivt og målrettet under gruppeabonnementer og replikering af al broadcast-trafik og ARP-anmodninger. 

Switchen har også evnen til at skabe offentlige og ad-hoc netværk, en QoS-mekanisme og en netværksreglereditor.

▍Node:

ZeroTier One er en tjeneste, der kører på bærbare computere, desktops, servere, virtuelle maskiner og containere, der giver forbindelser til et virtuelt netværk gennem en virtuel netværksport, der ligner en VPN-klient. 

Når tjenesten er installeret og startet, kan du oprette forbindelse til virtuelle netværk ved hjælp af deres 16-cifrede adresser. Hvert netværk vises som en virtuel netværksport på systemet, der opfører sig ligesom en almindelig Ethernet-port.

ZeroTier One er i øjeblikket tilgængelig til følgende OS og systemer.

OS:

  • Microsoft Windows - MSI installationsprogram x86/x64
  • MacOS - PKG installatør
  • Apple iOS - App butik
  • Android - Legetøjsbutik
  • Linux - DEB/RPM
  • FreeBSD - FreeBSD-pakke

NAS:

  • Synology NAS
  • QNAP NAS
  • WD MyCloud NAS

andre:

  • Docker - docker-fil
  • OpenWrt - fælleshavn
  • App-indlejring - SDK (libzt)

For at opsummere alt ovenstående vil jeg bemærke, at ZeroTier er et fremragende og hurtigt værktøj til at kombinere dine fysiske, virtuelle eller cloud-ressourcer til et fælles lokalt netværk, med evnen til at opdele det i VLAN'er og fraværet af et enkelt fejlpunkt .

Det er det for den teoretiske del i formatet af den første artikel om ZeroTier for Habr - det er nok det hele! I den næste artikel planlægger jeg i praksis at demonstrere skabelsen af ​​en virtuel netværksinfrastruktur baseret på ZeroTier, hvor en VDS med en privat open source GUI-skabelon vil blive brugt som netværkscontroller. 

Kære læsere! Bruger du ZeroTier-teknologi i dine projekter? Hvis ikke, hvilke værktøjer bruger du til at netværke dine ressourcer?

Smart Ethernet-switch til Planet Earth

Kilde: www.habr.com

Tilføj en kommentar