Switch Ethernet intelligent pour la planète Terre

Switch Ethernet intelligent pour la planète Terre
« Vous pouvez créer une solution (résoudre un problème) de plusieurs manières, mais la méthode la plus coûteuse et/ou la plus populaire n’est pas toujours la plus efficace !

Préambule

Il y a environ trois ans, lors du développement d'un modèle à distance de récupération de données après sinistre, j'ai rencontré un obstacle qui n'a pas été immédiatement remarqué : le manque d'informations sur les nouvelles solutions originales de virtualisation de réseau dans les sources communautaires. 

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

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

Dans un premier temps, j'ai implémenté ce modèle en utilisant un serveur VPN sur un routeur local d'un réseau sous mon contrôle, puis sur un VDS loué. Mais, comme cela arrive souvent et selon la première loi de Chisholm, s’il pleut, le réseau du fournisseur Internet tombera en panne, puis les litiges entre entités commerciales feront perdre « de l’énergie » au fournisseur de services...

Par conséquent, j'ai décidé de formuler d'abord les exigences de base auxquelles l'outil nécessaire doit répondre. Le premier est la décentralisation. Deuxièmement, étant donné que je possède plusieurs clés USB de ce type, chacune d'entre elles dispose d'un réseau isolé distinct. Eh bien, troisièmement, une connexion rapide au réseau de divers appareils et une gestion simple de ceux-ci, 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 à rechercher pratiquement plusieurs options peu adaptées, j'ai décidé, à mes risques et périls, d'essayer un autre outil d'une startup que je ne connaissais pas à l'époque appelée ZeroTier. Ce que je n'ai jamais regretté par la suite.

Pendant ces vacances du Nouvel An, essayant de comprendre si la situation du contenu a changé depuis ce moment mémorable, j'ai mené un audit sélectif de la disponibilité des articles sur ce sujet, en utilisant Habr comme source. Pour la requête « ZeroTier » dans les résultats de recherche, seuls trois articles la mentionnent, et aucun avec au moins une brève description. Et ce malgré le fait que parmi eux se trouve une traduction d'un article écrit par le fondateur de ZeroTier, Inc. lui-même. — Adam Ierymenko.

Les résultats ont été décevants et m'ont incité à commencer à parler de ZeroTier plus en détail, évitant ainsi aux « chercheurs » modernes d'avoir à suivre le même chemin que moi.

Alors qu'est-ce que tu es ?

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é construit sur un réseau peer-to-peer (P2P) mondial sécurisé cryptographiquement. Un outil similaire à un commutateur SDN d'entreprise, conçu pour organiser des réseaux virtuels sur des réseaux physiques, à la fois locaux et mondiaux, avec la possibilité de connecter presque n'importe quelle application ou appareil.

Il s’agit davantage d’une description marketing, maintenant des caractéristiques technologiques.

▍Noyau : 

ZeroTier Network Hypervisor est un moteur de virtualisation de réseau autonome qui émule un réseau Ethernet, similaire à VXLAN, au-dessus d'un réseau peer-to-peer (P2P) mondial crypté.

Les protocoles utilisés dans ZeroTier sont originaux, bien que d'apparence similaire à VXLAN et IPSec et se composent de deux couches conceptuellement distinctes, mais étroitement liées : VL1 et VL2.

Lien vers la documentation

▍VL1 est une couche de transport peer-to-peer (P2P) de base, une sorte de « câble virtuel ».

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

Dans les réseaux conventionnels, L1 (OSI Layer 1) fait référence aux câbles ou aux radios sans fil qui transportent les données et aux puces physiques du dispositif émetteur-récepteur qui les modulent et les démodulent. VL1 est un réseau peer-to-peer (P2P) qui fait la même chose, en utilisant le cryptage, 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 l'implication de l'utilisateur qui lance un nouveau nœud ZeroTier.

Pour y parvenir, VL1 est organisé de manière similaire au système de noms de domaine. Au cœur du réseau se trouve un groupe de serveurs racine hautement disponibles, dont le rôle est similaire à celui des serveurs de noms racine DNS. À l'heure actuelle, les principaux serveurs racine (planétaires) sont sous le contrôle du développeur - ZeroTier, Inc. et sont fournis sous forme de service gratuit. 

Il est cependant possible de créer des serveurs racine personnalisés (lun) qui permettent de :

  • réduire la dépendance à l'égard de l'infrastructure de ZeroTier, Inc. ; Lien vers la documentation
  • augmenter la productivité en minimisant les retards ; 
  • continuez à fonctionner normalement si la connexion Internet est perdue.

Initialement, les nœuds sont lancés sans connexion directe les uns aux autres. 

Chaque homologue sur VL1 possède une adresse ZeroTier unique de 40 bits (10 hexadécimaux) qui, contrairement aux adresses IP, est un identifiant crypté qui ne contient aucune information de routage. Cette adresse est calculée à partir de la partie publique de la bi-clé publique/privée. L'adresse, la clé publique et la clé privée d'un nœud forment ensemble son identité.

Member ID: df56c5621c  
            |
            ZeroTier address of node

Quant au cryptage, c'est la raison pour laquelle un article séparé est publié.

Lien vers la documentation

Pour établir la communication, les homologues envoient d'abord des paquets « en haut » de l'arborescence des serveurs racine, et à mesure que ces paquets voyagent à travers le réseau, ils lancent la création aléatoire de canaux de transfert en cours de route. L'arbre essaie constamment de « s'effondrer tout seul » afin de s'optimiser pour la feuille de route qu'il stocke.

Le mécanisme pour établir une connexion peer-to-peer est le suivant :

Switch Ethernet intelligent pour la planète Terre

  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 au nœud R (moon, le serveur racine de l'utilisateur).
  2. Si le nœud R a une connexion directe avec le nœud B, il y transmet le paquet. Sinon, il envoie le paquet en amont avant d'atteindre les racines planétaires. Les racines planétaires connaissent tous les nœuds, donc le paquet finira par atteindre 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 manière dont il peut atteindre le nœud B. Pendant ce temps, le serveur racine, qui transmet le paquet au nœud B, envoie un « rendez-vous » l'informant de la manière dont il peut atteindre le nœud B. atteindre le nœud A.
  4. Les nœuds A et B reçoivent leurs messages de rendez-vous et tentent de s'envoyer des messages de test pour tenter de violer tout NAT ou pare-feu avec état rencontré en cours de route. Si cela fonctionne, une connexion directe est établie et les paquets ne circulent plus.

Si une connexion directe ne peut pas être établie, la communication continuera via le relais et les tentatives de connexion directe se poursuivront jusqu'à ce qu'un résultat réussi soit obtenu. 

VL1 possède également d'autres fonctionnalités permettant d'établir une connectivité directe, notamment la découverte d'homologues LAN, la prédiction de port pour la traversée du NAT IPv4 symétrique et le mappage de port explicite à l'aide d'uPnP et/ou de NAT-PMP s'il est disponible sur le LAN physique local.

→ Lien vers la documentation

▍VL2 est un protocole de virtualisation de réseau Ethernet de type VXLAN avec des fonctions de gestion SDN. Environnement de communication familier pour le système d'exploitation et les applications...

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

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

  • Celui du développeur ZeroTier, disponible sous forme de solution SaaS de cloud public avec quatre plans d'abonnement, dont gratuit, mais limité en nombre d'appareils gérés et en niveau de support
  • La seconde provient d'un développeur indépendant, aux fonctionnalités quelque peu simplifiées, mais disponible en tant que solution open source privée pour une utilisation sur site ou sur des ressources cloud.

VL2 est implémenté au-dessus de VL1 et est transporté par celui-ci. Cependant, il hérite du cryptage et de l'authentification du point de terminaison VL1 et utilise également ses clés asymétriques pour signer et vérifier les informations d'identification. VL1 vous permet d'implémenter VL2 sans vous soucier de la topologie du réseau physique existant. Autrement dit, les problèmes de connectivité et d'efficacité du routage sont des problèmes VL1. Il est important de comprendre qu’il n’existe aucune connexion entre les réseaux virtuels VL2 et les chemins VL1. Semblable au multiplexage VLAN dans un réseau local câblé, deux nœuds partageant plusieurs appartenances au réseau n'auront toujours qu'un seul chemin VL1 (câble virtuel) entre eux.

Chaque réseau VL2 (VLAN) est identifié par une adresse réseau ZeroTier de 64 bits (16 hexadécimaux), qui contient l'adresse ZeroTier de 40 bits du contrôleur et un numéro de 24 bits identifiant 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 (via VL1) au contrôleur réseau. Le contrôleur utilise ensuite l'adresse VL1 du nœud pour le 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 mondial.

Toutes les informations d'identification délivrées par les contrôleurs de réseau aux nœuds membres d'un réseau donné 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 générés par le contrôleur, permettant une comparaison relative sans avoir à accéder à l'horloge système locale de l'hôte. 

Les informations d'identification sont délivrées uniquement à leurs propriétaires, puis envoyées aux pairs qui souhaitent communiquer avec d'autres nœuds du réseau. Cela permet au réseau d'atteindre des tailles énormes sans avoir besoin de mettre en cache de grandes quantités d'informations d'identification sur les nœuds ou de contacter constamment le contrôleur réseau.

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

Lien vers la documentation

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

Une diffusion (Ethernet ff : ff : ff : ff : ff : ff) est traitée comme un groupe de multidiffusion auquel tous les participants 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 nous permet de réaliser 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 classique.

Pour faire office de pont, le contrôleur réseau doit désigner un hôte comme tel. Ce schéma est mis en œuvre pour des raisons de sécurité, puisque les hôtes réseau normaux ne sont pas autorisés à envoyer du trafic provenant d'une source autre que leur adresse MAC. Les nœuds désignés comme ponts utilisent également un mode spécial de l'algorithme de multidiffusion, qui interagit avec eux de manière plus agressive et ciblé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 capacité de créer des réseaux publics et ad hoc, un mécanisme de QoS et un éditeur de règles réseau.

▍Nœud :

Zéro niveau un est un service fonctionnant 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, similaire à un client VPN. 

Une fois le service installé et démarré, vous pouvez vous connecter aux réseaux virtuels en utilisant leurs adresses à 16 chiffres. Chaque réseau apparaît comme un port réseau virtuel sur le système, qui se comporte comme un port Ethernet classique.

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

Systèmes d'exploitation:

  • Microsoft Windows -Installateur MSI x86/x64
  • MacOS - Installateur PKG
  • apple iOS - Magasin d'applications
  • Android — Play Store
  • Linux/Unix - DEB/RPM
  • FreeBSD - Paquet FreeBSD

NAS:

  • Synology NAS
  • NAS QNAP
  • NAS WD MyCloud

D'autres:

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

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

C'est tout pour la partie théorique sous la forme du premier article sur ZeroTier pour Habr - c'est probablement tout ! 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ù un VDS avec un modèle d'interface graphique 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 mettre en réseau vos ressources ?

Switch Ethernet intelligent pour la planète Terre

Source: habr.com

Ajouter un commentaire