Išmanusis eterneto jungiklis, skirtas planetai Žemei

Išmanusis eterneto jungiklis, skirtas planetai Žemei
„Galite sukurti sprendimą (išspręsti problemą) keliais būdais, tačiau brangiausias ir (arba) populiariausias metodas ne visada yra pats efektyviausias!

Preambulė

Maždaug prieš trejus metus, kurdamas nuotolinį duomenų atkūrimo nelaimių atveju modelį, susidūriau su viena kliūtimi, kuri nebuvo iš karto pastebėta – informacijos apie naujus originalius tinklo virtualizavimo sprendimus stoka bendruomenės šaltiniuose. 

Sukurto modelio algoritmas buvo suplanuotas taip: 

  1. Su manimi susisiekęs nuotolinis vartotojas, kurio kompiuteris kadaise atsisakė paleisti, rodomas pranešimas „sistemos diskas neaptiktas / nesuformatuotas“, įkelia jį naudodamas „life USB“. 
  2. Įkrovos proceso metu sistema automatiškai prisijungia prie saugaus privataus vietinio tinklo, kuriame be jo yra administratoriaus darbo vieta, šiuo atveju nešiojamasis kompiuteris, ir NAS mazgas. 
  3. Tada jungiuosi – arba disko skaidiniams atgaivinti, arba iš ten išgauti duomenis.

Iš pradžių šį modelį įdiegiau naudodamas VPN serverį vietiniame maršrutizatoriuje mano valdomame tinkle, o vėliau – nuomojamame VDS. Tačiau, kaip dažnai nutinka ir pagal pirmąjį Chisholmo dėsnį, jei lyja, interneto tiekėjo tinklas nutrūks, o ginčai tarp verslo subjektų privers paslaugų teikėją prarasti „energiją“...

Todėl nusprendžiau pirmiausia suformuluoti pagrindinius reikalavimus, kuriuos turi atitikti reikalinga priemonė. Pirmasis yra decentralizavimas. Antra, atsižvelgiant į tai, kad turiu keletą tokių gyvybės USB, kiekvienas iš jų turi atskirą izoliuotą tinklą. Na, trečia, greitas prisijungimas prie įvairių įrenginių tinklo ir paprastas jų valdymas, įskaitant tuo atveju, jei mano nešiojamasis kompiuteris taip pat taptų aukščiau minėto įstatymo auka.

Remdamasis tuo ir praleidęs du su puse mėnesio praktiniam kelių nelabai tinkamų variantų tyrinėjimui, rizikuodamas ir rizikuodamas nusprendžiau išbandyti kitą, tuo metu man nežinomo startuolio įrankį pavadinimu ZeroTier. Dėl ko vėliau niekada nesigailėjau.

Per šias Naujųjų metų šventes, bandydamas suprasti, ar situacija su turiniu pasikeitė nuo tos įsimintinos akimirkos, atlikau atrankinį straipsnių šia tema prieinamumo auditą, naudodamas Habrą kaip šaltinį. Pagal užklausą „ZeroTier“ paieškos rezultatuose yra tik trys straipsniai, kuriuose ji minima, o ne vienas su bent trumpu aprašymu. Ir tai nepaisant to, kad tarp jų yra ir paties „ZeroTier, Inc.“ įkūrėjo parašyto straipsnio vertimas. — Adomas Ierymenko.

Rezultatai nuvylė ir paskatino pradėti kalbėti apie „ZeroTier“ išsamiau, išgelbėdama šiuolaikinius „ieškotojus“ nuo to, kad nereikėtų eiti tuo pačiu keliu, kuriuo pasirinkau ir aš.

Taigi kas tu toks?

Kūrėjas pozicionuoja „ZeroTier“ kaip išmanųjį eterneto jungiklį Žemės planetai. 

„Tai paskirstytojo tinklo hipervizorius, sukurtas ant kriptografiškai saugaus pasaulinio lygiaverčio (P2P) tinklo. Įrankis, panašus į įmonės SDN jungiklį, skirtas organizuoti virtualius tinklus per fizinius, tiek vietinius, tiek pasaulinius, su galimybe prijungti beveik bet kurią programą ar įrenginį.

Tai daugiau rinkodaros aprašymas, dabar apie technologines ypatybes.

▍ Branduolys: 

„ZeroTier Network Hypervisor“ yra atskiras tinklo virtualizacijos variklis, kuris imituoja Ethernet tinklą, panašų į VXLAN, pasaulinio užšifruoto lygiaverčio (P2P) tinklo viršuje.

ZeroTier naudojami protokolai yra originalūs, nors savo išvaizda panašūs į VXLAN ir IPSec ir susideda iš dviejų konceptualiai atskirų, bet glaudžiai susijusių sluoksnių: VL1 ir VL2.

Nuoroda į dokumentaciją

▍VL1 yra pagrindinis peer-to-peer (P2P) perdavimo sluoksnis, savotiškas „virtualus kabelis“.

„Pasauliniam duomenų centrui reikalinga „pasaulinė kabelių spinta“.

Įprastuose tinkluose L1 (OSI Layer 1) reiškia tikrus kabelius arba belaidžius radijo imtuvus, kuriais perduodami duomenys, ir fizinius siųstuvo-imtuvo įrenginio lustus, kurie juos moduliuoja ir demoduliuoja. VL1 yra lygiavertis (P2P) tinklas, kuris atlieka tą patį, naudodamas šifravimą, autentifikavimą ir kitus tinklo triukus, kad prireikus sutvarkytų virtualius kabelius.

Be to, tai daroma automatiškai, greitai ir nedalyvaujant vartotojui, paleidžiančiam naują ZeroTier mazgą.

Kad tai būtų pasiekta, VL1 organizuojamas panašiai kaip domenų vardų sistema. Tinklo centre yra labai prieinamų šakninių serverių grupė, kurios vaidmuo yra panašus į DNS šakninių vardų serverių. Šiuo metu pagrindinius (planetinius) šakninius serverius valdo kūrėjas - ZeroTier, Inc. ir teikiamos kaip nemokama paslauga. 

Tačiau galima sukurti pasirinktinius šakninius serverius (luns), kurie leidžia:

  • sumažinti priklausomybę nuo ZeroTier, Inc. infrastruktūros; Nuoroda į dokumentaciją
  • padidinti našumą sumažinant vėlavimus; 
  • ir toliau dirbti kaip įprasta, jei nutrūksta interneto ryšys.

Iš pradžių mazgai paleidžiami be tiesioginių jungčių vienas su kitu. 

Kiekvienas VL1 lygiavertis partneris turi unikalų 40 bitų (10 šešioliktainių) ZeroTier adresą, kuris, skirtingai nei IP adresai, yra užšifruotas identifikatorius, kuriame nėra maršruto informacijos. Šis adresas apskaičiuojamas iš viešosios / privataus raktų poros viešosios dalies. Mazgo adresas, viešasis raktas ir privatusis raktas kartu sudaro jo tapatybę.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Kalbant apie šifravimą, tai yra atskiro straipsnio priežastis.

Nuoroda į dokumentaciją

Norėdami užmegzti ryšį, bendraamžiai pirmiausia siunčia paketus „aukštyn“ šakninių serverių medyje, o kai šie paketai keliauja per tinklą, jie inicijuoja atsitiktinį tiesioginių kanalų kūrimą. Medis nuolat bando „sugriūti“, siekdamas optimizuoti saugomą maršruto žemėlapį.

Lygiavertio ryšio užmezgimo mechanizmas yra toks:

Išmanusis eterneto jungiklis, skirtas planetai Žemei

  1. Mazgas A nori nusiųsti paketą į mazgą B, bet kadangi jis nežino tiesioginio kelio, jis siunčia jį į mazgą R (mėnulis, vartotojo šakninis serveris).
  2. Jei mazgas R turi tiesioginį ryšį su mazgu B, jis persiunčia paketą ten. Priešingu atveju jis siunčia paketą prieš pasiekiant planetų šaknis. Planetos šaknys žino apie visus mazgus, todėl paketas galiausiai pasieks mazgą B, jei jis bus prisijungęs.
  3. Mazgas R taip pat siunčia pranešimą, vadinamą "rendezvous" mazgui A, kuriame yra užuominų, kaip jis gali pasiekti mazgą B. Tuo tarpu šakninis serveris, kuris persiunčia paketą mazgui B, siunčia "rendezvous", informuodamas jį apie tai, kaip jis gali pasiekti. pasiekti mazgą A.
  4. Mazgai A ir B gauna savo pasimatymų pranešimus ir bando siųsti bandomuosius pranešimus vienas kitam, bandydami pažeisti bet kokias kelyje aptiktas NAT arba būseną nustatančias užkardas. Jei tai veikia, užmezgamas tiesioginis ryšys ir paketai nebekeliauja pirmyn ir atgal.

Jei tiesioginio ryšio užmegzti nepavyksta, ryšys tęsis per relę, o tiesioginio ryšio bandymai tęsis tol, kol bus pasiektas sėkmingas rezultatas. 

VL1 taip pat turi kitų funkcijų, skirtų tiesioginiam ryšiui užmegzti, įskaitant LAN tarpusavio aptikimą, prievadų numatymą, kad būtų galima pereiti simetrišką IPv4 NAT, ir aiškų prievadų susiejimą naudojant uPnP ir (arba) NAT-PMP, jei yra vietiniame fiziniame LAN.

→ Nuoroda į dokumentaciją

▍VL2 yra į VXLAN panašus Ethernet tinklo virtualizacijos protokolas su SDN valdymo funkcijomis. Pažįstama OS ir programų komunikacijos aplinka...

Skirtingai nei VL1, kuriant VL2 tinklus (VLAN) ir prijungiant prie jų mazgus, taip pat juos valdant, reikalingas tiesioginis vartotojo dalyvavimas. Jis gali tai padaryti naudodamas tinklo valdiklį. Iš esmės tai yra įprastas ZeroTier mazgas, kuriame valdiklio funkcijos valdomos dviem būdais: arba tiesiogiai, keičiant failus, arba, kaip primygtinai rekomenduoja kūrėjas, naudojant paskelbtą API. 

Šis „ZeroTier“ virtualių tinklų valdymo būdas nėra labai patogus paprastam žmogui, todėl yra keletas GUI:
 

  • Vienas iš kūrėjo ZeroTier, prieinamas kaip viešasis debesies SaaS sprendimas su keturiais prenumeratos planais, įskaitant nemokamus, bet ribotą valdomų įrenginių skaičių ir palaikymo lygį.
  • Antrasis yra nepriklausomo kūrėjo, šiek tiek supaprastinto funkcionalumo, bet prieinamas kaip privatus atvirojo kodo sprendimas, skirtas naudoti vietoje arba debesies ištekliais.

VL2 yra įdiegtas ant VL1 ir transportuojamas juo. Tačiau jis paveldi VL1 galutinio taško šifravimą ir autentifikavimą, taip pat naudoja asimetrinius raktus, kad pasirašytų ir patikrintų kredencialus. VL1 leidžia įdiegti VL2 nesijaudinant dėl ​​esamos fizinio tinklo topologijos. Tai reiškia, kad ryšio ir maršruto parinkimo efektyvumo problemos yra VL1 problemos. Svarbu suprasti, kad tarp VL2 virtualių tinklų ir VL1 kelių nėra ryšio. Panašiai kaip VLAN tankinimas laidiniame LAN, du mazgai, kurie dalijasi keliomis tinklo narėmis, vis tiek turės tik vieną VL1 (virtualaus kabelio) kelią.

Kiekvienas VL2 tinklas (VLAN) identifikuojamas pagal 64 bitų (16 šešioliktainių) ZeroTier tinklo adresą, kuriame yra valdiklio 40 bitų ZeroTier adresas ir 24 bitų numeris, identifikuojantis to valdiklio sukurtą tinklą.

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

Kai mazgas prisijungia prie tinklo arba prašo tinklo konfigūracijos atnaujinimo, jis tinklo valdikliui siunčia tinklo konfigūracijos užklausos pranešimą (per VL1). Tada valdiklis naudoja mazgo VL1 adresą, kad surastų jį tinkle ir nusiųstų atitinkamus sertifikatus, kredencialus ir konfigūracijos informaciją. VL2 virtualių tinklų požiūriu, VL1 ZeroTier adresai gali būti laikomi didžiulio pasaulinio virtualaus komutatoriaus prievado numeriais.

Visi kredencialai, kuriuos tinklo valdikliai išduoda tam tikro tinklo nariams, yra pasirašyti su slaptu valdiklio raktu, kad visi tinklo dalyviai galėtų juos patikrinti. Kredencialai turi valdiklio sugeneruotas laiko žymas, leidžiančias palyginti santykinai neprisiekiant prie pagrindinio kompiuterio vietinės sistemos laikrodžio. 

Kredencialai išduodami tik jų savininkams, o tada siunčiami bendraamžiams, norintiems bendrauti su kitais tinklo mazgais. Tai leidžia tinklui išsiplėsti iki didžiulių dydžių, nereikia kaupti didelio kiekio kredencialų mazguose arba nuolat susisiekti su tinklo valdikliu.

„ZeroTier“ tinklai palaiko daugialypės terpės platinimą naudojant paprastą publikavimo / prenumeratos sistemą.

Nuoroda į dokumentaciją

Kai mazgas nori gauti tam tikros paskirstymo grupės daugialypės terpės transliaciją, jis skelbia narystę toje grupėje kitiems tinklo, su kuriuo bendrauja, nariams ir tinklo valdikliui. Kai mazgas nori siųsti daugialypės terpės transliaciją, jis tuo pačiu metu pasiekia savo naujausių publikacijų talpyklą ir periodiškai prašo papildomų publikacijų.

Transliacija (Ethernet ff: ff: ff: ff: ff: ff) yra traktuojama kaip daugialypės transliacijos grupe, kurią prenumeruoja visi dalyviai. Jį galima išjungti tinklo lygiu, kad būtų sumažintas srautas, jei jo nereikia. 

ZeroTier imituoja tikrą Ethernet jungiklį. Šis faktas leidžia mums atlikti sujungiant sukurtus virtualius tinklus su kitais Ethernet tinklais (laidiniu LAN, WiFi, virtualia backplane ir kt.) duomenų perdavimo lygmeniu – naudojant įprastą Ethernet tiltą.

Kad veiktų kaip tiltas, tinklo valdiklis turi paskirti pagrindinį kompiuterį kaip tokį. Ši schema įdiegta saugumo sumetimais, nes įprastiems tinklo pagrindiniams kompiuteriams neleidžiama siųsti srauto iš kito šaltinio nei jų MAC adresas. Mazgai, priskirti tiltams, taip pat naudoja specialų daugialypės terpės perdavimo algoritmo režimą, kuris sąveikauja su jais agresyviau ir tikslingiau grupinių prenumeratų ir viso transliavimo srauto bei ARP užklausų replikacijos metu. 

Jungiklis taip pat turi galimybę kurti viešuosius ir ad hoc tinklus, QoS mechanizmą ir tinklo taisyklių redaktorių.

▍ Mazgas:

„ZeroTier One“. yra paslauga, veikianti nešiojamuosiuose kompiuteriuose, staliniuose kompiuteriuose, serveriuose, virtualiose mašinose ir konteineriuose, suteikianti ryšį su virtualiuoju tinklu per virtualaus tinklo prievadą, panašiai kaip VPN kliente. 

Įdiegę ir paleidę paslaugą galite prisijungti prie virtualių tinklų naudodami jų 16 skaitmenų adresus. Kiekvienas tinklas sistemoje rodomas kaip virtualus tinklo prievadas, kuris veikia taip pat, kaip įprastas Ethernet prievadas.

Šiuo metu „ZeroTier One“ galima naudoti šioms OS ir sistemoms.

Operacinės sistemos:

  • "Microsoft Windows" - MSI diegimo programa x86/x64
  • MacOS - PKG montuotojas
  • "Apple" "iOS" - Programėlių parduotuvė
  • Android - Zaidimu parduotuve
  • Linux - DEB/RPM
  • FreeBSD - FreeBSD paketas

NAS:

  • Synology NAS
  • QNAP NAS
  • WD MyCloud NAS

Kiti:

  • dokininkas - docker failas
  • OpenWRT - bendruomenės uostas
  • Programos įterpimas – SDK (libzt)

Apibendrinant visa tai, kas išdėstyta aukščiau, norėčiau pažymėti, kad „ZeroTier“ yra puikus ir greitas įrankis, leidžiantis sujungti jūsų fizinius, virtualius ar debesies išteklius į bendrą vietinį tinklą, su galimybe suskirstyti jį į VLAN ir nesant vieno gedimo taško. .

Štai tiek teorinei daliai pirmojo straipsnio apie ZeroTier for Habr formatu – turbūt ir viskas! Kitame straipsnyje planuoju praktiškai pademonstruoti virtualaus tinklo infrastruktūros kūrimą ZeroTier pagrindu, kur VDS su privačiu atvirojo kodo GUI šablonu bus naudojamas kaip tinklo valdiklis. 

Mieli skaitytojai! Ar savo projektuose naudojate ZeroTier technologiją? Jei ne, kokias priemones naudojate savo ištekliams tinkinti?

Išmanusis eterneto jungiklis, skirtas planetai Žemei

Šaltinis: www.habr.com

Добавить комментарий