Smart Ethernet Switch para sa Planet Earth

Smart Ethernet Switch para sa Planet Earth
"Maaari kang lumikha ng isang solusyon (malutas ang isang problema) sa maraming paraan, ngunit ang pinakamahal at/o sikat na paraan ay hindi palaging ang pinaka-epektibo!"

Paunang salita

Mga tatlong taon na ang nakalilipas, sa proseso ng pagbuo ng isang malayuang modelo para sa pagbawi ng data ng kalamidad, nakatagpo ako ng isang balakid na hindi agad napansin - ang kakulangan ng impormasyon tungkol sa mga bagong orihinal na solusyon para sa virtualization ng network sa mga mapagkukunan ng komunidad. 

Ang algorithm para sa binuo na modelo ay binalak tulad ng sumusunod: 

  1. Ang isang malayong user na nakipag-ugnayan sa akin, na ang computer ay minsang tumanggi na mag-boot, na nagpapakita ng mensaheng "system disk not detected/not formatted," nilo-load ito gamit ang life USB. 
  2. Sa panahon ng proseso ng boot, awtomatikong kumokonekta ang system sa isang secure na pribadong lokal na network, na bilang karagdagan sa sarili nito ay naglalaman ng workstation ng administrator, sa kasong ito ay isang laptop, at isang NAS node. 
  3. Pagkatapos ay kumonekta ako - alinman sa resuscitate ang mga partisyon ng disk, o upang kunin ang data mula doon.

Sa una, ipinatupad ko ang modelong ito gamit ang isang VPN server sa isang lokal na router sa isang network na nasa ilalim ng aking kontrol, pagkatapos ay sa isang nirentahang VDS. Ngunit, gaya ng madalas na nangyayari at ayon sa unang batas ni Chisholm, kung umuulan, bababa ang network ng Internet provider, kung gayon ang mga hindi pagkakaunawaan sa pagitan ng mga entity ng negosyo ay magiging sanhi ng pagkawala ng "enerhiya" ng service provider...

Samakatuwid, nagpasya akong bumalangkas muna ng mga pangunahing kinakailangan na dapat matugunan ng kinakailangang tool. Ang una ay ang desentralisasyon. Pangalawa, dahil mayroon akong ilan sa mga USB na ito sa buhay, bawat isa sa kanila ay may hiwalay na nakahiwalay na network. Well, pangatlo, mabilis na koneksyon sa network ng iba't ibang mga device at simpleng pamamahala ng mga ito, kasama na kung sakaling mabiktima din ang aking laptop sa batas na nabanggit sa itaas.

Batay dito at sa paggugol ng dalawa at kalahating buwan sa praktikal na pagsasaliksik ng ilang hindi masyadong angkop na mga opsyon, ako, sa sarili kong panganib at panganib, ay nagpasya na subukan ang isa pang tool mula sa isang startup na hindi ko alam sa oras na iyon na tinatawag na ZeroTier. Na hindi ko pinagsisihan sa huli.

Sa panahon ng mga pista opisyal ng Bagong Taon, sinusubukang maunawaan kung ang sitwasyon na may nilalaman ay nagbago mula noong hindi malilimutang sandali, nagsagawa ako ng isang piling pag-audit para sa pagkakaroon ng mga artikulo sa paksang ito, gamit ang Habr bilang isang mapagkukunan. Para sa query na "ZeroTier" sa mga resulta ng paghahanap mayroon lamang tatlong artikulo na nagbabanggit dito, at walang isa na may kahit isang maikling paglalarawan. At ito sa kabila ng katotohanan na kabilang sa kanila ay mayroong pagsasalin ng isang artikulo na isinulat mismo ng tagapagtatag ng ZeroTier, Inc. β€” Adam Ierymenko.

Ang mga resulta ay nakakabigo at nag-udyok sa akin na simulan ang pag-uusap tungkol sa ZeroTier nang mas detalyado, na nagligtas sa mga modernong "naghahanap" mula sa kinakailangang pumunta sa parehong ruta na aking tinahak.

Ano ka?

Ipinoposisyon ng developer ang ZeroTier bilang isang intelligent na Ethernet switch para sa planetang Earth. 

β€œIto ay isang distributed network hypervisor na binuo sa ibabaw ng isang cryptographically secure na global peer-to-peer (P2P) network. Isang tool na katulad ng isang corporate SDN switch, na idinisenyo upang ayusin ang mga virtual network sa mga pisikal na network, parehong lokal at global, na may kakayahang kumonekta sa halos anumang application o device.

Ito ay higit pa sa isang paglalarawan sa marketing, ngayon ay tungkol sa mga teknolohikal na tampok.

▍Kernel: 

Ang ZeroTier Network Hypervisor ay isang stand-alone na network virtualization engine na tumutulad sa isang Ethernet network, katulad ng VXLAN, sa ibabaw ng isang pandaigdigang naka-encrypt na peer-to-peer (P2P) network.

Ang mga protocol na ginamit sa ZeroTier ay orihinal, bagama't katulad ng hitsura sa VXLAN at IPSec at binubuo ng dalawang magkahiwalay na konsepto, ngunit malapit na nauugnay na mga layer: VL1 at VL2.

β†’ Link sa dokumentasyon

Ang ▍VL1 ay isang pangunahing layer ng transportasyon ng peer-to-peer (P2P), isang uri ng "virtual cable".

"Ang isang pandaigdigang data center ay nangangailangan ng isang 'global closet' ng paglalagay ng kable."

Sa mga kumbensyonal na network, ang L1 (OSI Layer 1) ay tumutukoy sa mga aktwal na cable o wireless radio na nagdadala ng data at ang pisikal na transceiver device chips na nagmo-modulate at nagde-demodulate nito. Ang VL1 ay isang peer-to-peer (P2P) network na gumagawa ng parehong bagay, gamit ang encryption, authentication, at iba pang mga trick sa networking upang ayusin ang mga virtual na cable kung kinakailangan.

Bukod dito, awtomatiko itong ginagawa, mabilis at walang paglahok ng user na naglulunsad ng bagong ZeroTier node.

Upang makamit ito, ang VL1 ay nakaayos nang katulad ng sistema ng domain name. Sa gitna ng network ay isang pangkat ng mga available na root server, na ang tungkulin ay katulad ng sa DNS root name server. Sa ngayon, ang pangunahing (planetary) root server ay nasa ilalim ng kontrol ng developer - ZeroTier, Inc. at ibinibigay bilang isang libreng serbisyo. 

Gayunpaman, posibleng lumikha ng mga custom na root server (luns) na nagbibigay-daan sa iyong:

  • bawasan ang pag-asa sa imprastraktura ng ZeroTier, Inc.; Link sa dokumentasyon
  • dagdagan ang pagiging produktibo sa pamamagitan ng pagliit ng mga pagkaantala; 
  • patuloy na gumana bilang normal kung nawala ang koneksyon sa Internet.

Sa una, ang mga node ay inilunsad nang walang direktang koneksyon sa bawat isa. 

Ang bawat peer sa VL1 ay may natatanging 40-bit (10 hexadecimal) na ZeroTier address, na, hindi katulad ng mga IP address, ay isang naka-encrypt na identifier na walang impormasyon sa pagruruta. Ang address na ito ay kinakalkula mula sa pampublikong bahagi ng pampubliko/pribadong key pair. Ang address ng node, pampublikong susi, at pribadong susi ay magkasamang bumubuo sa pagkakakilanlan nito.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Tulad ng para sa pag-encrypt, ito ay isang dahilan para sa isang hiwalay na artikulo.

β†’ Link sa dokumentasyon

Upang magtatag ng komunikasyon, ang mga kapantay ay unang nagpapadala ng mga packet "pataas" sa puno ng mga server ng ugat, at habang ang mga packet na ito ay naglalakbay sa network, sinisimulan nila ang random na paglikha ng mga forward channel sa daan. Ang puno ay patuloy na sinusubukang "mag-collapse sa sarili nitong" upang ma-optimize ang sarili nito para sa ruta ng mapa na iniimbak nito.

Ang mekanismo para sa pagtatatag ng isang peer-to-peer na koneksyon ay ang mga sumusunod:

Smart Ethernet Switch para sa Planet Earth

  1. Nais ng Node A na magpadala ng isang packet sa Node B, ngunit dahil hindi nito alam ang direktang landas, ipinapadala ito ng upstream sa Node R (moon, ang root server ng user).
  2. Kung ang node R ay may direktang koneksyon sa node B, ipinapasa nito ang packet doon. Kung hindi, ipapadala nito ang packet upstream bago maabot ang planetary roots. Alam ng mga planetary root ang tungkol sa lahat ng node, kaya ang packet ay makakarating sa node B kung online ito.
  3. Nagpapadala rin ang Node R ng mensaheng tinatawag na "rendezvous" sa node A, na naglalaman ng mga pahiwatig kung paano ito makakarating sa node B. Samantala, ang root server, na nagpapasa ng packet sa node B, ay nagpapadala ng "rendezvous" na nagpapaalam dito tungkol sa kung paano ito magagawa. maabot ang node A.
  4. Natatanggap ng mga node A at B ang kanilang mga mensaheng pinagtagpuan at sinusubukang magpadala ng mga pansubok na mensahe sa isa't isa sa pagtatangkang labagin ang anumang NAT o stateful na mga firewall na nakatagpo sa daan. Kung ito ay gumagana, pagkatapos ay isang direktang koneksyon ay itinatag, at ang mga packet ay hindi na pabalik-balik.

Kung ang isang direktang koneksyon ay hindi maitatag, ang komunikasyon ay magpapatuloy sa pamamagitan ng relay, at ang direktang koneksyon ay magpapatuloy hanggang sa isang matagumpay na resulta ay makamit. 

Ang VL1 ay mayroon ding iba pang feature para sa pagtatatag ng direktang koneksyon, kabilang ang LAN peer discovery, port prediction para sa traversal ng simetriko IPv4 NAT, at tahasang port mapping gamit ang uPnP at/o NAT-PMP kung available sa lokal na pisikal na LAN.

β†’ Link sa dokumentasyon

Ang ▍VL2 ay isang VXLAN-tulad ng Ethernet network virtualization protocol na may mga function sa pamamahala ng SDN. Pamilyar na kapaligiran ng komunikasyon para sa OS at mga application...

Hindi tulad ng VL1, ang paglikha ng mga VL2 network (VLAN) at pagkonekta ng mga node sa kanila, pati na rin ang pamamahala sa mga ito, ay nangangailangan ng direktang partisipasyon mula sa user. Magagawa niya ito gamit ang isang network controller. Sa esensya, ito ay isang regular na ZeroTier node, kung saan ang mga function ng controller ay pinamamahalaan sa dalawang paraan: alinman sa direkta, sa pamamagitan ng pagpapalit ng mga file, o, gaya ng masidhing inirerekomenda ng developer, gamit ang isang na-publish na API. 

Ang pamamaraang ito ng pamamahala ng mga virtual network ng ZeroTier ay hindi masyadong maginhawa para sa karaniwang tao, kaya mayroong ilang mga GUI:
 

  • Isa mula sa developer na ZeroTier, available bilang pampublikong solusyon sa cloud SaaS na may apat na plano sa subscription, kabilang ang libre, ngunit limitado sa bilang ng mga pinamamahalaang device at antas ng suporta
  • Ang pangalawa ay mula sa isang independiyenteng developer, medyo pinasimple sa functionality, ngunit magagamit bilang isang pribadong opensource na solusyon para sa paggamit sa nasasakupan o sa cloud resources.

Ang VL2 ay ipinatupad sa ibabaw ng VL1 at dinadala nito. Gayunpaman, minana nito ang pag-encrypt at pagpapatunay ng endpoint ng VL1, at ginagamit din ang mga asymmetric key nito upang mag-sign at mag-verify ng mga kredensyal. Binibigyang-daan ka ng VL1 na ipatupad ang VL2 nang hindi nababahala tungkol sa umiiral na topology ng pisikal na network. Iyon ay, ang mga problema sa koneksyon at kahusayan sa pagruruta ay mga problema sa VL1. Mahalagang maunawaan na walang koneksyon sa pagitan ng VL2 virtual network at VL1 path. Katulad ng VLAN multiplexing sa isang wired LAN, ang dalawang node na nagbabahagi ng maramihang network membership ay magkakaroon pa rin ng isang VL1 (virtual cable) path sa pagitan nila.

Ang bawat VL2 network (VLAN) ay kinikilala ng isang 64-bit (16 hexadecimal) na ZeroTier network address, na naglalaman ng 40-bit ZeroTier address ng controller at isang 24-bit na numero na nagpapakilala sa network na ginawa ng controller na iyon.

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

Kapag sumali ang isang node sa isang network o humiling ng pag-update ng configuration ng network, nagpapadala ito ng mensahe ng kahilingan sa configuration ng network (sa pamamagitan ng VL1) sa controller ng network. Pagkatapos ay ginagamit ng controller ang VL1 address ng node upang mahanap ito sa network at ipadala dito ang naaangkop na mga sertipiko, kredensyal, at impormasyon sa pagsasaayos. Mula sa pananaw ng mga virtual network ng VL2, ang mga address ng VL1 ZeroTier ay maaaring ituring bilang mga numero ng port sa isang malaking pandaigdigang virtual switch.

Ang lahat ng mga kredensyal na ibinigay ng mga controller ng network sa mga node ng miyembro ng isang partikular na network ay nilagdaan gamit ang sikretong key ng controller upang ma-verify ng lahat ng kalahok sa network ang mga ito. Ang mga kredensyal ay may mga timestamp na nabuo ng controller, na nagpapahintulot sa kamag-anak na paghahambing nang hindi kinakailangang i-access ang lokal na orasan ng system ng host. 

Ang mga kredensyal ay ibinibigay lamang sa kanilang mga may-ari at pagkatapos ay ipinadala sa mga kapantay na gustong makipag-ugnayan sa iba pang mga node sa network. Ito ay nagbibigay-daan sa network na mag-scale sa napakalaking laki nang hindi kinakailangang mag-cache ng malalaking halaga ng mga kredensyal sa mga node o patuloy na makipag-ugnayan sa network controller.

Sinusuportahan ng mga network ng ZeroTier ang multicast distribution sa pamamagitan ng isang simpleng sistema ng pag-publish/subscribe.

β†’ Link sa dokumentasyon

Kapag ang isang node ay nagnanais na makatanggap ng isang multicast na broadcast para sa isang partikular na grupo ng pamamahagi, ito ay nag-aanunsyo ng pagiging miyembro sa grupong iyon sa iba pang mga miyembro ng network kung saan ito nakikipag-usap at sa network controller. Kapag nais ng isang node na magpadala ng multicast, sabay-sabay nitong ina-access ang cache ng mga kamakailang publikasyon at pana-panahong humihiling ng mga karagdagang publikasyon.

Ang isang broadcast (Ethernet ff: ff: ff: ff: ff: ff) ay itinuturing bilang isang multicast na grupo kung saan naka-subscribe ang lahat ng kalahok. Maaari itong i-disable sa antas ng network upang mabawasan ang trapiko kung hindi ito kinakailangan. 

ZeroTier emulates isang tunay na Ethernet switch. Ang katotohanang ito ay nagpapahintulot sa amin na isagawa pagsasama-sama ng mga nilikhang virtual network sa iba pang Ethernet network (wired LAN, WiFi, virtual backplane, atbp.) sa antas ng data link - gamit ang isang regular na Ethernet bridge.

Upang kumilos bilang isang tulay, ang network controller ay dapat magtalaga ng isang host bilang tulad. Ang scheme na ito ay ipinatupad para sa mga kadahilanang pangseguridad, dahil ang mga normal na network host ay hindi pinapayagang magpadala ng trapiko mula sa isang pinagmulan maliban sa kanilang MAC address. Gumagamit din ang mga node na itinalaga bilang mga tulay ng isang espesyal na mode ng multicast algorithm, na nakikipag-ugnayan sa kanila nang mas agresibo at naka-target sa panahon ng mga subscription ng grupo at pagkopya ng lahat ng trapiko sa broadcast at mga kahilingan sa ARP. 

Ang switch ay mayroon ding kakayahang lumikha ng mga pampubliko at ad-hoc na network, isang mekanismo ng QoS at isang editor ng mga panuntunan sa network.

▍Node:

ZeroTier One ay isang serbisyong tumatakbo sa mga laptop, desktop, server, virtual machine at container na nagbibigay ng mga koneksyon sa isang virtual network sa pamamagitan ng virtual network port, katulad ng isang VPN client. 

Kapag na-install at nagsimula na ang serbisyo, maaari kang kumonekta sa mga virtual network gamit ang kanilang 16-digit na mga address. Ang bawat network ay lilitaw bilang isang virtual network port sa system, na kumikilos tulad ng isang regular na Ethernet port.

Ang ZeroTier One ay kasalukuyang magagamit para sa mga sumusunod na OS at system.

Mga Operating System:

  • Microsoft Windows - MSI installer x86/x64
  • MacOS - PKG installer
  • Apple iOS - App Store
  • Android β€” Play Store
  • Linux - DEB/RPM
  • FreeBSD - LibrengBSD package

NAS:

  • Synology NAS
  • QNAP NAS
  • WD MyCloud NAS

Π”Ρ€ΡƒΠ³ΠΈΠ΅:

  • Manggagawa sa pantalan - docker file
  • OpenWRT - daungan ng komunidad
  • Pag-embed ng app - SDK (libzt)

Upang ibuod ang lahat ng nasa itaas, mapapansin ko na ang ZeroTier ay isang mahusay at mabilis na tool para sa pagsasama-sama ng iyong pisikal, virtual o cloud resources sa isang karaniwang lokal na network, na may kakayahang hatiin ito sa mga VLAN at ang kawalan ng isang punto ng pagkabigo .

Iyon lang para sa teoretikal na bahagi sa format ng unang artikulo tungkol sa ZeroTier para sa Habr - iyon lang marahil! Sa susunod na artikulo, plano kong ipakita sa pagsasanay ang paglikha ng isang virtual na imprastraktura ng network batay sa ZeroTier, kung saan ang isang VDS na may pribadong open source na template ng GUI ay gagamitin bilang isang network controller. 

Minamahal na mambabasa! Gumagamit ka ba ng teknolohiyang ZeroTier sa iyong mga proyekto? Kung hindi, anong mga tool ang ginagamit mo upang i-network ang iyong mga mapagkukunan?

Smart Ethernet Switch para sa Planet Earth

Pinagmulan: www.habr.com

Magdagdag ng komento