Інтэлектуальны Ethernet-камутатар для планеты Зямля

Інтэлектуальны Ethernet-камутатар для планеты Зямля
"Стварыць рашэнне (вырашыць праблему) можна некалькімі спосабамі, але, не заўсёды самы дарагі ці / і папулярны спосаб - самы эфектыўны!"

прэамбула

Гады тры таму, у працэсе распрацоўкі дыстанцыйнай мадэлі аварыйнага аднаўлення дадзеных, я сутыкнуўся з адной, незаўважанай адразу, перашкодай - недахопам інфармацыі аб новых арыгінальных рашэннях для віртуалізацыі сетак у кам'юніці-крыніцах. 

Алгарытм распрацоўванай мадэлі планаваўся наступны: 

  1. Які звярнуўся да мяне выдалены карыстач, у якога кампутар аднойчы адмовіўся загружацца, выдаўшы паведамленне «сістэмны дыск не выяўлены/не адфарматаваны», загружае яго з дапамогай life USB. 
  2. Сістэма падчас загрузкі аўтаматычна падлучаецца да абароненай прыватнай лакальнай сеткі, у якой апроч яе самой знаходзяцца працоўнае месца адміністратара, у дадзеным выпадку наўтбук, і NAS-вузел. 
  3. Далей падлучаюся я - або для рэанімацыі частак дыска, або для выцягвання адтуль дадзеных.

Першапачаткова гэтую мадэль я рэалізаваў з дапамогай VPN-сервера на лакальным маршрутызатары ў падкантрольнай мне сетцы, потым на які арандуецца VDS. Але, як часта гэта бывае і паводле першага закону Чызхолма, то дождж пройдзе - у інтэрнэт-правайдэра сетка "ляжа", то спрэчкі гаспадарчых суб'ектаў - у сэрвіс-правайдэра "энергія" знікне…

Таму, я вырашыў спачатку сфармаваць асноўныя патрабаванні, якім павінен адпавядаць неабходную прыладу. Першае - дэцэнтралізацыя. Другое - улічваючы, што такіх life USB у мяне некалькі, то для кожнага з іх - асобная ізаляваная сетка. Ну і трэцяе - хуткае падлучэнне да сеткі розных прылад і простае кіраванне імі, у тым ліку і на выпадак, калі ноўт мой таксама ўпадзе ахвярай закона, згаданага вышэй.

Зыходзячы з гэтага і выдаткаваўшы два з паловай месяцы на практычныя даследаванні некалькіх не вельмі падыходных варыянтаў, я, на свой страх і рызыку, вырашыў паспрабаваць яшчэ адзін інструмент ад невядомага мне тады стартапа пад назвай – ZeroTier. Аб чым пасля ні разу не пашкадаваў.

На гэтых навагодніх вакацыях, намагаючыся зразумець, ці змянілася сітуацыя з кантэнтам з таго памятнага моманту, я правёў выбарачны аўдыт на наяўнасць артыкулаў па дадзенай тэме, узяўшы за крыніцу - Хабр. Па запыце «ZeroTier» у пошукавай выдачы якога ўсяго тры артыкулы з яго згадваннем, і ніводнага, хаця б з кароткім, але апісаннем. І гэта нягледзячы на ​​тое, што сярод іх ёсць пераклад артыкула, які напісаў сам заснавальнік ZeroTier, Inc. - Adam Ierymenko.

Атрыманыя вынікі расчаравалі і заахвоцілі мяне пачаць расказваць пра ZeroTier падрабязней, пазбавіўшы сучасных «шукальнікаў» ад неабходнасці ісці тым жа маршрутам, што прайшоў і я.

Дык што ж ты такое?

Распрацоўнік пазіцыянуе ZeroTier – як інтэлектуальны Ethernet-камутатар для планеты Зямля. 

«Гэта размеркаваны сеткавы гіпервізор, створаны на аснове крыптаграфічна абароненай глабальнай аднарангавай (P2P) сеткі. Падобная карпаратыўнаму камутатару SDN прылада, прызначаны для арганізацыі віртуальных сетак па-над фізічнымі, як лакальных, так і глабальных, c магчымасцю падлучэння практычна любога прыкладання або прылады.»

Гэта больш маркетынгавае апісанне, зараз аб тэхналагічных асаблівасцях.

▍Ядро: 

Сеткавы гіпервізор ZeroTier — аўтаномны механізм віртуалізацыі сеткі, які эмулюе сетку Ethernet, аналагічна VXLAN, па-над глабальнай шыфраванай аднарангавай (P2P) сеткі.

Пратаколы выкарыстоўваюцца ў ZeroTier арыгінальныя, хоць з выгляду і падобныя да VXLAN і IPSec і складаюцца з двух канцэптуальна асобных, але цесна звязаных узроўняў: VL1 і VL2.

Спасылка на дакументацыю

▍VL1 - гэта базавы аднарангавы (P2P) транспартны ўзровень, у сваім родзе - «віртуальны кабель».

"Для глабальнага цэнтра апрацоўкі дадзеных патрабуецца "глабальная шафа" з кабелямі."

У звычайных сетках L1 (узровень 1 па OSI) ставіцца да фактычных кабеляў ці бесправадных радыёканалаў, па якіх перадаюцца дадзеныя, і фізічным чыпам прылад прыёму-перадачы, якія мадулююць і дэмадулююць іх. VL1 – гэта аднарангавая (P2P) сетка, якая робіць тое ж самае, выкарыстоўваючы шыфраванне, аўтэнтыфікацыю і іншыя сеткавыя хітрасці для арганізацыі віртуальных кабеляў па меры неабходнасці.

Прычым робіць гэта аўтаматычна, хутка і без уцягвання карыстальніка які запускае новы вузел ZeroTier.

Для дасягнення гэтага VL1 арганізаваны аналагічна сістэме даменных імёнаў. У аснове сеткі ляжыць група высокадаступных каранёвых сервераў, роля якіх аналагічная ролі сервераў каранёвых імёнаў DNS. На дадзены момант асноўныя (планетарныя) каранёвыя серверы знаходзяцца па кіраваннем распрацоўніка – ZeroTier, Inc. і прадастаўляюцца як бясплатная паслуга. 

Аднак, існуе магчымасць стварэння карыстацкіх каранёвых сервераў (месяц), якія дазваляюць:

  • зменшыць залежнасць ад інфраструктуры ZeroTier, Inc.; Спасылка на дакументацыю
  • павысіць прадукцыйнасці за кошт мінімізацыі затрымак; 
  • працягваць працаваць у звычайным рэжыме ў выпадку страты інтэрнет-злучэння.

Першапачаткова вузлы запускаюцца без прамых сувязяў сябар з сябрам. 

Кожны аднарангавы вузел на VL1 мае ўнікальны 40-бітны (10 шаснаццатковых лічбаў) адрас ZeroTier, якія ў адрозненне ад IP-адрасоў з'яўляецца зашыфраваным ідэнтыфікатарам, не ўтрымоўвальным дадзеных аб маршрутах. Гэты адрас вылічаецца з адкрытай часткі пары адкрыты / закрыты ключ. Адрас вузла, адкрыты ключ і закрыты ключ разам утвараюць яго ідэнтычнасць.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Што ж тычыцца шыфравання – гэта нагода для асобнага артыкула.

Спасылка на дакументацыю

Для ўсталявання сувязі аднарангавыя вузлы спачатку пасылаюць пакеты "уверх" па дрэве каранёвых сервераў, і па меры праходжання гэтых пакетаў па сетцы яны ініцыююць выпадковае стварэнне прамых каналаў на гэтым шляху. Дрэва ўвесь час спрабуе "рушыць само", каб аптымізаваць сябе пад схему маршрутаў, якую захоўвае.

Механізм усталёўкі аднарангавага злучэння наступны:

Інтэлектуальны Ethernet-камутатар для планеты Зямля

  1. Вузел A жадае адправіць пакет вузлу B, але паколькі ён не ведае прамога шляху, ён пасылае яго ва ўзыходзячым кірунку да вузла R (месяц, карыстацкі каранёвы сервер).
  2. Калі вузел R мае прамую сувязь з вузлом B, ён перасылае туды пакет. У адваротным выпадку ён адпраўляе пакет ва ўзыходзячым кірунку да дасягнення планетарных каранёў.Планетарныя карані ведаюць пра ўсе вузлы, так што ў канчатковым выніку пакет дасягне вузла B, калі той знаходзіцца анлайн.
  3. Вузел R таксама пасылае паведамленне, званае «рандэву» вузлу A, утрымоўвальнае падказкі аб тым, як ён можа дасягнуць вузла B. Тым часам каранёвы сервер, які перасылае пакет вузлу B, пасылае «рандэву», інфармуючы яго аб тым, як ён можа дасягнуць вузла A.
  4. Вузлы A і B атрымліваюць свае паведамленні "рандэву" і спрабуюць пасылаць тэставыя паведамленні адзін аднаму, спрабуючы прабіць "брэшы" ў NAT або брандмаўэрах з кантролем стану, якія сустракаюцца на шляху. Калі гэта спрацоўвае, тое ўсталёўваецца прамое злучэнне, і пакеты больш не ідуць "агародамі".

Калі прамое злучэнне ўсталяваць не атрымоўваецца, сувязь будзе працягвацца праз рэтрансляцыю, а спробы прамога злучэння будуць працягвацца пакуль не будзе дасягнуты дадатны вынік. 

VL1 таксама мае іншыя функцыі для ўсталявання прамога злучэння, уключаючы выяўленне аднарангавых вузлоў LAN, прагназаванне партоў для праходжання сіметрычных IPv4 NAT і відавочнае адлюстраванне партоў з выкарыстаннем uPnP і/ці NAT-PMP, калі яны даступныя ў лакальнай фізічнай LAN.

→ Спасылка на дакументацыю

▍VL2 - VXLAN-падобны пратакол віртуалізацыі Ethernet-сеткі з функцыямі кіравання SDN. Знаёмае асяроддзе сувязі для АС і прыкладанняў…

У адрозненні ад VL1, стварэнне сетак VL2 (VLAN'аў) і падлучэнне да іх вузлоў, а таксама кіраванні імі, патрабуе ад карыстача непасрэднага ўдзелу. Ажыццяўляць гэта ён можа з дапамогай сеткавага кантролера. У сутнасці – звычайнага вузла ZeroTier, дзе кіраванне функцыямі кантролера ажыццяўляецца з двума спосабамі: альбо напроста, зменай файлаў, альбо, як настойліва рэкамендуе распрацоўнік, з дапамогай апублікаванага API. 

Дадзены спосаб кіравання віртуальнымі сеткамі ZeroTier не вельмі зручны для простага абывацеля, таму існуюць некалькі GUI:
 

  • Адзін ад распрацоўніка ZeroTier, даступнага ў выглядзе публічнага хмарнага рашэння, які прадстаўляецца па мадэлі SaaS, з чатырма планамі падпіскі, у тым ліку бясплатным, але абмежаваным па колькасці кіраваных прылад і ўзроўню падтрымкі
  • Другі - ад незалежнага распрацоўніка, некалькі спрошчанага па функцыянале, але даступнага ў якасці прыватнага opensource рашэння, для выкарыстання on-premise або на хмарных рэсурсах.

Узровень VL2 рэалізаваны па-над VL1 і транспартуецца ім. Пры гэтым ён атрымлівае ў спадчыну шыфраванне і аўтэнтыфікацыю канчатковага пункта ўзроўню VL1, а таксама выкарыстоўвае яго асіметрычныя ключы для подпісу і праверкі уліковых дадзеных. Узровень VL1 дазваляе рэалізоўваць VL2, зусім не турбуючыся аб існай тапалогіі фізічнай сеткі. Гэта значыць, праблемы з падключэннем і эфектыўнасцю маршрутызацыі з'яўляюцца задачамі ўзроўню VL1. Важна разумець, што ніякай сувязі паміж віртуальнымі сеткамі VL2 і шляхамі VL1 не. Падобна мультыплексавання VLAN у правадной ЛВС, два вузла, якія сумесна выкарыстаюць некалькі агульных сяброўстваў у сетцы, усё роўна будуць мець толькі адзін шлях VL1 (віртуальны кабель) паміж імі.

Кожная VL2 сетка (VLAN) ідэнтыфікуецца па 64-бітным (16 шаснаццатковых лічбаў) адрасе сеткі ZeroTier, які змяшчае 40-бітны адрас ZeroTier кантролера і 24-бітны нумар, які ідэнтыфікуе сетку, створаную гэтым кантролерам.

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

Калі вузел далучаецца да сеткі або запытвае абнаўленне канфігурацыі сеткі, ён пасылае на кантролер сеткі паведамленне запыту канфігурацыі сеткі (праз узровень VL1). Затым кантролер выкарыстоўвае VL1 адрас вузла, каб знайсці яго ў сетцы і адправіць яму адпаведныя сертыфікаты, уліковыя дадзеныя і інфармацыю аб канфігурацыі. З пункту гледжання VL2 віртуальных сетак, VL1 адрасы ZeroTier можна разглядаць як нумары партоў на вялізным віртуальным камутатары глабальнага маштабу.

Усе ўліковыя дадзеныя, выдадзеныя сеткавымі кантролерамі вузлам-удзельнікам дадзенай сеткі, падпісаны сакрэтным ключом кантролера, каб усе ўдзельнікі сеткі маглі іх праверыць. У уліковых дадзеных ёсць пазнакі часу, створаныя кантролерам, што дазваляе праводзіць адноснае параўнанне без неабходнасці звяртацца да лакальных сістэмных гадзін вузла. 

Уліковыя дадзеныя выдаюцца толькі іх уладальнікам, а затым адпраўляюцца раўнапраўным вузлам, якія жадаюць абменьвацца дадзенымі з іншымі вузламі ў сетцы. Гэта дазваляе сеткі маштабавацца да велізарных памераў без неабходнасці кэшавання вялікай колькасці уліковых дадзеных на вузлах ці сталага звароту да сеткавага кантролера.

Сеткі ZeroTier падтрымліваюць мульты адрасную рассылку праз простую сістэму публікацыі / падпіскі.

Спасылка на дакументацыю

Калі вузел жадае атрымаць мульты адрасную рассылку для вызначанай групы рассылання, ён аб'яўляе аб сяброўстве ў гэтай групе іншым чальцам сеткі, з якой ён звязваецца, і сеткаваму кантролеру. Калі вузел жадае адправіць мульты адрасную рассылку, ён адначасова звяртаецца да свайго кэшу апошніх публікацый і перыядычна запытвае дадатковыя публікацыі.

Шырокавяшчальная рассылка (Ethernet ff: ff: ff: ff: ff: ff) разглядаецца як шматадрасная група, на якую падпісваюцца ўсе ўдзельнікі. Яе можна адключыць на ўзроўні сеткі, каб зменшыць трафік, калі ў ёй няма неабходнасці. 

ZeroTier эмулюе рэальны камутатар Ethernet. Гэты факт дазваляе ажыццяўляць аб'яднанне створаных віртуальных сетак з іншымі сеткамі Ethernet (правадная лакальная сетка, WiFi, virtual backplane і т. д.) на канальным узроўні – з выкарыстаннем звычайнага маста Ethernet.

Каб выступаць у якасці маста, сеткавы кантролер павінен прызначыць вузел сеткі ў якасці такога. Такая схема рэалізаваная з меркаванняў бяспекі, паколькі звычайным вузлам сеткі не дазваляецца адпраўляць трафік з іншай крыніцы, акрамя іх MAC-адрасы. Вузлы прызначаныя мастамі таксама выкарыстоўваю спецыяльны рэжым алгарытму мульты адраснай рассылкі, які больш агрэсіўна і адрасна ўзаемадзейнічае з імі пры групавых падпісках і рэплікацыі ўсяго шырокавяшчальнага трафіку і запытаў ARP. 

Таксама камутатар мае магчымасць стварэння публічных і ad-hoc сетак, механізм QoS і рэдактар ​​сеткавых правіл.

▍Вузел:

ZeroTier One - Які працуе на наўтбуках, настольных кампутарах, серверах, віртуальных машынах і кантэйнерах сэрвіс, які забяспечвае падлучэнні да віртуальнай сеткі праз віртуальны сеткавы порт, падобна VPN-кліенту. 

Пасля ўсталёўкі і запуску службы да віртуальных сетак можна падлучыцца, выкарыстоўваючы іх 16-знакавыя адрасы. Кожная сетка выглядае як віртуальны сеткавы порт у сістэме, які паводзіць сябе гэтак жа, як звычайны порт Ethernet.

На дадзены момант ZeroTier One даступны для наступных АС і сістэм.

Аперацыйныя сістэмы:

  • Microsoft Windows - MSI installer x86/x64
  • MacOS - PKG installer
  • Apple, IOS - App Store
  • Android - Play Store
  • Linux - DEB / RPM
  • FreeBSD - FreeBSD package

НАН:

  • Synology NAS
  • QNAP NAS
  • WD MyCloud NAS

іншыя:

  • Докер - docker file
  • OpenWRT – community port
  • App embedding - SDK (libzt)

Калі падводзіць вынік усяму вышэйсказанаму, то я б адзначыў тое, што ZeroTier - выдатны і хуткі інструмент для аб'яднання вашых фізічных, віртуальных або хмарных рэсурсаў у агульную лакальную сетку, з магчымасцямі падзелу яе на VLANы і адсутнасцю адзінай кропкі адмовы.

На гэтым з тэарэтычнай часткай у фармаце першага артыкула аб ZeroTier для Хабра - напэўна ўсё! У наступным артыкуле я планую прадэманстраваць на практыку стварэнне віртуальнай сеткавай інфраструктуры на аснове ZeroTier, дзе ў якасці сеткавага кантролера будзе выкарыстоўвацца VDS з шаблонам дзелі open source GUI. 

Паважаныя чытачы! Ці карыстаецеся вы тэхналогіяй ZeroTier у сваіх праектах? Калі не, якія інструменты карыстаецеся для аб'яднання вашых рэсурсаў у агульную сетку?

Інтэлектуальны Ethernet-камутатар для планеты Зямля

Крыніца: habr.com

Дадаць каментар