Commutateur Ethernet intelligent pour la planète Terre


"Il existe plusieurs façons de créer une solution (pour résoudre un problème), mais pas toujours la manière la plus chère et / ou populaire - la plus efficace!"

Préambule


Il y a environ trois ans, dans le processus de développement d'un modèle de reprise après sinistre à distance, je suis tombé sur un obstacle immédiatement non détecté - un manque d'informations sur les nouvelles solutions originales de virtualisation de réseau dans les sources communautaires.

-> Un guide pratique pour la construction de réseaux virtuels. Partie 1

L'algorithme du modèle développé était prévu comme suit:

  1. Un utilisateur distant qui m'a contacté et dont l'ordinateur a refusé de démarrer avec le message «le disque système n'a pas été détecté / non formaté» le charge à l'aide de l'USB de vie.
  2. Pendant le processus de démarrage, le système se connecte automatiquement à un réseau local privé sécurisé, en plus duquel se trouve un poste de travail d'administrateur, dans ce cas un ordinateur portable et un nœud NAS.
  3. Ensuite, je me connecte - soit pour réanimer les partitions du disque, soit pour en extraire les données.

Dans un premier temps, j'ai implémenté ce modèle en utilisant un serveur VPN sur un routeur local de mon réseau, puis sur un VDS loué. Mais, comme cela arrive souvent, et selon la première loi de Chisholm, alors la pluie passera - le fournisseur d'accès Internet "fera tomber" le réseau, puis les litiges des entités commerciales - le fournisseur d'énergie disparaîtra du fournisseur de services ...

Par conséquent, j'ai décidé de formuler d'abord les exigences de base auxquelles l'outil nécessaire devrait répondre. Le premier est la décentralisation. Le second - étant donné que j'ai plusieurs USB de ce type, alors pour chacun d'eux il y a un réseau isolé séparé. Et le troisième est la connexion rapide de divers appareils au réseau et leur gestion simple, y compris au cas où mon ordinateur portable serait également victime de la loi mentionnée ci-dessus.

Sur cette base et après avoir passé deux mois et demi à la recherche pratique de plusieurs options peu adaptées, j'ai, à mes risques et périls, décidé d'essayer un autre outil d'une startup que je ne connaissais pas alors appelée - ZeroTier. Ce que plus tard n'a jamais regretté.

En ces vacances du Nouvel An, essayant de comprendre si la situation avec le contenu a changé depuis ce moment mémorable, j'ai effectué un audit sélectif pour la disponibilité d'articles sur ce sujet, en prenant la source - Habr. À la demande de "ZeroTier" dans les résultats de recherche dont il n'y a que trois articles avec sa mention, et pas un seul, même avec une brève mais description. Et cela malgré le fait que parmi eux il y a une traduction d'un article écrit par le fondateur de ZeroTier, Inc. - Adam Ierymenko .

Les résultats ont déçu et m'ont incité à commencer à parler de ZeroTier plus en détail, épargnant aux «chercheurs» modernes de la nécessité de suivre le même chemin que j'ai suivi.

Alors tu es quoi?


Le développeur positionne ZeroTier comme un commutateur Ethernet intelligent pour la planète Terre.

«Il s'agit d'un hyperviseur de réseau distribué basé sur un réseau peer-to-peer (P2P) mondial cryptographiquement sécurisé. Un outil de type SDN d'entreprise conçu pour organiser des réseaux virtuels au-dessus des réseaux physiques, à la fois locaux et mondiaux, avec la possibilité de connecter presque n'importe quelle application ou appareil. »

Il s'agit plus d'une description marketing, maintenant sur les fonctionnalités technologiques.


▍ Noyau:


L'hyperviseur de réseau ZeroTier est un moteur de virtualisation de réseau autonome qui émule un réseau Ethernet, similaire à VXLAN, sur un réseau peer-to-peer (P2P) crypté global.

Les protocoles utilisés dans ZeroTier sont originaux, bien qu'ils soient similaires en apparence à VXLAN et IPSec et se composent de deux niveaux conceptuellement séparés mais étroitement liés: VL1 et VL2.

Lien vers la documentation

▍VL1 est la couche de transport pair à pair (P2P) de base, à sa manière - un «câble virtuel».


«Un centre de données mondial nécessite une« armoire mondiale »avec des câbles.»

Dans les réseaux conventionnels, L1 (couche OSI 1) fait référence aux câbles ou canaux radio sans fil réels par lesquels les données sont transmises et aux puces physiques des dispositifs d'émission-réception qui les modulent et les démodulent. VL1 est un réseau peer-to-peer (P2P) qui fait de même, en utilisant le chiffrement, l'authentification et d'autres astuces réseau pour organiser les câbles virtuels selon les besoins.

De plus, il le fait automatiquement, rapidement et sans impliquer un utilisateur qui lance un nouveau nœud ZeroTier.

Pour ce faire, VL1 est organisé de manière similaire au système de noms de domaine. Le réseau est basé sur un groupe de serveurs racine hautement accessibles, dont le rôle est similaire au rôle des serveurs de noms racine DNS. À l'heure actuelle, les principaux serveurs racine (planétaires) sont gérés par le développeur - ZeroTier, Inc. et sont fournis en tant que service gratuit.

Cependant, il est possible de créer des serveurs racine personnalisés (lunes) qui permettent:

  • réduire la dépendance à l'infrastructure ZeroTier, Inc.; Lien vers la documentation
  • augmenter la productivité en minimisant les retards;
  • continuer à fonctionner comme d'habitude en cas de perte de connexion Internet.

Initialement, les nœuds démarrent sans connexion directe les uns aux autres.

Chaque homologue sur VL1 possède une adresse ZeroTier unique de 40 bits (10 chiffres hexadécimaux), qui, contrairement aux adresses IP, est un identificateur chiffré qui ne contient pas de données d'itinéraire. Cette adresse est calculée à partir de la partie publique de la paire de clés publique / privée. L'adresse de nœud, la clé publique et la clé privée forment ensemble son identité.

Member ID: df56c5621c       |       ZeroTier address of node 

Quant au cryptage, c'est l'occasion d'un article séparé.

Lien vers la documentation

Pour établir la communication, les pairs envoient d'abord les paquets «vers le haut» via l'arborescence du serveur racine et, au fur et à mesure que ces paquets voyagent à travers le réseau, ils lancent la création aléatoire de canaux directs le long de ce chemin. L'arbre essaie constamment de «s'effondrer» afin de s'optimiser pour le schéma d'itinéraire qu'il stocke.

Le mécanisme d'installation d'égal à égal est le suivant:


  1. Le nœud A veut envoyer un paquet au nœud B, mais comme il ne connaît pas le chemin direct, il l'envoie en amont vers le nœud R (lune, serveur racine utilisateur).
  2. Si le nœud R a une connexion directe avec le nœud B, il y transfère le paquet. Sinon, il envoie le paquet en amont jusqu'à ce qu'il atteigne les racines planétaires. Les racines planétaires connaissent tous les nœuds, de sorte que finalement le paquet atteindra le nœud B s'il est en ligne.
  3. Le nœud R envoie également un message appelé «rendez-vous» au nœud A contenant des indications sur la façon dont il peut atteindre le nœud B. Pendant ce temps, le serveur racine, qui transfère le paquet au nœud B, envoie un «rendez-vous» l'informant de la façon dont il peut atteindre nœud A.
  4. Les nœuds A et B reçoivent leurs messages au rendez-vous et essaient de s'envoyer des messages de test, essayant de percer les «lacunes» du NAT ou des pare-feu contrôlés par l'état rencontrés sur le chemin. Si cela fonctionne, alors une connexion directe est établie, et les packages ne vont plus "jardins".

Si une connexion directe ne peut pas être établie, la connexion continuera via le relais et les tentatives de connexion directe continueront jusqu'à ce qu'un résultat positif soit atteint.

VL1 a également d'autres fonctionnalités pour établir une connexion directe, y compris la découverte d'égal à égal des LAN, la prédiction de port pour la traversée NAT IPv4 symétrique et le mappage de port explicite en utilisant uPnP et / ou NAT-PMP, si disponible sur le LAN physique local.

Lien vers la documentation

▍VL2 - Protocole de virtualisation Ethernet de type VXLAN avec fonctions de gestion SDN. Un environnement de communication familier pour OS et applications ...


Contrairement à VL1, la création de réseaux VL2 (VLAN) et la connexion de nœuds à ceux-ci, ainsi que leur gestion, nécessitent que l'utilisateur participe directement. Il peut le faire à l'aide d'un contrôleur réseau. En fait, il s'agit d'un nœud ZeroTier normal, où les fonctions du contrôleur sont contrôlées de deux manières: soit directement, en modifiant les fichiers, soit, comme le recommande fortement le développeur, en utilisant l'API publiée.

Cette méthode de gestion des réseaux virtuels ZeroTier n'est pas très pratique pour un simple profane, il existe donc plusieurs interfaces graphiques:

  • Un du développeur ZeroTier, disponible en tant que solution de cloud public fournie par le modèle SaaS, avec quatre plans d'abonnement, y compris gratuits, mais limités dans le nombre d'appareils gérés et le niveau de support
  • Le second provient d'un développeur indépendant, quelque peu simplifié dans ses fonctionnalités, mais disponible en tant que solution open source privée, pour une utilisation sur site ou sur des ressources cloud.

La couche VL2 est implémentée au-dessus de VL1 et transportée par elle. En même temps, il hérite du chiffrement et de l'authentification du point de terminaison du niveau VL1, et utilise également ses clés asymétriques pour signer et vérifier les informations d'identification. La couche VL1 vous permet d'implémenter VL2 sans vous soucier de la topologie existante du réseau physique. Autrement dit, les problèmes de connectivité et l'efficacité du routage sont des tâches de niveau VL1. Il est important de comprendre qu'il n'y a pas de connexion entre les réseaux virtuels VL2 et les chemins VL1. Comme le multiplexage VLAN dans un LAN câblé, deux nœuds qui partagent plusieurs appartenances réseau communes n'auront toujours qu'un seul chemin VL1 (câble virtuel) entre eux.

Chaque réseau VL2 (VLAN) est identifié par l'adresse 64 bits (16 chiffres hexadécimaux) du réseau ZeroTier, qui contient l'adresse 40 bits du contrôleur ZeroTier et un numéro 24 bits qui identifie le réseau créé par ce contrôleur.

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

Lorsqu'un nœud rejoint un réseau ou demande une mise à jour de la configuration réseau, il envoie un message de demande de configuration réseau au contrôleur réseau (via le niveau VL1). Le contrôleur utilise ensuite l'adresse VL1 du nœud pour la trouver sur le réseau et lui envoyer les certificats, informations d'identification et informations de configuration appropriés. Du point de vue des réseaux virtuels VL2, les adresses VL1 ZeroTier peuvent être considérées comme des numéros de port sur un énorme commutateur virtuel à l'échelle mondiale.

Toutes les informations d'identification délivrées par les contrôleurs de réseau aux nœuds participant à ce réseau sont signées avec la clé secrète du contrôleur afin que tous les participants du réseau puissent les vérifier. Les informations d'identification ont des horodatages créés par le contrôleur, ce qui permet des comparaisons relatives sans avoir à accéder à l'horloge système locale du nœud.

Les informations d'identification sont délivrées uniquement à leurs propriétaires, puis envoyées aux homologues qui souhaitent échanger des données avec d'autres nœuds du réseau. Cela permet au réseau d'évoluer à une taille énorme sans avoir besoin de mettre en cache une grande quantité d'informations d'identification sur les nœuds ou d'accéder en permanence au contrôleur de réseau.

Les réseaux ZeroTier prennent en charge la multidiffusion via un simple système de publication / abonnement.

Lien vers la documentation

Lorsqu'un nœud souhaite recevoir des messages de multidiffusion pour un groupe de distribution spécifique, il annonce l'appartenance à ce groupe aux autres membres du réseau avec lequel il est connecté et au contrôleur de réseau. Lorsqu'un nœud souhaite envoyer un mailing multicast, il accède simultanément à son cache de publications récentes et demande périodiquement des publications supplémentaires.

La diffusion (Ethernet ff: ff: ff: ff: ff: ff) est considérée comme un groupe de multidiffusion auquel tous les membres sont abonnés. Il peut être désactivé au niveau du réseau pour réduire le trafic s'il n'est pas nécessaire.

ZeroTier émule un véritable commutateur Ethernet. Ce fait permet de combiner les réseaux virtuels créés avec d'autres réseaux Ethernet (LAN câblé, WiFi, fond de panier virtuel, etc.) au niveau de la liaison de données en utilisant un pont Ethernet conventionnel.

Pour agir en tant que pont, le contrôleur de réseau doit désigner le nœud de réseau en tant que tel. Ce schéma est mis en œuvre pour des raisons de sécurité, car les nœuds de réseau ordinaires ne sont pas autorisés à envoyer du trafic à partir d'une source autre que leur adresse MAC. Les nœuds désignés par des ponts utilisent également un mode spécial de l'algorithme d'adressage multidiffusion, qui interagit avec eux de manière plus agressive et adressée lors des abonnements de groupe et de la réplication de tout le trafic de diffusion et des requêtes ARP.

Le commutateur a également la possibilité de créer des réseaux publics et ad-hoc, un mécanisme de QoS et un éditeur de règles de réseau.

▍Nœud:


ZeroTier One est un service qui s'exécute sur des ordinateurs portables, des ordinateurs de bureau, des serveurs, des machines virtuelles et des conteneurs, qui fournit des connexions à un réseau virtuel via un port réseau virtuel, comme un client VPN.

Après avoir installé et démarré le service, vous pouvez vous connecter à des réseaux virtuels en utilisant leurs adresses à 16 chiffres. Chaque réseau ressemble à un port réseau virtuel du système, qui se comporte de la même manière qu'un port Ethernet standard.

ZeroTier One est actuellement disponible pour les systèmes d'exploitation et systèmes suivants.

Systèmes d'exploitation:

  • Microsoft Windows - Programme d'installation MSI x86 / x64
  • MacOS - programme d'installation PKG
  • Apple iOS - App Store
  • Android - Play Store
  • Linux - DEB / RPM
  • FreeBSD - Paquet FreeBSD

NAS:

  • Synology NAS
  • NAS QNAP
  • NAS WD MyCloud

Autres:

  • Docker - fichier docker
  • OpenWRT - port communautaire
  • Intégration d' applications - SDK (libzt)

Pour résumer tout ce qui précède, je voudrais noter que ZeroTier est un excellent et rapide outil pour combiner vos ressources physiques, virtuelles ou cloud en un réseau local commun, avec la possibilité de le diviser en VLAN et l'absence d'un seul point de défaillance.

À ce sujet avec une partie théorique dans un format du premier article sur ZeroTier pour Habr - probablement tous! Dans le prochain article, je prévois de démontrer en pratique la création d'une infrastructure de réseau virtuel basée sur ZeroTier, où VDS avec un modèle GUI open source privé sera utilisé comme contrôleur de réseau.

Chers lecteurs! Utilisez-vous la technologie ZeroTier dans vos projets? Sinon, quels outils utilisez-vous pour combiner vos ressources en un réseau commun?

Source: https://habr.com/ru/post/fr484178/


All Articles