Switch Ethernet intelligente per il pianeta Terra

Switch Ethernet intelligente per il pianeta Terra
“Puoi creare una soluzione (risolvere un problema) in diversi modi, ma il metodo più costoso e/o popolare non è sempre il più efficace!”

preambolo

Circa tre anni fa, nel processo di sviluppo di un modello remoto per il ripristino di emergenza dei dati, ho riscontrato un ostacolo che non è stato immediatamente notato: la mancanza di informazioni su nuove soluzioni originali per la virtualizzazione della rete nelle fonti della comunità. 

L'algoritmo per il modello sviluppato è stato pianificato come segue: 

  1. Un utente remoto che mi ha contattato, il cui computer una volta si rifiutava di avviarsi, visualizzando il messaggio "disco di sistema non rilevato/non formattato", lo carica utilizzando Life USB. 
  2. Durante il processo di avvio, il sistema si connette automaticamente a una rete locale privata sicura, che oltre a sé contiene la workstation dell’amministratore, in questo caso un laptop, e un nodo NAS. 
  3. Quindi mi connetto, sia per resuscitare le partizioni del disco, sia per estrarre i dati da lì.

Inizialmente, ho implementato questo modello utilizzando un server VPN su un router locale in una rete sotto il mio controllo, quindi su un VDS noleggiato. Ma, come spesso accade e secondo la prima legge di Chisholm, se piove, la rete del fornitore di servizi Internet va giù, quindi le controversie tra entità commerciali faranno perdere “energia” al fornitore di servizi...

Pertanto, ho deciso di formulare prima i requisiti di base che lo strumento necessario deve soddisfare. Il primo è il decentramento. In secondo luogo, dato che ho diverse USB di questo tipo, ognuna di esse ha una rete isolata separata. E in terzo luogo, connessione rapida alla rete di vari dispositivi e gestione semplice degli stessi, anche nel caso in cui anche il mio laptop sia vittima della legge sopra menzionata.

Sulla base di ciò e dopo aver trascorso due mesi e mezzo alla ricerca pratica di diverse opzioni poco adatte, ho deciso, a mio rischio e pericolo, di provare un altro strumento di una startup a me sconosciuta all'epoca chiamata ZeroTier. Di cui non mi sono mai pentito in seguito.

Durante queste vacanze di Capodanno, cercando di capire se la situazione dei contenuti è cambiata da quel momento memorabile, ho condotto un audit selettivo sulla disponibilità di articoli su questo argomento, utilizzando Habr come fonte. Per la query “ZeroTier” nei risultati di ricerca ci sono solo tre articoli che la menzionano, e nessuno con almeno una breve descrizione. E questo nonostante tra loro ci sia la traduzione di un articolo scritto dallo stesso fondatore di ZeroTier, Inc.. — Adam Ierymenko.

I risultati sono stati deludenti e mi hanno spinto a iniziare a parlare di ZeroTier in modo più dettagliato, evitando ai moderni “cercatori” di dover percorrere la stessa strada che ho preso io.

Allora cosa sei?

Lo sviluppatore posiziona ZeroTier come uno switch Ethernet intelligente per il pianeta Terra. 

“Si tratta di un hypervisor di rete distribuito costruito su una rete globale peer-to-peer (P2P) crittograficamente sicura. Uno strumento simile a uno switch SDN aziendale, progettato per organizzare le reti virtuali rispetto a quelle fisiche, sia locali che globali, con la possibilità di connettere praticamente qualsiasi applicazione o dispositivo.”

Questa è più una descrizione di marketing, ora riguarda le caratteristiche tecnologiche.

▍Kernel: 

ZeroTier Network Hypervisor è un motore di virtualizzazione di rete autonomo che emula una rete Ethernet, simile a VXLAN, su una rete peer-to-peer (P2P) crittografata globale.

I protocolli utilizzati in ZeroTier sono originali, anche se simili nell'aspetto a VXLAN e IPSec e sono costituiti da due livelli concettualmente separati, ma strettamente correlati: VL1 e VL2.

Collegamento alla documentazione

▍VL1 è un livello di trasporto peer-to-peer (P2P) di base, una sorta di "cavo virtuale".

"Un data center globale richiede un 'armadio globale' di cavi."

Nelle reti convenzionali, L1 (OSI Layer 1) si riferisce ai cavi effettivi o alle radio wireless che trasportano i dati e ai chip fisici del dispositivo ricetrasmettitore che li modulano e demodulano. VL1 è una rete peer-to-peer (P2P) che fa la stessa cosa, utilizzando crittografia, autenticazione e altri trucchi di rete per organizzare i cavi virtuali secondo necessità.

Inoltre, lo fa automaticamente, rapidamente e senza il coinvolgimento dell'utente nel lancio di un nuovo nodo ZeroTier.

Per raggiungere questo obiettivo, VL1 è organizzato in modo simile al sistema dei nomi di dominio. Al centro della rete c'è un gruppo di root server altamente disponibili, il cui ruolo è simile a quello dei root name server DNS. Al momento, i principali root server (planetari) sono sotto il controllo dello sviluppatore: ZeroTier, Inc. e sono forniti come servizio gratuito. 

È tuttavia possibile creare root server personalizzati (luns) che consentono di:

  • ridurre la dipendenza dall'infrastruttura di ZeroTier, Inc.; Collegamento alla documentazione
  • aumentare la produttività riducendo al minimo i ritardi; 
  • continuare a funzionare normalmente anche in caso di interruzione della connessione Internet.

Inizialmente, i nodi vengono lanciati senza connessioni dirette tra loro. 

Ogni peer su VL1 ha un indirizzo ZeroTier univoco a 40 bit (10 esadecimali) che, a differenza degli indirizzi IP, è un identificatore crittografato che non contiene informazioni di routing. Questo indirizzo viene calcolato dalla parte pubblica della coppia di chiavi pubblica/privata. L'indirizzo, la chiave pubblica e la chiave privata di un nodo insieme formano la sua identità.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Per quanto riguarda la crittografia, questo è motivo per un articolo separato.

Collegamento alla documentazione

Per stabilire la comunicazione, i peer inviano prima i pacchetti "su" l'albero dei server root e, mentre questi pacchetti viaggiano attraverso la rete, avviano la creazione casuale di canali di inoltro lungo il percorso. L'albero cerca costantemente di “collassare da solo” per ottimizzarsi per la mappa del percorso che memorizza.

Il meccanismo per stabilire una connessione peer-to-peer è il seguente:

Switch Ethernet intelligente per il pianeta Terra

  1. Il nodo A vuole inviare un pacchetto al nodo B, ma poiché non conosce il percorso diretto, lo invia a monte al nodo R (moon, il root server dell'utente).
  2. Se il nodo R ha una connessione diretta con il nodo B, inoltra lì il pacchetto. Altrimenti invia il pacchetto a monte prima di raggiungere le radici planetarie, le quali conoscono tutti i nodi, quindi il pacchetto alla fine raggiungerà il nodo B se è online.
  3. Il nodo R invia anche un messaggio chiamato "rendezvous" al nodo A, contenente suggerimenti su come raggiungere il nodo B. Nel frattempo, il root server, che inoltra il pacchetto al nodo B, invia un "rendezvous" informandolo su come può raggiungere il nodo A.
  4. I nodi A e B ricevono i loro messaggi di rendezvous e tentano di scambiarsi messaggi di prova nel tentativo di violare qualsiasi NAT o firewall con stato incontrato lungo il percorso. Se funziona, viene stabilita una connessione diretta e i pacchetti non vanno più avanti e indietro.

Se non è possibile stabilire una connessione diretta, la comunicazione continuerà tramite inoltro e i tentativi di connessione diretta continueranno fino al raggiungimento di un risultato positivo. 

VL1 dispone anche di altre funzionalità per stabilire una connettività diretta, tra cui il rilevamento peer LAN, la previsione delle porte per l'attraversamento del NAT IPv4 simmetrico e la mappatura esplicita delle porte utilizzando uPnP e/o NAT-PMP se disponibile sulla LAN fisica locale.

→ Collegamento alla documentazione

▍VL2 è un protocollo di virtualizzazione della rete Ethernet simile a VXLAN con funzioni di gestione SDN. Ambiente di comunicazione familiare per sistema operativo e applicazioni...

A differenza di VL1, la creazione di reti VL2 (VLAN) e la connessione dei nodi ad esse, nonché la loro gestione, richiedono la partecipazione diretta dell'utente. Può farlo utilizzando un controller di rete. In sostanza, si tratta di un normale nodo ZeroTier, in cui le funzioni del controller sono controllate in due modi: direttamente, modificando i file o, come consiglia vivamente lo sviluppatore, utilizzando un'API pubblicata. 

Questo metodo di gestione delle reti virtuali ZeroTier non è molto conveniente per la persona media, quindi esistono diverse GUI:
 

  • Uno dello sviluppatore ZeroTier, disponibile come soluzione SaaS cloud pubblico con quattro piani di abbonamento, incluso quello gratuito, ma limitato nel numero di dispositivi gestiti e nel livello di supporto
  • Il secondo proviene da uno sviluppatore indipendente, leggermente semplificato nelle funzionalità, ma disponibile come soluzione open source privata per l'utilizzo in sede o su risorse cloud.

VL2 è implementato sopra VL1 e viene trasportato da esso. Tuttavia, eredita la crittografia e l'autenticazione dell'endpoint VL1 e utilizza anche le sue chiavi asimmetriche per firmare e verificare le credenziali. VL1 consente di implementare VL2 senza preoccuparsi della topologia della rete fisica esistente. Cioè, i problemi con la connettività e l'efficienza del routing sono problemi VL1. È importante comprendere che non esiste alcuna connessione tra le reti virtuali VL2 e i percorsi VL1. Similmente al multiplexing VLAN in una LAN cablata, due nodi che condividono più appartenenze di rete avranno comunque solo un percorso VL1 (cavo virtuale) tra di loro.

Ciascuna rete VL2 (VLAN) è identificata da un indirizzo di rete ZeroTier a 64 bit (16 esadecimali), che contiene l'indirizzo ZeroTier a 40 bit del controller e un numero a 24 bit che identifica la rete creata da quel controller.

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

Quando un nodo si unisce a una rete o richiede un aggiornamento della configurazione di rete, invia un messaggio di richiesta di configurazione di rete (tramite VL1) al controller di rete. Il controller utilizza quindi l'indirizzo VL1 del nodo per trovarlo sulla rete e inviargli i certificati, le credenziali e le informazioni di configurazione appropriati. Dal punto di vista delle reti virtuali VL2, gli indirizzi ZeroTier VL1 possono essere pensati come numeri di porta su un enorme switch virtuale globale.

Tutte le credenziali emesse dai controller di rete ai nodi membri di una determinata rete sono firmate con la chiave segreta del controller in modo che tutti i partecipanti alla rete possano verificarle. Le credenziali hanno timestamp generati dal controller, consentendo il confronto relativo senza dover accedere all'orologio di sistema locale dell'host. 

Le credenziali vengono rilasciate solo ai rispettivi proprietari e quindi inviate ai peer che desiderano comunicare con altri nodi della rete. Ciò consente alla rete di raggiungere dimensioni enormi senza la necessità di memorizzare nella cache grandi quantità di credenziali sui nodi o di contattare costantemente il controller di rete.

Le reti ZeroTier supportano la distribuzione multicast attraverso un semplice sistema di pubblicazione/sottoscrizione.

Collegamento alla documentazione

Quando un nodo desidera ricevere una trasmissione multicast per un particolare gruppo di distribuzione, annuncia l'appartenenza a quel gruppo agli altri membri della rete con cui sta comunicando e al controller di rete. Quando un nodo desidera inviare un multicast, accede contemporaneamente alla cache delle pubblicazioni recenti e richiede periodicamente pubblicazioni aggiuntive.

Un Broadcast (Ethernet ff: ff: ff: ff: ff: ff) viene trattato come un gruppo Multicast al quale sono iscritti tutti i partecipanti. Può essere disabilitato a livello di rete per ridurre il traffico se non è necessario. 

ZeroTier emula un vero switch Ethernet. Questo fatto ci permette di effettuare combinando le reti virtuali create con altre reti Ethernet (LAN cablata, WiFi, backplane virtuale, ecc.) a livello di collegamento dati, utilizzando un normale bridge Ethernet.

Per fungere da bridge, il controller di rete deve designare un host come tale. Questo schema è implementato per motivi di sicurezza, poiché ai normali host di rete non è consentito inviare traffico da una fonte diversa dal proprio indirizzo MAC. I nodi designati come bridge utilizzano anche una modalità speciale dell'algoritmo multicast, che interagisce con loro in modo più aggressivo e mirato durante gli abbonamenti di gruppo e la replica di tutto il traffico broadcast e le richieste ARP. 

Lo switch ha anche la capacità di creare reti pubbliche e ad hoc, un meccanismo QoS e un editor di regole di rete.

▍Nodo:

Livello Uno Zero è un servizio in esecuzione su laptop, desktop, server, macchine virtuali e contenitori che fornisce connessioni a una rete virtuale tramite una porta di rete virtuale, simile a un client VPN. 

Una volta installato e avviato il servizio, puoi connetterti alle reti virtuali utilizzando i loro indirizzi a 16 cifre. Ogni rete appare come una porta di rete virtuale sul sistema, che si comporta proprio come una normale porta Ethernet.

ZeroTier One è attualmente disponibile per i seguenti sistemi operativi e sistemi.

Sistemi operativi:

  • Microsoft Windows - Programma di installazione MSI x86/x64
  • MacOS - Programma di installazione PKG
  • apple iOS - App Store
  • Android - Play Store
  • Linux -DEB/RPM
  • FreeBSD - Pacchetto FreeBSD

NAS:

  • Synology NAS
  • QNAP NAS
  • NAS WDMyCloud

altro:

  • docker -file docker
  • OpenWRT - porto comunitario
  • Incorporamento dell'app -SDK (libretto)

Riassumendo quanto sopra, vorrei sottolineare che ZeroTier è un ottimo e veloce strumento per unire le proprie risorse fisiche, virtuali o cloud in una rete locale comune, con la possibilità di dividerla in VLAN e l'assenza di un singolo punto di guasto .

Questo è tutto per la parte teorica nel formato del primo articolo su ZeroTier per Habr - probabilmente è tutto! Nel prossimo articolo, ho intenzione di dimostrare in pratica la creazione di un'infrastruttura di rete virtuale basata su ZeroTier, dove un VDS con un modello GUI privato open source verrà utilizzato come controller di rete. 

Cari lettori! Utilizzi la tecnologia ZeroTier nei tuoi progetti? In caso negativo, quali strumenti utilizzi per mettere in rete le tue risorse?

Switch Ethernet intelligente per il pianeta Terra

Fonte: habr.com

Aggiungi un commento