Smart Ethernet-svitsj for Planet Earth

Smart Ethernet-svitsj for Planet Earth
"Du kan lage en løsning (løse et problem) på flere måter, men den dyreste og/eller populære metoden er ikke alltid den mest effektive!"

innledning

For omtrent tre år siden, i prosessen med å utvikle en ekstern modell for gjenoppretting av katastrofedata, møtte jeg en hindring som ikke umiddelbart ble lagt merke til - mangelen på informasjon om nye originale løsninger for nettverksvirtualisering i fellesskapskilder. 

Algoritmen for den utviklede modellen ble planlagt som følger: 

  1. En ekstern bruker som kontaktet meg, hvis datamaskin en gang nektet å starte opp, og som viser meldingen "systemdisk ikke oppdaget/ikke formatert", laster den ved bruk av livs-USB. 
  2. Under oppstartsprosessen kobles systemet automatisk til et sikkert privat lokalt nettverk, som i tillegg til seg selv inneholder administratorens arbeidsstasjon, i dette tilfellet en bærbar PC, og en NAS-node. 
  3. Deretter kobler jeg til - enten for å gjenopplive diskpartisjonene, eller for å trekke ut data derfra.

Til å begynne med implementerte jeg denne modellen ved å bruke en VPN-server på en lokal ruter i et nettverk under min kontroll, deretter på en leid VDS. Men som ofte skjer og i henhold til Chisholms første lov, hvis det regner, vil internettleverandørens nettverk gå ned, så vil tvister mellom forretningsenheter føre til at tjenesteleverandøren mister "energi" ...

Derfor bestemte jeg meg for først å formulere de grunnleggende kravene som det nødvendige verktøyet skal oppfylle. Den første er desentralisering. For det andre, gitt at jeg har flere av disse livs-USB-ene, har hver av dem et separat isolert nettverk. Vel, for det tredje, rask tilkobling til nettverket av ulike enheter og enkel administrasjon av dem, inkludert i tilfelle den bærbare datamaskinen min også blir offer for loven nevnt ovenfor.

Basert på dette og etter å ha brukt to og en halv måned på praktisk forskning på flere lite egnede alternativer, bestemte jeg meg på egen risiko og risiko for å prøve et annet verktøy fra en oppstart ukjent for meg på den tiden kalt ZeroTier. Noe jeg aldri angret på senere.

I løpet av disse nyttårsferiene, for å prøve å forstå om situasjonen med innhold har endret seg siden det minneverdige øyeblikket, gjennomførte jeg en selektiv revisjon for tilgjengeligheten av artikler om dette emnet, og brukte Habr som kilde. For søket "ZeroTier" i søkeresultatene er det bare tre artikler som nevner det, og ikke en eneste med minst en kort beskrivelse. Og dette til tross for at det blant dem er en oversettelse av en artikkel skrevet av grunnleggeren av ZeroTier, Inc. selv. — Adam Ierymenko.

Resultatene var skuffende og fikk meg til å begynne å snakke om ZeroTier mer detaljert, og reddet moderne "søkere" fra å måtte gå den samme ruten som jeg tok.

Så hva er du?

Utvikleren posisjonerer ZeroTier som en intelligent Ethernet-svitsj for planeten Jorden. 

"Det er en distribuert nettverkshypervisor bygget på toppen av et kryptografisk sikkert globalt peer-to-peer (P2P) nettverk. Et verktøy som ligner på en bedrifts SDN-svitsj, designet for å organisere virtuelle nettverk over fysiske, både lokale og globale, med muligheten til å koble til nesten hvilken som helst applikasjon eller enhet."

Dette er mer en markedsføringsbeskrivelse, nå om de teknologiske funksjonene.

▍Kjerne: 

ZeroTier Network Hypervisor er en frittstående nettverksvirtualiseringsmotor som emulerer et Ethernet-nettverk, lik VXLAN, på toppen av et globalt kryptert peer-to-peer (P2P) nettverk.

Protokollene som brukes i ZeroTier er originale, selv om de ligner VXLAN og IPSec i utseende og består av to konseptuelt separate, men nært beslektede lag: VL1 og VL2.

Link til dokumentasjon

▍VL1 er et grunnleggende peer-to-peer (P2P) transportlag, en slags "virtuell kabel".

"Et globalt datasenter krever et 'globalt skap' med kabler."

I konvensjonelle nettverk refererer L1 (OSI Layer 1) til de faktiske kablene eller trådløse radioene som bærer data og de fysiske sender/mottakerenhetens brikker som modulerer og demodulerer dem. VL1 er et peer-to-peer (P2P) nettverk som gjør det samme, ved å bruke kryptering, autentisering og andre nettverkstriks for å organisere virtuelle kabler etter behov.

Dessuten gjør den dette automatisk, raskt og uten involvering av brukeren som lanserer en ny ZeroTier-node.

For å oppnå dette er VL1 organisert på samme måte som domenenavnsystemet. I hjertet av nettverket er en gruppe svært tilgjengelige rotservere, hvis rolle ligner på DNS-rotnavneservere. For øyeblikket er de viktigste (planetariske) rotserverne under kontroll av utvikleren - ZeroTier, Inc. og leveres som en gratis tjeneste. 

Det er imidlertid mulig å lage tilpassede rotservere (luns) som lar deg:

  • redusere avhengigheten av ZeroTier, Inc.-infrastruktur; Link til dokumentasjon
  • øke produktiviteten ved å minimere forsinkelser; 
  • fortsett å fungere som normalt hvis Internett-tilkoblingen er brutt.

I utgangspunktet lanseres noder uten direkte forbindelser til hverandre. 

Hver peer på VL1 har en unik 40-biters (10 heksadesimal) ZeroTier-adresse, som, i motsetning til IP-adresser, er en kryptert identifikator som ikke inneholder rutinginformasjon. Denne adressen er beregnet fra den offentlige delen av det offentlige/private nøkkelparet. En nodes adresse, offentlige nøkkel og private nøkkel danner sammen dens identitet.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Når det gjelder kryptering, er dette en grunn til en egen artikkel.

Link til dokumentasjon

For å etablere kommunikasjon, sender jevnaldrende først pakker "opp" i treet til rotservere, og når disse pakkene reiser gjennom nettverket, starter de tilfeldig opprettelse av videregående kanaler underveis. Treet prøver hele tiden å "kollapse av seg selv" for å optimalisere seg for rutekartet det lagrer.

Mekanismen for å etablere en peer-to-peer-forbindelse er som følger:

Smart Ethernet-svitsj for Planet Earth

  1. Node A ønsker å sende en pakke til Node B, men siden den ikke kjenner den direkte banen, sender den den oppstrøms til Node R (månen, brukerens rotserver).
  2. Hvis node R har en direkte forbindelse med node B, videresender den pakken dit. Ellers sender den pakken oppstrøms før den når planetarøttene. Planetrøttene vet om alle noder, så pakken vil til slutt nå node B hvis den er online.
  3. Node R sender også en melding kalt "rendezvous" til node A, som inneholder hint om hvordan den kan nå node B. I mellomtiden sender rotserveren, som videresender pakken til node B, en "rendezvous" som informerer den om hvordan den kan nå node A.
  4. Node A og B mottar møtemeldinger og forsøker å sende testmeldinger til hverandre i et forsøk på å bryte eventuelle NAT- eller tilstandsfulle brannmurer underveis. Hvis dette fungerer, opprettes en direkte forbindelse, og pakker går ikke lenger frem og tilbake.

Hvis en direkte tilkobling ikke kan opprettes, vil kommunikasjonen fortsette gjennom relé, og direkte tilkoblingsforsøk vil fortsette til et vellykket resultat er oppnådd. 

VL1 har også andre funksjoner for å etablere direkte tilkobling, inkludert LAN peer-oppdagelse, portprediksjon for kryssing av symmetrisk IPv4 NAT, og eksplisitt portkartlegging ved bruk av uPnP og/eller NAT-PMP hvis tilgjengelig på det lokale fysiske LAN.

→ Link til dokumentasjon

▍VL2 er en VXLAN-lignende Ethernet-nettverksvirtualiseringsprotokoll med SDN-administrasjonsfunksjoner. Kjent kommunikasjonsmiljø for OS og applikasjoner...

I motsetning til VL1, krever det direkte deltakelse fra brukeren å opprette VL2-nettverk (VLAN) og koble noder til dem, samt administrere dem. Han kan gjøre dette ved hjelp av en nettverkskontroller. I hovedsak er det en vanlig ZeroTier-node, der kontrollerfunksjonene styres på to måter: enten direkte, ved å endre filer, eller, som utvikleren anbefaler sterkt, ved å bruke en publisert API. 

Denne metoden for å administrere ZeroTier virtuelle nettverk er ikke veldig praktisk for den gjennomsnittlige personen, så det er flere GUIer:
 

  • En fra utvikleren ZeroTier, tilgjengelig som en offentlig sky SaaS-løsning med fire abonnementsplaner, inkludert gratis, men begrenset i antall administrerte enheter og støttenivå
  • Den andre er fra en uavhengig utvikler, noe forenklet i funksjonalitet, men tilgjengelig som en privat åpen kildekode-løsning for bruk på stedet eller på skyressurser.

VL2 er implementert på toppen av VL1 og transporteres av den. Den arver imidlertid krypteringen og autentiseringen til VL1-endepunktet, og bruker også de asymmetriske nøklene til å signere og bekrefte legitimasjon. VL1 lar deg implementere VL2 uten å bekymre deg for den eksisterende fysiske nettverkstopologien. Det vil si at problemer med tilkobling og rutingeffektivitet er VL1-problemer. Det er viktig å forstå at det ikke er noen forbindelse mellom virtuelle VL2-nettverk og VL1-baner. I likhet med VLAN-multipleksing i et kablet LAN, vil to noder som deler flere nettverksmedlemskap fortsatt bare ha én VL1-bane (virtuell kabel) mellom seg.

Hvert VL2-nettverk (VLAN) identifiseres av en 64-biters (16 heksadesimal) ZeroTier-nettverksadresse, som inneholder 40-biters ZeroTier-adressen til kontrolleren og et 24-bits nummer som identifiserer nettverket opprettet av den kontrolleren.

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

Når en node blir med i et nettverk eller ber om en nettverkskonfigurasjonsoppdatering, sender den en melding om nettverkskonfigurasjon (via VL1) til nettverkskontrolleren. Kontrolleren bruker deretter nodens VL1-adresse for å finne den på nettverket og sende den passende sertifikater, legitimasjon og konfigurasjonsinformasjon. Fra synspunktet til virtuelle VL2-nettverk kan VL1 ZeroTier-adresser betraktes som portnumre på en enorm global virtuell svitsj.

All legitimasjon utstedt av nettverkskontrollere til medlemsnoder i et gitt nettverk er signert med kontrollerens hemmelige nøkkel slik at alle nettverksdeltakere kan bekrefte dem. Påloggingsinformasjonen har tidsstempler generert av kontrolleren, som tillater relativ sammenligning uten å måtte få tilgang til vertens lokale systemklokke. 

Legitimasjon utstedes kun til eierne og sendes deretter til jevnaldrende som ønsker å kommunisere med andre noder på nettverket. Dette gjør at nettverket kan skaleres til enorme størrelser uten behov for å bufre store mengder legitimasjon på noder eller konstant kontakte nettverkskontrolleren.

ZeroTier-nettverk støtter multicast-distribusjon gjennom et enkelt publiserings-/abonnementssystem.

Link til dokumentasjon

Når en node ønsker å motta en multicast-kringkasting for en bestemt distribusjonsgruppe, annonserer den medlemskap i den gruppen til andre medlemmer av nettverket den kommuniserer med og til nettverkskontrolleren. Når en node ønsker å sende en multicast, får den samtidig tilgang til hurtigbufferen for nylige publikasjoner og ber periodisk om ytterligere publikasjoner.

En kringkasting (Ethernet ff: ff: ff: ff: ff: ff) behandles som en multicast-gruppe som alle deltakere abonnerer på. Den kan deaktiveres på nettverksnivå for å redusere trafikken hvis den ikke er nødvendig. 

ZeroTier emulerer en ekte Ethernet-svitsj. Dette faktum tillater oss å gjennomføre å kombinere de opprettede virtuelle nettverkene med andre Ethernet-nettverk (kablet LAN, WiFi, virtuelt bakplan, etc.) på datalinknivå - ved å bruke en vanlig Ethernet-bro.

For å fungere som en bro, må nettverkskontrolleren utpeke en vert som sådan. Denne ordningen er implementert av sikkerhetsgrunner, siden vanlige nettverksverter ikke har lov til å sende trafikk fra en annen kilde enn deres MAC-adresse. Noder utpekt som broer bruker også en spesiell modus for multicast-algoritmen, som samhandler med dem mer aggressivt og målrettet under gruppeabonnement og replikering av all kringkastingstrafikk og ARP-forespørsler. 

Svitsjen har også muligheten til å lage offentlige og ad-hoc-nettverk, en QoS-mekanisme og en nettverksreglerredigerer.

▍Node:

ZeroTier One er en tjeneste som kjører på bærbare datamaskiner, stasjonære datamaskiner, servere, virtuelle maskiner og containere som gir tilkoblinger til et virtuelt nettverk gjennom en virtuell nettverksport, lik en VPN-klient. 

Når tjenesten er installert og startet, kan du koble til virtuelle nettverk ved å bruke deres 16-sifrede adresser. Hvert nettverk vises som en virtuell nettverksport på systemet, som oppfører seg akkurat som en vanlig Ethernet-port.

ZeroTier One er for øyeblikket tilgjengelig for følgende operativsystemer og systemer.

OS:

  • Microsoft Windows - MSI installasjonsprogram x86/x64
  • MacOS - PKG installatør
  • Apple iOS - App Store
  • Android — Play Butikk
  • Linux - DEB/RPM
  • FreeBSD - FreeBSD-pakke

NAS:

  • Synology NAS
  • QNAP NAS
  • WD MyCloud NAS

annet:

  • Docker - docker-fil
  • OpenWRT - felleshavn
  • App-innbygging - SDK (libzt)

For å oppsummere alt ovenfor, vil jeg merke meg at ZeroTier er et utmerket og raskt verktøy for å kombinere dine fysiske, virtuelle eller skyressurser til et felles lokalt nettverk, med muligheten til å dele det inn i VLAN og fravær av et enkelt feilpunkt .

Det var alt for den teoretiske delen i formatet til den første artikkelen om ZeroTier for Habr - det er sannsynligvis alt! I neste artikkel planlegger jeg i praksis å demonstrere etableringen av en virtuell nettverksinfrastruktur basert på ZeroTier, hvor en VDS med en privat åpen kildekode GUI-mal skal brukes som nettverkskontroller. 

Kjære lesere! Bruker du ZeroTier-teknologi i prosjektene dine? Hvis ikke, hvilke verktøy bruker du for å koble ressursene dine i nettverk?

Smart Ethernet-svitsj for Planet Earth

Kilde: www.habr.com

Legg til en kommentar