Inteligentny przełącznik Ethernet dla planety Ziemia

Inteligentny przełącznik Ethernet dla planety Ziemia
„Możesz znaleźć rozwiązanie (rozwiązać problem) na kilka sposobów, ale najdroższa i/lub popularna metoda nie zawsze jest najskuteczniejsza!”

Preambuła

Około trzy lata temu, w procesie opracowywania zdalnego modelu odzyskiwania danych po awarii, natknąłem się na jedną przeszkodę, która nie została od razu dostrzeżona – brak informacji o nowych, oryginalnych rozwiązaniach do wirtualizacji sieci w źródłach społecznościowych. 

Algorytm opracowanego modelu został zaplanowany w następujący sposób: 

  1. Skontaktował się ze mną zdalny użytkownik, którego komputer kiedyś odmówił uruchomienia, wyświetlając komunikat „nie wykryto/nie sformatowano dysku systemowego”, ładuje go za pomocą Life USB. 
  2. Podczas procesu uruchamiania system automatycznie łączy się z bezpieczną prywatną siecią lokalną, która oprócz siebie zawiera stację roboczą administratora, w tym przypadku laptop, oraz węzeł NAS. 
  3. Następnie łączę się - albo w celu reanimacji partycji dysku, albo w celu wydobycia stamtąd danych.

Początkowo wdrażałem ten model wykorzystując serwer VPN na lokalnym routerze w kontrolowanej przeze mnie sieci, następnie na wynajętym VDS-ie. Jednak, jak to często bywa i zgodnie z pierwszym prawem Chisholma, jeśli spadnie deszcz, sieć dostawcy Internetu ulegnie awarii, wówczas spory między podmiotami gospodarczymi spowodują, że usługodawca straci „energię”…

Dlatego też postanowiłem najpierw sformułować podstawowe wymagania, jakie musi spełniać niezbędne narzędzie. Pierwszym z nich jest decentralizacja. Po drugie biorąc pod uwagę, że mam kilka takich life-USBów, każdy z nich ma osobną izolowaną sieć. No i po trzecie, szybkie podłączenie do sieci różnych urządzeń i proste zarządzanie nimi, także w przypadku, gdyby mój laptop również padł ofiarą wspomnianego wyżej prawa.

Na tej podstawie i po spędzeniu dwóch i pół miesiąca na praktycznych badaniach kilku niezbyt odpowiednich opcji, na własne ryzyko i ryzyko zdecydowałem się wypróbować inne narzędzie nieznanego mi wówczas startupu o nazwie ZeroTier. Czego nigdy później nie żałowałem.

Podczas tych świąt noworocznych, próbując zrozumieć, czy sytuacja merytoryczna zmieniła się od tego pamiętnego momentu, przeprowadziłem selektywny audyt pod kątem dostępności artykułów na ten temat, opierając się na Habr jako źródle. Dla zapytania „ZeroTier” w wynikach wyszukiwania pojawiają się tylko trzy artykuły, w których jest ono wzmiankowane, a żaden nie zawiera choćby krótkiego opisu. I to pomimo tego, że znalazło się wśród nich tłumaczenie artykułu napisanego przez samego założyciela ZeroTier, Inc. — Adam Ierymenko.

Wyniki były rozczarowujące i skłoniły mnie do bardziej szczegółowego omówienia ZeroTier, oszczędzając tym samym współczesnym „poszukiwaczom” konieczności podążania tą samą drogą, którą ja wybrałem.

Więc kim jesteś?

Deweloper pozycjonuje ZeroTier jako inteligentny przełącznik Ethernet dla planety Ziemia. 

„To rozproszony hiperwizor sieciowy zbudowany na bazie kryptograficznie bezpiecznej globalnej sieci peer-to-peer (P2P). Narzędzie przypominające korporacyjny przełącznik SDN, przeznaczone do organizowania sieci wirtualnych na fizycznych, zarówno lokalnych, jak i globalnych, z możliwością podłączenia niemal dowolnej aplikacji lub urządzenia.”

To bardziej opis marketingowy, teraz o cechach technologicznych.

▍Jądro: 

ZeroTier Network Hypervisor to samodzielny silnik wirtualizacji sieci, który emuluje sieć Ethernet, podobną do VXLAN, na wierzchu globalnej, szyfrowanej sieci peer-to-peer (P2P).

Protokoły stosowane w ZeroTier są oryginalne, choć podobne w wyglądzie do VXLAN i IPSec i składają się z dwóch koncepcyjnie odrębnych, choć ściśle powiązanych warstw: VL1 i VL2.

Link do dokumentacji

▍VL1 to podstawowa warstwa transportowa typu peer-to-peer (P2P), rodzaj „wirtualnego kabla”.

„Globalne centrum danych wymaga «globalnej szafy» okablowania.”

W konwencjonalnych sieciach L1 (OSI Layer 1) odnosi się do rzeczywistych kabli lub bezprzewodowych radiotelefonów przenoszących dane oraz fizycznych chipów urządzeń nadawczo-odbiorczych, które je modulują i demodulują. VL1 to sieć peer-to-peer (P2P), która robi to samo, wykorzystując szyfrowanie, uwierzytelnianie i inne sztuczki sieciowe do organizowania wirtualnych kabli według potrzeb.

Co więcej, robi to automatycznie, szybko i bez udziału użytkownika uruchamiając nowy węzeł ZeroTier.

Aby to osiągnąć, VL1 jest zorganizowany podobnie do systemu nazw domen. Sercem sieci jest grupa wysoce dostępnych serwerów głównych, których rola jest podobna do roli głównych serwerów nazw DNS. W tej chwili główne (planetarne) serwery root znajdują się pod kontrolą dewelopera - ZeroTier, Inc. i są świadczone jako usługa bezpłatna. 

Możliwe jest jednak utworzenie niestandardowych serwerów głównych (lunów), które umożliwiają:

  • zmniejszyć zależność od infrastruktury ZeroTier, Inc.; Link do dokumentacji
  • zwiększyć produktywność poprzez minimalizację opóźnień; 
  • kontynuować normalną pracę w przypadku utraty połączenia z Internetem.

Początkowo węzły są uruchamiane bez bezpośrednich połączeń między sobą. 

Każdy peer w VL1 ma unikalny 40-bitowy (10 szesnastkowy) adres ZeroTier, który w przeciwieństwie do adresów IP jest zaszyfrowanym identyfikatorem, który nie zawiera informacji o routingu. Adres ten jest obliczany na podstawie części publicznej pary kluczy publiczny/prywatny. Adres węzła, klucz publiczny i klucz prywatny razem tworzą jego tożsamość.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Jeśli chodzi o szyfrowanie, jest to powód na osobny artykuł.

Link do dokumentacji

Aby nawiązać komunikację, peery najpierw wysyłają pakiety „w górę” drzewa serwerów głównych, a gdy pakiety te przemieszczają się przez sieć, inicjują po drodze losowe tworzenie kanałów przesyłania. Drzewo nieustannie próbuje „samoistnie się zwinąć”, aby zoptymalizować się pod kątem przechowywanej w nim mapy tras.

Mechanizm nawiązywania połączenia peer-to-peer jest następujący:

Inteligentny przełącznik Ethernet dla planety Ziemia

  1. Węzeł A chce wysłać pakiet do Węzła B, ale ponieważ nie zna bezpośredniej ścieżki, wysyła go w górę do Węzła R (księżyca, głównego serwera użytkownika).
  2. Jeśli węzeł R ma bezpośrednie połączenie z węzłem B, przekazuje tam pakiet. W przeciwnym razie wysyła pakiet w górę rzeki, zanim dotrze do korzeni planetarnych.Korzenie planetarne wiedzą o wszystkich węzłach, więc pakiet ostatecznie dotrze do węzła B, jeśli będzie online.
  3. Węzeł R również wysyła wiadomość zwaną „randką” do węzła A zawierającą wskazówki, w jaki sposób może dotrzeć do węzła B. W międzyczasie serwer główny, który przekazuje pakiet do węzła B, wysyła wiadomość „randkę”, informując go o tym, w jaki sposób może dotrzeć do węzła A.
  4. Węzły A i B odbierają swoje komunikaty o spotkaniu i próbują wysyłać do siebie komunikaty testowe, próbując złamać napotkane po drodze NAT lub firewalle stanowe. Jeśli to zadziała, zostanie nawiązane połączenie bezpośrednie i pakiety nie będą już przesyłane tam i z powrotem.

Jeśli nie można nawiązać bezpośredniego połączenia, komunikacja będzie kontynuowana poprzez przekaźnik, a próby bezpośredniego połączenia będą kontynuowane, aż do uzyskania pomyślnego wyniku. 

VL1 ma także inne funkcje umożliwiające ustanawianie bezpośredniej łączności, w tym wykrywanie partnerów w sieci LAN, przewidywanie portów dla przejścia przez symetryczny NAT IPv4 oraz jawne mapowanie portów przy użyciu uPnP i/lub NAT-PMP, jeśli jest dostępne w lokalnej fizycznej sieci LAN.

→ Link do dokumentacji

▍VL2 to protokół wirtualizacji sieci Ethernet podobny do VXLAN, z funkcjami zarządzania SDN. Znane środowisko komunikacyjne dla systemów operacyjnych i aplikacji...

W przeciwieństwie do VL1, tworzenie sieci VL2 (VLAN) i podłączanie do nich węzłów, a także zarządzanie nimi wymaga bezpośredniego udziału użytkownika. Może to zrobić za pomocą kontrolera sieciowego. W istocie jest to zwykły węzeł ZeroTier, w którym sterowanie funkcjami kontrolera odbywa się na dwa sposoby: albo bezpośrednio, poprzez zmianę plików, albo, jak stanowczo zaleca deweloper, za pomocą opublikowanego API. 

Ta metoda zarządzania sieciami wirtualnymi ZeroTier nie jest zbyt wygodna dla przeciętnego człowieka, dlatego istnieje kilka GUI:
 

  • Jeden od dewelopera ZeroTier, dostępny jako rozwiązanie SaaS w chmurze publicznej z czterema planami subskrypcyjnymi, w tym darmowymi, ale ograniczonymi pod względem liczby zarządzanych urządzeń i poziomu wsparcia
  • Drugie pochodzi od niezależnego programisty i ma nieco uproszczoną funkcjonalność, ale jest dostępne jako prywatne rozwiązanie typu open source do użytku lokalnego lub w zasobach w chmurze.

VL2 jest zaimplementowany na VL1 i jest przez niego transportowany. Jednakże dziedziczy szyfrowanie i uwierzytelnianie punktu końcowego VL1, a także używa kluczy asymetrycznych do podpisywania i weryfikowania poświadczeń. VL1 pozwala na wdrożenie VL2 bez martwienia się o istniejącą topologię sieci fizycznej. Oznacza to, że problemy z łącznością i wydajnością routingu są problemami VL1. Ważne jest, aby zrozumieć, że nie ma połączenia między sieciami wirtualnymi VL2 a ścieżkami VL1. Podobnie jak w przypadku multipleksowania VLAN w przewodowej sieci LAN, dwa węzły, które współdzielą wiele członkostw w sieci, nadal będą miały między sobą tylko jedną ścieżkę VL1 (wirtualny kabel).

Każda sieć VL2 (VLAN) jest identyfikowana za pomocą 64-bitowego (16 szesnastkowego) adresu sieciowego ZeroTier, który zawiera 40-bitowy adres ZeroTier kontrolera i 24-bitowy numer identyfikujący sieć utworzoną przez ten kontroler.

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

Kiedy węzeł przyłącza się do sieci lub żąda aktualizacji konfiguracji sieci, wysyła komunikat żądania konfiguracji sieci (za pośrednictwem VL1) do kontrolera sieci. Następnie kontroler wykorzystuje adres VL1 węzła, aby znaleźć go w sieci i wysłać mu odpowiednie certyfikaty, dane uwierzytelniające i informacje konfiguracyjne. Z punktu widzenia sieci wirtualnych VL2 adresy VL1 ZeroTier można traktować jako numery portów na ogromnym globalnym przełączniku wirtualnym.

Wszystkie dane uwierzytelniające wydawane przez kontrolery sieci węzłom członkowskim danej sieci są podpisane tajnym kluczem kontrolera, dzięki czemu wszyscy uczestnicy sieci mogą je zweryfikować. Poświadczenia mają znaczniki czasu wygenerowane przez kontroler, co pozwala na względne porównanie bez konieczności uzyskiwania dostępu do lokalnego zegara systemowego hosta. 

Poświadczenia są wydawane tylko ich właścicielom, a następnie wysyłane do partnerów, którzy chcą komunikować się z innymi węzłami w sieci. Umożliwia to skalowanie sieci do ogromnych rozmiarów bez konieczności buforowania dużej liczby danych uwierzytelniających w węzłach lub ciągłego kontaktowania się z kontrolerem sieci.

Sieci ZeroTier obsługują dystrybucję multiemisji poprzez prosty system publikowania/subskrypcji.

Link do dokumentacji

Gdy węzeł chce odebrać rozgłoszenie multiemisji dla określonej grupy dystrybucyjnej, ogłasza członkostwo w tej grupie innym członkom sieci, z którą się komunikuje, oraz kontrolerowi sieci. Gdy węzeł chce wysłać transmisję multiemisji, jednocześnie uzyskuje dostęp do swojej pamięci podręcznej z najnowszymi publikacjami i okresowo żąda dodatkowych publikacji.

Transmisja (Ethernet ff: ff: ff: ff: ff: ff) jest traktowana jako grupa multiemisji, do której subskrybują wszyscy uczestnicy. Można ją wyłączyć na poziomie sieci, aby zmniejszyć ruch, jeśli nie jest potrzebny. 

ZeroTier emuluje prawdziwy przełącznik Ethernet. Fakt ten pozwala nam przeprowadzić łączenie utworzonych sieci wirtualnych z innymi sieciami Ethernet (przewodowa sieć LAN, WiFi, wirtualna płyta montażowa itp.) na poziomie łącza danych - za pomocą zwykłego mostu Ethernet.

Aby działać jako most, kontroler sieci musi wyznaczyć hosta jako takiego. Ten schemat wdrożono ze względów bezpieczeństwa, ponieważ zwykłe hosty sieciowe nie mogą wysyłać ruchu ze źródła innego niż ich adres MAC. Węzły wyznaczone jako mosty korzystają również ze specjalnego trybu algorytmu multiemisji, który wchodzi z nimi w bardziej agresywną i ukierunkowaną interakcję podczas subskrypcji grupowych oraz replikacji całego ruchu rozgłoszeniowego i żądań ARP. 

Przełącznik posiada także możliwość tworzenia sieci publicznych i ad-hoc, mechanizm QoS oraz edytor reguł sieciowych.

▍Węzeł:

ZeroTier XNUMX to usługa działająca na laptopach, komputerach stacjonarnych, serwerach, maszynach wirtualnych i kontenerach, która zapewnia połączenia z siecią wirtualną poprzez wirtualny port sieciowy, podobnie jak klient VPN. 

Po zainstalowaniu i uruchomieniu usługi możesz łączyć się z sieciami wirtualnymi, korzystając z ich 16-cyfrowych adresów. Każda sieć pojawia się w systemie jako wirtualny port sieciowy, który zachowuje się jak zwykły port Ethernet.

ZeroTier One jest obecnie dostępny dla następujących systemów operacyjnych i systemów.

System operacyjny:

  • Microsoft Windows - Instalator MSI x86/x64
  • MacOS - Instalator PKG
  • apple iOS - Sklep z aplikacjami
  • Android — Sklep Play
  • Linux - DEB/RPM
  • FreeBSD - Pakiet FreeBSD

NAS:

  • Synology NAS
  • Serwer QNAP
  • Serwer NAS WD MyCloud

Inne:

  • Doker - plik dokowany
  • OpenWRT -port społecznościowy
  • Osadzanie aplikacji - SDK (libzt)

Podsumowując wszystko powyższe zaznaczę, że ZeroTier to doskonałe i szybkie narzędzie do łączenia zasobów fizycznych, wirtualnych lub chmurowych we wspólną sieć lokalną, z możliwością podziału na sieci VLAN i brakiem pojedynczego punktu awarii .

To tyle jeśli chodzi o część teoretyczną w formie pierwszego artykułu o ZeroTier dla Habr – to chyba wszystko! W kolejnym artykule planuję zademonstrować w praktyce tworzenie wirtualnej infrastruktury sieciowej opartej o ZeroTier, gdzie jako kontroler sieciowy wykorzystany zostanie VDS z prywatnym szablonem GUI typu open source. 

Drodzy Czytelnicy! Czy w swoich projektach wykorzystujecie technologię ZeroTier? Jeśli nie, jakich narzędzi używasz do sieciowania swoich zasobów?

Inteligentny przełącznik Ethernet dla planety Ziemia

Źródło: www.habr.com

Dodaj komentarz