URL: https://linuxfr.org/news/une-nouvelle-version-de-cloonix-est-disponible-la-v-37-00 Title: Une nouvelle version de Cloonix est disponible, la v-37-00. Authors: clownix ZeroHeure, Davy Defaud, palm123 et Pierre Jarillon Date: 2017年07月22日T16:27:03+02:00 License: CC By-SA Tags: cloonix Score: 24 Cloonix est un projet sans prétention ni financement, pur produit de l’artisanat, c’est un ovni dans un monde où la communication a été transformée en harcèlement publicitaire et où la réduction des coûts et délais prime sur la conscience professionnelle. Le projet [Cloonix a déjà 10 ans](https://linuxfr.org/news/cloonix-cr%C3%A9ation-graphique-de-r%C3%A9seaux-virtuels), il reste discret bien que techniquement mature et efficace.  C’est un outil d’aide à la gestion de la virtualisation de réseaux sous licence AGPL v3, le projet a commencé alors que KVM n’existait pas encore, il est le fruit d’un travail continu _motivé par le plaisir de l’artisan_. Son but ultime est de regrouper tous les logiciels libres ayant une composante réseau en un ensemble de démonstrations jouables sans effort de configuration. Cette nouvelle version est capable de gérer un **routeur propriétaire Cisco CSR 1000v**. Il a fallu de l’astuce pour parvenir au résultat, c’est ce que la seconde partie expose. ---- [Site Web, machines virtuelles et documentation de Cloonix](http://virtual-network-kvm.net/) [Dépôt GitHub de Cloonix](https://github.com/clownix/cloonix) [Fichier de la démo Cisco](http://cloonix.fr/demo_stored/v-37-00/cisco.tar.gz) ---- Le Libre est un monde trop jeune et chaotique pour qu’il y ait un guide de l’existant fiable, il faut tester les logiciels pour s’en faire une idée. À chaque essai d’un logiciel, il faut commencer par un contexte de distribution, de bibliothèques, d’autres logiciels préexistants, puis il faut configurer le logiciel lui‐même dans son contexte. Ce sont des manipulations laborieuses répétées sans mutualisation. Le succès des solutions à base de conteneur (_container_) provient de la stabilisation du contexte pour présenter un logiciel avec son environnement intégré. La valeur ajouté de Cloonix sera dans les démonstrations très vivantes, qui tournent sans intervention, à part le lancement du script de démo. Il en existe déjà [une dizaine](http://cloonix.fr/demo_stored/v-37-00/), j’espère augmenter la cadence de production avec la stabilisation du travail sur l’outil lui‐même. # Reprenons le pourquoi de cet article Cloonix est un logiciel discret la plupart du temps mais, pour cette version, je voudrais essayer de transmettre un peu du plaisir de l’artisan. Ce plaisir est moins perceptible par nos sens et plus difficile à partager que ce qui est audible, visible ou palpable. Malgré cela, la nouvelle fonctionnalité astucieuse implémentée dans cette version est source de satisfaction. # Le but de ladite fonctionnalité Pour les besoins d’un collègue de travail, il fallait qu’un réseau de routeurs Cisco virtuels de la [famille CSR 1000v](http://www.cisco.com/c/en/us/products/routers/cloud-services-router-1000v-series/index.html) puisse être démarré à partir d’un _qcow2_ unique, puis configuré dynamiquement par fichier, sans jamais avoir les droits administrateur sur la machine hôte accueillant le réseau Cloonix. Ces Ciscos devaient aussi être accessibles le plus simplement possible, comme le sont déjà les machines classiques GNU/Linux gérées par Cloonix. # Oui, mais comment ? Tout de suite les classiques _ssh_ et _scp_ viennent à l’esprit, car il n’est pas question de faire tourner un agent Cloonix dans le binaire hyper‐fermé de Cisco, afin d’avoir le pseudo‐ssh existant pour les machines virtuelles GNU/Linux dans Cloonix. Le problème devient évident : on a du TCP/IP côté Cisco et un fichier sans pile IP du côté de l’hôte. La solution consiste donc à transférer le fichier en flux d’octets respectant SSH à travers un _socket_ UNIX côté hôte, puis sur le chemin vers l’interface Cisco, passer le flux d’octets de données en TCP/IP pour être accueilli par le serveur SSH de Cisco, comme s’il venait d’un SSH passé par une pile IP classique. En prérequis, on fabrique un fichier _qcow2_ pour émuler un Cisco. Dans cette machine virtuelle, la première interface est configurée en DHCP, on autorise le SCP et on place une clef publique de Cloonix pour avoir une connexion SSH/SCP sans mot de passe vers l’utilisateur _cisco_. Pour l’autre extrémité, on télécharge le dernier OpenSSH (openssh-7.5p1), puis on le modifie avec un correctif afin qu’il ouvre un _socket_ UNIX et non plus TCP. Entre ces deux extrémités, il y a encore deux intervenants : `cloonix_doorways`, qui sert à séparer le client du serveur dans Cloonix, puis un `nat`, qui est une entité du réseau de Cloonix capable de générer du TCP à partir d’un flux d’octets. Le `nat` est déjà utilisé pour surfer sur le Web, il fournit du TCP réel avec [SYN/ACK](https://fr.wikipedia.org/wiki/Transmission_Control_Protocol#.C3.89tablissement_d.27une_connexion) en partant du flux de données d’un socket TCP utilisateur. Le chemin du flux d’octets est donc : openssh modifié ⇄ client Cloonix ⇄ serveur Cloonix ⇄ nat ⇄ sshd/Cisco. La commande est sous la forme : `cloonix_osh nemo nat cisco@nom_vm`. - `nemo` permet d’atteindre le serveur Cloonix (le fichier de configuration de Cloonix donne l’adresse IP et le port par nom) ; - `nat` permet, sur le serveur, de trouver le socket UNIX du `nat` qui est connecté à la machine virtuelle, le `nat` connaît la bijection (adresse IP ⇄ nom de la MV), il initie la communication TCP. Si vous avez un PC avec 12 Gio de mémoire vive (Cisco ne marche pas bien à moins de 3 Gio), alors vous pouvez essayer la démo Cloonix qui fait de l’[[OSPF]] entre trois routeurs Ciscos. Dans la démo, il y a le _howto_ pour la création de la machine virtuelle Cisco `csr1000v.qcow2` adaptée à Cloonix, j’ai vu sur le Web que le CSR 1000v était supposé être gratuit car bridé, mais il n’est pas simple à obtenir à travers la voie officielle Cisco.