« Gns3 » : différence entre les versions

De Wiki doc

(→‎Méthode pyhton3 PIP : Ajout de deux bulles d'informations.)
(→‎Utilisation des Ios On Unix (IOU) : Ajout d'un script de génération de clés de licence pour Python3)
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 1 : Ligne 1 :
[[Category:réseaux_linux]]
[[Category:réseaux_linux]]
GNS3 est un logiciel de simulation réseau. il peut simuler des matériels de l'équipementier Cisco en exploitant de vrais IOS; exploiter ''qemu'' au travers du framework ''libvirt'' pour émuler des équipements; utiliser Docker ; intégrer des IOS tournant directement sous Linux afin d'ajouter des commutateurs de niveau 3 et plus encore. Nous nous trouvons donc avec des équipements virtuels qui réagissent comme des équipement physiques et qui, après avoir été reliés au monde réel par l'intermédiaire d'un pont sur la carte réseau de l'hôte, peuvent communiquer avec leurs pairs physiques de la même manière que de vrai équipements.
[https://github.com/GNS3/gns3-gui GNS3] est un logiciel de simulation réseau. il peut simuler des matériels de l'équipementier ''Cisco'' en exploitant de vrais ''IOS'' ; exploiter ''qemu'' au travers du cadriciel ''libvirt'' pour émuler des équipements ; utiliser ''Docker'' ; intégrer des ''IOS'' tournant directement sous ''Linux'' afin d'ajouter des commutateurs de niveau 3 et plus encore. Nous nous trouvons donc avec des équipements virtuels qui réagissent comme des équipement physiques et qui, après avoir été reliés au monde réel par l'intermédiaire d'un pont sur la carte réseau de l'hôte, peuvent communiquer avec leurs pairs physiques de la même manière que de vrai équipements.
 
{{info|Testé avec la version 2.0 sortie le 02/05/2017}}
{{info|Testé avec la version 2.0 sortie le 02/05/2017}}


=Téléchargement=
=Téléchargement=
GNS3 fait partie de ces logiciels casses couilles qui nécessitent un compte pour être téléchargé. Comme je ne supporte pas cette pratique (d'autant plus que ça ce dit "logiciel libre" - pas très libre comme façon de faire), j'ai donc recensé les liens SourceForge du projet (c'est surtout utile si vous voulez le compiler vous-même ou si vous utilisez Mac OS X ou Windows). Pour les distributions Linux, vous trouverez la plupart du temps un binaire dans les dépôts.
Partie obsolète. Passez par [https://github.com/GNS3/gns3-gui GitHub].
''GNS3'' fait partie de ces logiciels casses couilles qui nécessitent un compte pour être téléchargé. Comme je ne supporte pas cette pratique (d'autant plus que ça se dit "logiciel libre" - pas très libre comme façon de faire), j'ai donc recensé les liens ''SourceForge'' du projet (c'est surtout utile si vous voulez le compiler vous-même ou si vous utilisez Mac OS X ou Windows). Pour les distributions Linux, vous trouverez la plupart du temps un binaire dans les dépôts.


* '''Linux:''' https://sourceforge.net/projects/gns-3/files/Nightly%20Builds/2018-02-28/2.2/GNS3-2.2.0dev1.source.zip/download
* '''Linux :''' https://sourceforge.net/projects/gns-3/files/Nightly%20Builds/2018-02-28/2.2/GNS3-2.2.0dev1.source.zip/download
* '''Mac:''' https://sourceforge.net/projects/gns-3/files/Releases/v2.1.3/GNS3-2.1.3.dmg/download
* '''Mac :''' https://sourceforge.net/projects/gns-3/files/Releases/v2.1.3/GNS3-2.1.3.dmg/download
* '''Windows:''' https://sourceforge.net/projects/gns-3/files/Releases/v2.1.3/GNS3-2.1.3-all-in-one.exe/download
* '''Windows :''' https://sourceforge.net/projects/gns-3/files/Releases/v2.1.3/GNS3-2.1.3-all-in-one.exe/download
Dépôt du projet:
Dépôt du projet :
* https://sourceforge.net/projects/gns-3/files
* https://sourceforge.net/projects/gns-3/files
* https://sourceforge.net/projects/gns-3/files/Nightly%20Builds/2018-02-28
* https://sourceforge.net/projects/gns-3/files/Nightly%20Builds/2018-02-28


=Installation=
=Installation=
La version de GNS3 disponible dans les dépôts Debian est affligeante, il s'agit d'une très ancienne version (elle ne permet même pas de supprimer les câbles que l'on connectes aux équipements...), nous allons donc ajouter le dépôt du projet pour être à jour.
{{info|Mise à jour du 23/08/2024 : depuis ''Debian 12'', '''seule''' la [[#Méthode_python3_PIP|méthode Python3 PIP]] est supporté via le paramètre d'installation <code>--break-system-packages</code>. La section dédiée a été actualisée en conséquence. Veuillez noter également que l'installation ne fonctionne plus sur ''Debian Sid'' à cette même date. La procédure va donc logiquement probablement changer pour la version 13... Un ticket sur la confection d'un paquet portable est ouvert sur le dépôt [https://github.com/GNS3/gns3-gui/issues/2911 GitHub] du projet sans grande avancée à ce stade. Cela pourrait régler le problème épineux de l'installation et des mises à jours de cet outil à terme.}}


Depuis une installation via debootstrap, le paquet <source lang="bash" inline>dirmngr</source> est absent et est nécessaire à l'importation des clés GPG. Il faut l'installer
apt install dirmngr
{{info|Sous Debian Stretch, la dépendance ''libvirt-bin'' ne peut être satisfaite car il s'agit d'un paquet de transition qui s'est vu découpé en deux paquets nommés ''libvirt-daemon-system'' et ''libvirt-clients'' (voir [https://lists.debian.org/debian-user/2016/11/msg00518.html ici]). Le problème c'est que sans un paquet qui s'appel ''libvirt-bin'', GNS3 est impossible à installer (et c'est pas faute d'avoir essayé, merci le gestionnaire de paquet ''apt'' qui sait se comporter comme une grosse merde quand il le faut). J'ai donc mis au point deux solution pour palier au problème. L'une exploite ''apt'' et une bidouille avec son ''sources.list'', l'autre utilise directement ''dpkg'' pour contourner le problème. Je conseil vivement d'utiliser la solution ''apt''.}}
Le paquet ''telnet'' sera également utile pour la connexion aux équipements virtuels
Le paquet ''telnet'' sera également utile pour la connexion aux équipements virtuels
  apt install telnet
  apt install telnet


==Méthode APT==
==Méthode python3 PIP==
Comme nous l'avons vu, le paquet ''libvirt-bin'' n'est pas disponible dans les dépôts Stretch suite à un changement programmé de stratégies de ses mainteneurs. Cependant il est présent dans ceux de Debian Jessie puisque il en été au stade de transition à ce moment là. Jessie n'étant pas très différent de Stretch, il n'y a pas de risques de stabilité en confondant ce paquet avec les autres. Nous allons donc combiner les dépôts de Jessie avec ceux de Stretch pour avoir ce qu'il nous faut. Pas de panique, ''apt'' n'étant pas si mal fait, il prendra toujours les paquets avec un numéros de version plus récent. Ce qui garanti que Seul les paquets absents de Stretch seront piochés dans Jessie.
GNS3 est installable depuis le gestionnaire de paquet de ''Python3''. Cette méthode est la seule fonctionnelle sous ''Debian 12'' en 2024 :
 
Ajouter les dépôts de GNS3 et Debian Jessie dans Stretch
echo -e '#GNS3\ndeb http://ppa.launchpad.net/gns3/ppa/ubuntu xenial main\n#Debian jessie (pour avoir le paquet libvirt-bin)\ndeb http://ftp.fr.debian.org/debian jessie main' >> /etc/apt/sources.list
 
{{attention|Avec ''Debian sid/buster'', il faut remplacer la branche '''xenial''' du dépôt '''http://ppa.launchpad.net/gns3/ppa/ubuntu''' par '''bionic'''.}}
 
Ajout de la clé GPG des dépôts GNS3
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F88F6D313016330404F710FC9A2FD067A2E3EF7B
 
Mise à jour de la base ''apt''
apt update
 
Installation de GNS3
apt install gns3-gui
 
Attribution des droits à l'outil ''ubridge''
chmod 777 /usr/bin/ubridge
setcap cap_net_admin,cap_net_raw=ep /usr/bin/ubridge
 
==Méthode pyhton3 PIP==
GNS3 est installable depuis le gestionnaire de paquet de python3. Cette méthode est la plus simple:
  apt install python3-pip
  apt install python3-pip
apt install python3-pyqt5.qtsvg python3-pyqt5.qtwebsockets


  pip3 install sip gns3-gui gns3-server pyqt5
  pip3 install --break-system-packages -U gns3-gui gns3-server PyQt5-sip PyQt5 aiohttp


  wget https://doc.ycharbi.fr/fichiers/réseaux/gns3/ubridge -P /usr/bin/
  wget https://doc.ycharbi.fr/fichiers/réseaux/gns3/ubridge -P /usr/bin/
  chmod 777 /usr/bin/ubridge
  chmod 777 /usr/bin/ubridge


''Note: le binaire de ubridge est celui des dépôts Debian Sid au 17/02/2019.''
''Note : le binaire de ubridge est celui des dépôts Debian Sid au 17/02/2019.''


{{info|Depuis la version 2.2.5 sortie le 9 janvier 2020, la suite est automatique. Vous pouvez vous arrêter là pour la méthode ''pyhton3 PIP''.}}
{{info|Depuis la version 2.2.5 sortie le 9 janvier 2020, la suite est automatique. Vous pouvez vous arrêter là pour la méthode ''python3 PIP''.}}


Télécharger l'icône de l'application:
Télécharger l'icône de l'application :
<source lang="bash">
<syntaxhighlight lang="bash">
wget https://doc.ycharbi.fr/fichiers/réseaux/gns3/images/gns3.png -P /usr/share/icons/hicolor/48x48/apps/
wget https://doc.ycharbi.fr/fichiers/réseaux/gns3/images/gns3.png -P /usr/share/icons/hicolor/48x48/apps/
</source>
</syntaxhighlight>


Et créer le lanceur:
Et créer le lanceur :
  vim /usr/share/applications/gns3.desktop
  vim /usr/share/applications/gns3.desktop


<source lang="bash">
<syntaxhighlight lang="ini">
[Desktop Entry]
[Desktop Entry]
Version=1.0
Version=1.0
Ligne 76 : Ligne 55 :
MimeType=application/x-gns3;application/x-gns3a;application/x-gns3project;
MimeType=application/x-gns3;application/x-gns3a;application/x-gns3project;
Keywords=simulator;network;netsim;
Keywords=simulator;network;netsim;
</source>
</syntaxhighlight>
 
Pour mettre à jour :
pip3 install --break-system-packages -U sip gns3-gui gns3-server PyQt5-sip PyQt5 aiohttp
 
{{info|Si une des dépendances pose problème (c'était le cas pour ''pyqt5'' en version 5.14.1 vers fin 2019 - début 2020), il est possible d'en installer une version spécifique en la précisant ainsi : <code>pyqt5{{=}}{{=}}5.14.0</code>. Le paquet a depuis changé de casse dans son nom comme vous pouvez le constater dans la ligne ce-dessus... Cet écosystème est insupportable. Il faut faire une veille constante, ce qui rend chaque mises à jours risquées et le maintient d'une documentation fonctionnelle impossible.}}
 
==Méthode APT==
Méthode obsolète. Utilisez la [[#Méthode_python3_PIP|méthode Python3 PIP]].
 
La version de ''GNS3'' disponible dans les dépôts ''Debian'' est affligeante, il s'agit d'une très ancienne version (elle ne permet même pas de supprimer les câbles que l'on connectes aux équipements...), nous allons donc ajouter le dépôt du projet pour être à jour.
 
Depuis une installation via ''debootstrap'', le paquet <code>dirmngr</code> est absent et est nécessaire à l'importation des clés ''GPG''. Il faut l'installer
apt install dirmngr
 
{{info|Sous Debian Stretch, la dépendance ''libvirt-bin'' ne peut être satisfaite car il s'agit d'un paquet de transition qui s'est vu découpé en deux paquets nommés ''libvirt-daemon-system'' et ''libvirt-clients'' (voir [https://lists.debian.org/debian-user/2016/11/msg00518.html ici]). Le problème c'est que sans un paquet qui s'appel ''libvirt-bin'', GNS3 est impossible à installer (et c'est pas faute d'avoir essayé, merci le gestionnaire de paquet ''apt'' qui sait se comporter comme une grosse merde quand il le faut). J'ai donc mis au point deux solution pour palier au problème. L'une exploite ''apt'' et une bidouille avec son ''sources.list'', l'autre utilise directement ''dpkg'' pour contourner le problème. Je conseil vivement d'utiliser la solution ''apt''.}}
 
Comme nous l'avons vu, le paquet ''libvirt-bin'' n'est pas disponible dans les dépôts ''Stretch'' suite à un changement programmé de stratégies de ses mainteneurs. Cependant il est présent dans ceux de Debian Jessie puisque il en été au stade de transition à ce moment là. ''Jessie'' n'étant pas très différent de ''Stretch'', il n'y a pas de risques de stabilité en confondant ce paquet avec les autres. Nous allons donc combiner les dépôts de ''Jessie'' avec ceux de ''Stretch'' pour avoir ce qu'il nous faut. Pas de panique, ''apt'' n'étant pas si mal fait, il prendra toujours les paquets avec un numéros de version plus récent. Ce qui garanti que Seul les paquets absents de ''Stretch'' seront piochés dans ''Jessie''.
 
Ajouter les dépôts de ''GNS3'' et ''Debian Jessie'' dans ''Stretch''
echo -e '#GNS3\ndeb http://ppa.launchpad.net/gns3/ppa/ubuntu xenial main\n#Debian jessie (pour avoir le paquet libvirt-bin)\ndeb http://ftp.fr.debian.org/debian jessie main' >> /etc/apt/sources.list
 
{{attention|Avec ''Debian sid/buster'', il faut remplacer la branche '''xenial''' du dépôt '''http://ppa.launchpad.net/gns3/ppa/ubuntu''' par '''bionic'''.}}
 
Ajout de la clé ''GPG'' des dépôts ''GNS3''
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F88F6D313016330404F710FC9A2FD067A2E3EF7B
 
Mise à jour de la base ''apt''
apt update


Pour mettre à jour:
Installation de ''GNS3''
  pip3 install --upgrade sip gns3-gui gns3-server pyqt5
  apt install gns3-gui


{{info|Si une des dépendances pose problème (c'était le cas pour ''pyqt5'' en version 5.14.1 vers fin 2019 - début 2020), il est possible d'en installer une version spécifique en la précisant ainsi: <source lang="bash" inline>pyqt5==5.14.0</source>.}}
Attribution des droits à l'outil ''ubridge''
chmod 777 /usr/bin/ubridge
setcap cap_net_admin,cap_net_raw=ep /usr/bin/ubridge


==Méthode DPKG==
==Méthode DPKG==
Cette méthode a été testé avec GNS3 1.5.3. Elle est fonctionnelle mais en plus de sa lourdeur, elle ne permet pas une monté en version simple. Elle reste toutefois plus abordable que la compilation depuis les sources et a été documenté car je me suis bien fait chier pour la pondre quand j'en avais besoin.
Cette méthode a été testé avec ''GNS3 1.5.3''. Elle est fonctionnelle mais en plus de sa lourdeur, elle ne permet pas une monté en version simple. Elle reste toutefois plus abordable que la compilation depuis les sources et a été documenté car je me suis bien fait chier pour la pondre quand j'en avais besoin.


Installation des dépendances de ''gns3-gui'' (j'ai enlevé gns3-server qui réclame ''libvirt-bin'' qui n'existe pas)
Installation des dépendances de ''gns3-gui'' (j'ai enlevé ''gns3-server'' qui réclame ''libvirt-bin'' qui n'existe pas)
  apt install python3 python3-pyqt5 python3-pyqt5.qtsvg wireshark vinagre libc6 libexpat1 zlib1g
  apt install python3 python3-pyqt5 python3-pyqt5.qtsvg wireshark vinagre libc6 libexpat1 zlib1g
Installation des dépendances de ''gns3-server'' (j'ai enlevé ''libvirt-bin'' qui n'existe pas)
Installation des dépendances de ''gns3-server'' (j'ai enlevé ''libvirt-bin'' qui n'existe pas)
  apt install python3 vpcs qemu-system-x86 qemu-system-arm qemu-kvm cpulimit x11vnc xvfb libc6 libexpat1 zlib1g
  apt install python3 vpcs qemu-system-x86 qemu-system-arm qemu-kvm cpulimit x11vnc xvfb libc6 libexpat1 zlib1g
Téléchargement des dépendances non disponibles dans les dépôts Debian
 
Téléchargement des dépendances non disponibles dans les dépôts ''Debian''
  wget http://ppa.launchpad.net/gns3/ppa/ubuntu/pool/main/d/dynamips/dynamips_0.2.16-1~xenial1_amd64.deb http://ppa.launchpad.net/gns3/ppa/ubuntu/pool/main/u/ubridge/ubridge_0.9.11-1~yakkety_amd64.deb
  wget http://ppa.launchpad.net/gns3/ppa/ubuntu/pool/main/d/dynamips/dynamips_0.2.16-1~xenial1_amd64.deb http://ppa.launchpad.net/gns3/ppa/ubuntu/pool/main/u/ubridge/ubridge_0.9.11-1~yakkety_amd64.deb
Installation manuelle des dépendances non disponibles dans les dépôts Debian (dépot GNS3) pour gns3-server
 
Installation manuelle des dépendances non disponibles dans les dépôts Debian (dépôt ''GNS3'') pour ''gns3-server''
  dpkg -i dynamips_0.2.16-1~xenial1_amd64.deb ubridge_0.9.11-1~xenial_amd64.deb
  dpkg -i dynamips_0.2.16-1~xenial1_amd64.deb ubridge_0.9.11-1~xenial_amd64.deb
Installation de ''gns3-server'' sans ''libvirt-bin''
Installation de ''gns3-server'' sans ''libvirt-bin''
  dpkg -i --ignore-depends=libvirt-bin gns3-server_1.5.4~xenial1_amd64.deb
  dpkg -i --ignore-depends=libvirt-bin gns3-server_1.5.4~xenial1_amd64.deb
Installation de ''gns3-gui''
Installation de ''gns3-gui''
  dpkg -i gns3-gui_1.5.3~xenial5_amd64.deb
  dpkg -i gns3-gui_1.5.3~xenial5_amd64.deb
À ce stade nous avons GNS3 d'installé. Ne criez pas victoire trop vite car libvirt-bin, bien que nous ayant bien fiat chier reste un élément indispensable pour émuler les équipements. Il va donc falloir l'installer si on veut bénéficier de l’intérêt de ce logiciel. Pour ce faire, soit vous optez pour l'installation des dépendances de ''libvirt-bin'' ainsi que lui même à la main, soit vous le récupérez depuis les dépôts Jessie comme avec la méthode ''apt''.
 
{{astuce|Les dépendances des ''.deb'' se trouvent avec la commande <source lang="bash" inline>dpkg-deb --info nom.deb</source>. Lorsque ''apt'' ne veut plus rien savoir et qu'il casse les couille on nettoie tout avec la commande <source lang="bash" inline>apt --fix-broken install</source>.}}
À ce stade nous avons ''GNS3'' d'installé. Ne criez pas victoire trop vite car ''libvirt-bin'', bien que nous ayant bien fiat chier reste un élément indispensable pour émuler les équipements. Il va donc falloir l'installer si on veut bénéficier de l’intérêt de ce logiciel. Pour se faire, soit vous optez pour l'installation des dépendances de ''libvirt-bin'' ainsi que lui même à la main, soit vous le récupérez depuis les dépôts ''Jessie'' comme avec la méthode ''apt''.
 
{{astuce|Les dépendances des ''.deb'' se trouvent avec la commande <code>dpkg-deb --info nom.deb</code>. Lorsque ''apt'' ne veut plus rien savoir et qu'il casse les couille on nettoie tout avec la commande <code>apt --fix-broken install</code>.}}
 
Attribution des droits à l'outil ''ubridge''
Attribution des droits à l'outil ''ubridge''
  chmod 777 /usr/bin/ubridge
  chmod 777 /usr/bin/ubridge
Ligne 105 : Ligne 122 :


==Ajout d'un IOS Cisco==
==Ajout d'un IOS Cisco==
Les IOS Cisco sont disponibles dans [https://{{SERVERNAME}}/fichiers/réseaux/cisco/ios/ nos fichiers]. Il sont à ajouter dans les modèles de routeur (vous trouverez, ce n'est pas très compliqué).
Les ''IOS Cisco'' sont disponibles dans [https://{{SERVERNAME}}/fichiers/réseaux/cisco/ios/ nos fichiers]. Il sont à ajouter dans les modèles de routeur (vous trouverez, ce n'est pas très compliqué).


=Lien avec le monde physique=
=Lien avec le monde physique=
Faire son réseau virtuel est intéressant mais pouvoir exploiter ses atouts avec de vrais équipements, c'est encore mieux. Ainsi ont peut considérer sont PC hôte comme une baie avec plein d'équipement que l'on relie au réseau externe. Les possibilités sont infinies...
Faire son réseau virtuel est intéressant mais pouvoir exploiter ses atouts avec de vrais équipements, c'est encore mieux. Ainsi ont peut considérer sont PC hôte comme une baie avec plein d'équipement que l'on relie au réseau externe. Les possibilités sont infinies...


Pour ce faire, il faut créer une interface de lien local ''tap'' et lui assigner une adresse IP. On ajoutera ensuite un "cloud" dans GNS3 (équipement avec l'icône de nuage) et on le configurera pour ajouter cette interface dans l'onglet ''NIO TAP''. Il faut rentrer le nom de l'interface dans le champ prévu à cet effet : ''tap0''.
Pour se faire, il faut créer une interface de lien local ''tap'' et lui assigner une adresse ''IP''. On ajoutera ensuite un "cloud" dans ''GNS3'' (équipement avec l'icône de nuage) et on le configurera pour ajouter cette interface dans l'onglet ''NIO TAP''. Il faut rentrer le nom de l'interface dans le champ prévu à cet effet : ''tap0''.
{{info|Avec GNS3 2.0, l'étape avec l'onglet n'est plus nécessaire car le nuage ajoute automatiquement les interfaces qu'il trouve sur l'hôte.}}
 
{{info|Avec ''GNS3 2.0'', l'étape avec l'onglet n'est plus nécessaire car le nuage ajoute automatiquement les interfaces qu'il trouve sur l'hôte.}}


==Installation==
==Installation==
===Nouvelle méthode===
===Nouvelle méthode===
De nos jours, tout peut se faire via la commande <source lang="bash" inline>ip</source> du paquet ''iproute2'' comme expliqué [https://www.baturin.org/docs/iproute2/ ici].
De nos jours, tout peut se faire via la commande <code>ip</code> du paquet <code>iproute2</code> comme expliqué [https://www.baturin.org/docs/iproute2/ ici].
  ip tuntap add dev tap0 mode tap user toto
  ip tuntap add dev tap0 mode tap user toto
  ip address add 10.200.200.1/30 dev tap0
  ip address add 10.200.200.1/30 dev tap0
Ligne 123 : Ligne 141 :
Installation des dépendances
Installation des dépendances
  apt install uml-utilities
  apt install uml-utilities
Création de l'interface ''tap0'' et attribution d'une adresse IP
 
Création de l'interface ''tap0'' et attribution d'une adresse ''IP''
  tunctl -t tap0
  tunctl -t tap0
  ip a a 10.200.200.1/30 dev tap0
  ip a a 10.200.200.1/30 dev tap0
Ligne 130 : Ligne 149 :


==Problèmes==
==Problèmes==
Cette étape aussi simple qu'il puisse y paraître peut générer des erreurs bloquantes. Un message disant quand le chemin de ubridge n'est pas valide ou qu'il n'est pas installer peu survenir. C'est un problème de permission (Tapez <source lang="bash" inline>ub+<tab></source> dans un terminal connecté avec l'utilisateur qui doit exécuter GNS3, si bash n'autocomplète pas en ''ubridge'', c'est que <source lang="bash" inline>/usr/bin/ubridge</source> n'a pas les bons droits. Sinon c'est que c'est un problème inconnu (ce qui ne serai pas surprenant vu comment c'est une galère à installer).
Cette étape aussi simple qu'il puisse y paraître peut générer des erreurs bloquantes. Un message disant quand le chemin de ''ubridge'' n'est pas valide ou qu'il n'est pas installé peut survenir. C'est un problème de permission (Tapez <code>ub+<tab></code> dans un terminal connecté avec l'utilisateur qui doit exécuter ''GNS3'', si ''Bash'' n'auto-complète pas en ''ubridge'', c'est que <code>/usr/bin/ubridge</code> n'a pas les bons droits. Sinon c'est que c'est un problème inconnu (ce qui ne serait pas surprenant vu comment c'est une galère à installer).


Pour régler ça. Faire ceci:
Pour régler ça. Faire ceci :
  chown yohan:ubridge /usr/bin/ubridge
  chown yohan:ubridge /usr/bin/ubridge
  setcap cap_net_admin,cap_net_raw=ep /usr/bin/ubridge
  setcap cap_net_admin,cap_net_raw=ep /usr/bin/ubridge
Ce problème peut également survenir après une mise à jour de GNS3.
 
Ce problème peut également survenir après une mise à jour de ''GNS3''.


=Utilisation des Ios On Unix (IOU)=
=Utilisation des Ios On Unix (IOU)=
IOS on UNIX est un IOS qui tourne comme un programme sur une distribution Linux (ça aurai donc dû s'appeler IOL, on est d'accord...). L’intérêt de cette solution est quelle permet de s'affranchir de la principale lacune de GNS3: l'impossibilité d'utiliser des commutateurs. Les IOU permettent également d'utiliser un grand nombre de fonctions réservées au haut de gamme des chez Cisco. Sous Windows, GNS3 utilise [[qemu]] pour émuler une distribution Linux afin de faire tourner IOU, ce qui en diminue très grandement l'intérêt (en même temps qu'elle idée d'utiliser Windows...).
''IOS on UNIX'' est un ''IOS'' qui tourne comme un programme sur une distribution ''Linux'' (ça aurai donc dû s'appeler ''IOL'', on est d'accord...). L’intérêt de cette solution est quelle permet de s'affranchir de la principale lacune de ''GNS3'' : l'impossibilité d'utiliser des commutateurs. Les ''IOU'' permettent également d'utiliser un grand nombre de fonctions réservées au haut de gamme des chez ''Cisco''. Sous ''Windows'', ''GNS3'' utilise [[qemu]] pour émuler une distribution ''Linux'' afin de faire tourner ''IOU'', ce qui en diminue très grandement l'intérêt (en même temps qu'elle idée d'utiliser ''Windows''...).


Autre chose: Je n'ai pas réussi à déterminer si l'utilisation des IOU représentait une violation de licence car comme à son habitude, Cisco pratique l’obscurantisme sur les détails et personne ne semble se soucier de ce sujet...
Autre chose : Je n'ai pas réussi à déterminer si l'utilisation des ''IOU'' représentait une violation de licence car comme à son habitude, ''Cisco'' pratique l’obscurantisme sur les détails et personne ne semble se soucier de ce sujet...


Les IOU sont des programmes 32bits (sans commentaires...), on est donc obligé d'ajouter une dépendance i386 dans notre chère distribution amd64.
Les ''IOU'' sont des programmes 32 bits (sans commentaires...), on est donc obligé d'ajouter une dépendance ''i386'' dans notre chère distribution ''amd64''.
  dpkg --add-architecture i386
  dpkg --add-architecture i386


  apt update
  apt update


''Attention si vous utilisez ma documentation sur [[apt-mirror]] et que des erreurs 404 s'affichent dû au fait que vous n'avez pas l'ensemble des dépôts i386 en local (même si c'est des dépôts qui n'ont rien avoir avec la choucroute), je vous recommande de changer de serveur DNS dans <source lang="bash" inline>/etc/resolv.conf</source> le temps de l'installation sinon vous allez tourner en rond avec des erreurs de dépendance APT bien casse couille (c'est du vécu) sans comprendre la raison de toute cette merde.''
''Attention si vous utilisez ma documentation sur [[apt-mirror]] et que des erreurs 404 s'affichent dû au fait que vous n'avez pas l'ensemble des dépôts ''i386'' en local (même si c'est des dépôts qui n'ont rien avoir avec la choucroute), je vous recommande de changer de serveur ''DNS'' dans <code>/etc/resolv.conf</code> le temps de l'installation sinon vous allez tourner en rond avec des erreurs de dépendance APT bien casse couille (c'est du vécu) sans comprendre la raison de toute cette merde.''
  apt install libssl1.1:i386
  apt install libssl1.1:i386


Il faut désormais créer un lien symbolique pour que ce balo d'IOU la trouve (bah oui, c'est trop compliqué de pointer sur la bonne librairie hein, on va laisser l'utilisateur faire le travail à la place des dev de Cisco tien)
Il faut désormais créer un lien symbolique pour que ce balo d{{'}}''IOU'' la trouve (bah oui, c'est trop compliqué de pointer sur la bonne librairie hein, on va laisser l'utilisateur faire le travail à la place des dev de ''Cisco'' tien)
  ln -s /usr/lib/i386-linux-gnu/libcrypto.so.1.1 /usr/lib/libcrypto.so.4
  ln -s /usr/lib/i386-linux-gnu/libcrypto.so.1.1 /usr/lib/libcrypto.so.4
Pour que IOU fonctionne, il faut une licence, que l'on va devoir générer. Mais avant toute chose il faut faire pointer notre interface de lien local sur notre nom d'hôte ainsi qu'un nom de domaine de chez Cisco (probablement un mécanisme de vérification de licence). Dans mon exemple, mon nom d'hôte est ''debian'', adaptez à votre cas.
 
Pour que ''IOU'' fonctionne, il faut une licence, que l'on va devoir générer. Mais avant toute chose il faut faire pointer notre interface de lien local sur notre nom d'hôte ainsi qu'un nom de domaine de chez ''Cisco'' (probablement un mécanisme de vérification de licence). Dans mon exemple, mon nom d'hôte est ''debian'', adaptez à votre cas.
  echo "debian" > /etc/hostname
  echo "debian" > /etc/hostname
  hostname debian
  hostname debian
Ligne 159 : Ligne 180 :
{{attention|La suite de cette procédure doit être exécuté en utilisateur standard.}}
{{attention|La suite de cette procédure doit être exécuté en utilisateur standard.}}


Téléchargez le script de génération de licence
Téléchargez le script de génération de licence pour ''Python2'' (obsolète) :
  wget https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/CiscoKeyGen.py
  wget https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/CiscoKeyGen.py


Générez la licence (veillez à bien utiliser python 2 et non 3)
Pour [https://timigate.com/2021/10/cisco-iou-l2-keygen-license-for-gns3.html Python3] ([http://www.ipvanquish.com/download/CiscoIOUKeygen3f.py actuel]) :
  python2.7 CiscoKeyGen.py
  wget https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/CiscoIOUKeygen3f.py


Copiez la section suivante dans <source lang="bash" inline>~/.iourc</source> (celle du script hein, pas la mienne, sinon ça va pas marcher gros bêta)
Générez la licence
python2 CiscoKeyGen.py || python3 CiscoIOUKeygen3f.py
 
Copiez la section suivante dans <code>~/.iourc</code> (celle du script hein, pas la mienne, sinon ça va pas marcher gros bêta)
  [license]                                                                               
  [license]                                                                               
  debian = b0acc48944f31bd4;
  debian = b0acc48944f31bd4;


Créez le répertoire d'accueil des IOU
Créez le répertoire d'accueil des ''IOU''
  mkdir -p ~/GNS3/images/IOU/
  mkdir -p ~/GNS3/images/IOU/


Téléchargez des IOU (avec la commande suivante ou [https://{{SERVERNAME}}/fichiers/r%c3%a9seaux/cisco/iou/ ici])
Téléchargez des ''IOU'' (avec la commande suivante ou [https://{{SERVERNAME}}/fichiers/r%c3%a9seaux/cisco/iou/ ici])
  wget https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/i86bi-linux-l2-adventerprisek9-15.1a.bin https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/i86bi-linux-l3-adventerprisek9-15.2.4M1.bin -P ~/GNS3/images/IOU/
  wget https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/i86bi-linux-l2-adventerprisek9-15.1a.bin https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/i86bi-linux-l3-adventerprisek9-15.2.4M1.bin -P ~/GNS3/images/IOU/


Les IOU étant des programmes, il faut leur donner les droits d'exécution
Les ''IOU'' étant des programmes, il faut leur donner les droits d'exécution
  chmod +x ~/GNS3/images/IOU/*.bin
  chmod +x ~/GNS3/images/IOU/*.bin


La suite ce passe sous GNS3:
La suite ce passe sous ''GNS3'' :
# Ajouter la licence dans GNS3 <source lang="bash" inline>Edit > Préférences > IOS on UNIX > Edit | Aller chercher ~/.iourc > Apply</source>
# Ajouter la licence dans GNS3 <code>Edit > Préférences > IOS on UNIX > Edit | Aller chercher ~/.iourc > Apply</code>
# Ensuite, ajouter un modèle IOU dans GNS3 <source lang="bash" inline>Edit > Préférences > IOS on UNIX > IOU Device > New</source>
# Ensuite, ajouter un modèle IOU dans GNS3 <code>Edit > Préférences > IOS on UNIX > IOU Device > New</code>
# Profitez d'un truck qui déchire pour vos archis!
# Profitez d'un truck qui déchire pour vos archis !


==Sources de la section==
==Sources de la section==
* '''Principale:''' Principale: https://nlabweb.wordpress.com/2016/04/06/running-cisco-switches-on-gns3/#more-147
* '''Principale :''' Principale : https://nlabweb.wordpress.com/2016/04/06/running-cisco-switches-on-gns3/#more-147
* '''Problème de libcrypto.so.4:''' https://www.youtube.com/watch?v=chcHuF3nEoQ
* '''Problème de libcrypto.so.4 :''' https://www.youtube.com/watch?v=chcHuF3nEoQ
* '''CiscoKeyGen:''' https://gist.github.com/paalfe/8edd82f780c650ae2b4a/archive/bd7b6b8a81c338359e6de4ff0ed0def9f7dc9146.zip
* '''CiscoKeyGen :''' https://gist.github.com/paalfe/8edd82f780c650ae2b4a/archive/bd7b6b8a81c338359e6de4ff0ed0def9f7dc9146.zip
* '''Images IOU:''' https://drive.google.com/file/d/0B8tSmsEbVQs-bjVXY3VqMFJrc1E/view
* '''Images IOU :''' https://drive.google.com/file/d/0B8tSmsEbVQs-bjVXY3VqMFJrc1E/view


==À creuser==
==À creuser==
Se passer de GNS3 pour les IOU: https://myhowtosandprojects.blogspot.fr/2013/08/installing-and-running-iou-checking_10.html
Se passer de ''GNS3'' pour les ''IOU'' : https://myhowtosandprojects.blogspot.fr/2013/08/installing-and-running-iou-checking_10.html


=Utilisation de Docker=
=Utilisation de Docker=
Docker est une solution de conteneurisation. Il permettra de créer des serveurs et des postes clients virtuelles ainsi que faire des analyses réseaux au sein de l'infra virtuelle. Docker n'est malheureusement pas dans les dépôts Debian. Il faut donc ajouter le dépôt officiel à la main
[[Docker]] est une solution de conteneurisation. Il permettra de créer des serveurs et des postes clients virtuelles ainsi que faire des analyses réseaux au sein de l'infra virtuelle. Docker n'est malheureusement pas dans les dépôts Debian. Il faut donc ajouter le dépôt officiel à la main.


==Installation==
==Installation==
Pour l'installation de Docker, ce référer à la page suivante : [[Docker#Installation|Installation de Docker]]
Pour l'installation de ''Docker'', ce référer à la page suivante : [[Docker#Installation|Installation de Docker]].


==Configuration==
==Configuration==
Ajout de l'utilisateur se servant de GNS3 au groupe docker (sinon l'application ne pourra pas se connecter au démon docker pour intéragir avec les conteneurs)
Ajout de l'utilisateur se servant de ''GNS3'' au groupe <code>docker</code> (sinon l'application ne pourra pas se connecter au démon ''docker'' pour interagir avec les conteneurs)
  usermod -aG docker <VOTRE_UTILISATEUR_DE_GNS3>
  usermod -aG docker <VOTRE_UTILISATEUR_DE_GNS3>
Je n'ai pas trouver comment appliquer ces changements autrement qu'en redémarrant, navré
Je n'ai pas trouver comment appliquer ces changements autrement qu'en redémarrant, navré
  reboot
  reboot
Téléchargement d'un conteneur Kalilinux (en root)
 
Téléchargement d'un conteneur ''Kalilinux'' (en ''root'')
  docker pull gns3/kalilinux
  docker pull gns3/kalilinux
{{astuce|Il y a un bon nombre de conteneurs téléchargeables dans le [https://hub.docker.com/r/gns3/ dépôt Docker du projet GNS3]. Je vous conseils d'aller y faire un tour.}}
{{astuce|Il y a un bon nombre de conteneurs téléchargeables dans le [https://hub.docker.com/r/gns3/ dépôt Docker du projet GNS3]. Je vous conseils d'aller y faire un tour.}}
Il faut maintenant ajouter le conteneur à GNS3 en tant que modèle. Pour ce faire il faut aller dans les paramètres, dans la section dédié à Docker et faire du clickodrôme jusqu'à l'ajout de notre conteneur (le 3ème lien des sources montre la procédure officielle si vraiment vous êtes en galère).
 
Il faut maintenant ajouter le conteneur à ''GNS3'' en tant que modèle. Pour se faire il faut aller dans les paramètres, dans la section dédié à ''Docker'' et faire du clickodrôme jusqu'à l'ajout de notre conteneur (le 3ème lien des sources montre la procédure officielle si vraiment vous êtes en galère).


==Problèmes==
==Problèmes==
Tout comme ''ubridge'', Docker peut ne pas fonctionner pour cause de permission. Si la commande <source lang="bash" inline>docker ps</source> renvoi une erreur de permission en tant que utilisateur utilisant GNS3, c'est qu'il n'appartient pas au groupe ''docker''.
Tout comme ''ubridge'', ''Docker'' peut ne pas fonctionner pour cause de permission. Si la commande <code>docker ps</code> renvoi une erreur de permission en tant que utilisateur utilisant ''GNS3'', c'est qu'il n'appartient pas au groupe <code>docker</code>.
 
J'ai également eu l'erreur <code>Docker has returned an error: 304 b</code> avec ''GNS3 1.5.3''. Je n'ai pas eu le temps de résoudre cette erreur qui a été corrigé avec la mise à jour 2.0 de ''GNS3'' et je n'ai pas de piste de résolution (ça semble être le problème de merde bien chiant à régler avec aucune aide sur Internet). Dieu vous garde si vous la rencontrez...


J'ai également eu l'erreur <source lang="bash" inline>Docker has returned an error: 304 b</source> avec GNS3 1.5.3. Je n'ai pas eu le temps de résoudre cette erreur qui a été corrigé avec la mise à jour 2.0 de GNS3 et je n'ai pas de piste de résolution (ça semble être le problème de merde bien chiant à régler avec aucune aide sur Internet). Dieu vous garde si vous la rencontrez...
==Sources==
==Sources==
* https://store.docker.com/editions/community/docker-ce-server-debian?tab=description
* https://store.docker.com/editions/community/docker-ce-server-debian?tab=description
Ligne 217 : Ligne 246 :
* https://docs.gns3.com/1KGkv1Vm5EgeDusk1qS1svacpuQ1ZUQSVK3XqJ01WKGc/index.html
* https://docs.gns3.com/1KGkv1Vm5EgeDusk1qS1svacpuQ1ZUQSVK3XqJ01WKGc/index.html
* https://hub.docker.com/r/gns3/kalilinux/
* https://hub.docker.com/r/gns3/kalilinux/
=Sources=
=Sources=
* http://docs.gns3.com/1QXVIihk7dsOL7Xr7Bmz4zRzTsJ02wklfImGuHwTlaA4/
* http://docs.gns3.com/1QXVIihk7dsOL7Xr7Bmz4zRzTsJ02wklfImGuHwTlaA4/

Dernière version du 12 octobre 2024 à 14:56

GNS3 est un logiciel de simulation réseau. il peut simuler des matériels de l'équipementier Cisco en exploitant de vrais IOS ; exploiter qemu au travers du cadriciel libvirt pour émuler des équipements ; utiliser Docker ; intégrer des IOS tournant directement sous Linux afin d'ajouter des commutateurs de niveau 3 et plus encore. Nous nous trouvons donc avec des équipements virtuels qui réagissent comme des équipement physiques et qui, après avoir été reliés au monde réel par l'intermédiaire d'un pont sur la carte réseau de l'hôte, peuvent communiquer avec leurs pairs physiques de la même manière que de vrai équipements.

INFORMATION

Testé avec la version 2.0 sortie le 02/05/2017

Téléchargement

Partie obsolète. Passez par GitHub. GNS3 fait partie de ces logiciels casses couilles qui nécessitent un compte pour être téléchargé. Comme je ne supporte pas cette pratique (d'autant plus que ça se dit "logiciel libre" - pas très libre comme façon de faire), j'ai donc recensé les liens SourceForge du projet (c'est surtout utile si vous voulez le compiler vous-même ou si vous utilisez Mac OS X ou Windows). Pour les distributions Linux, vous trouverez la plupart du temps un binaire dans les dépôts.

Dépôt du projet :

Installation

INFORMATION

Mise à jour du 23/08/2024 : depuis Debian 12, seule la méthode Python3 PIP est supporté via le paramètre d'installation --break-system-packages. La section dédiée a été actualisée en conséquence. Veuillez noter également que l'installation ne fonctionne plus sur Debian Sid à cette même date. La procédure va donc logiquement probablement changer pour la version 13... Un ticket sur la confection d'un paquet portable est ouvert sur le dépôt GitHub du projet sans grande avancée à ce stade. Cela pourrait régler le problème épineux de l'installation et des mises à jours de cet outil à terme.

Le paquet telnet sera également utile pour la connexion aux équipements virtuels

apt install telnet

Méthode python3 PIP

GNS3 est installable depuis le gestionnaire de paquet de Python3. Cette méthode est la seule fonctionnelle sous Debian 12 en 2024 :

apt install python3-pip
apt install python3-pyqt5.qtsvg python3-pyqt5.qtwebsockets
pip3 install --break-system-packages -U gns3-gui gns3-server PyQt5-sip PyQt5 aiohttp
wget https://doc.ycharbi.fr/fichiers/réseaux/gns3/ubridge -P /usr/bin/
chmod 777 /usr/bin/ubridge

Note : le binaire de ubridge est celui des dépôts Debian Sid au 17/02/2019.

INFORMATION

Depuis la version 2.2.5 sortie le 9 janvier 2020, la suite est automatique. Vous pouvez vous arrêter là pour la méthode python3 PIP.

Télécharger l'icône de l'application :

wget https://doc.ycharbi.fr/fichiers/réseaux/gns3/images/gns3.png -P /usr/share/icons/hicolor/48x48/apps/

Et créer le lanceur :

vim /usr/share/applications/gns3.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=gns3 %f
Name=GNS3
Comment=GNS3 Graphical Network Simulator
Icon=/usr/share/icons/hicolor/48x48/apps/gns3.png
Categories=Education;Network;
MimeType=application/x-gns3;application/x-gns3a;application/x-gns3project;
Keywords=simulator;network;netsim;

Pour mettre à jour :

pip3 install --break-system-packages -U sip gns3-gui gns3-server PyQt5-sip PyQt5 aiohttp

INFORMATION

Si une des dépendances pose problème (c'était le cas pour pyqt5 en version 5.14.1 vers fin 2019 - début 2020), il est possible d'en installer une version spécifique en la précisant ainsi : pyqt5==5.14.0. Le paquet a depuis changé de casse dans son nom comme vous pouvez le constater dans la ligne ce-dessus... Cet écosystème est insupportable. Il faut faire une veille constante, ce qui rend chaque mises à jours risquées et le maintient d'une documentation fonctionnelle impossible.

Méthode APT

Méthode obsolète. Utilisez la méthode Python3 PIP.

La version de GNS3 disponible dans les dépôts Debian est affligeante, il s'agit d'une très ancienne version (elle ne permet même pas de supprimer les câbles que l'on connectes aux équipements...), nous allons donc ajouter le dépôt du projet pour être à jour.

Depuis une installation via debootstrap, le paquet dirmngr est absent et est nécessaire à l'importation des clés GPG. Il faut l'installer

apt install dirmngr

INFORMATION

Sous Debian Stretch, la dépendance libvirt-bin ne peut être satisfaite car il s'agit d'un paquet de transition qui s'est vu découpé en deux paquets nommés libvirt-daemon-system et libvirt-clients (voir ici). Le problème c'est que sans un paquet qui s'appel libvirt-bin, GNS3 est impossible à installer (et c'est pas faute d'avoir essayé, merci le gestionnaire de paquet apt qui sait se comporter comme une grosse merde quand il le faut). J'ai donc mis au point deux solution pour palier au problème. L'une exploite apt et une bidouille avec son sources.list, l'autre utilise directement dpkg pour contourner le problème. Je conseil vivement d'utiliser la solution apt.

Comme nous l'avons vu, le paquet libvirt-bin n'est pas disponible dans les dépôts Stretch suite à un changement programmé de stratégies de ses mainteneurs. Cependant il est présent dans ceux de Debian Jessie puisque il en été au stade de transition à ce moment là. Jessie n'étant pas très différent de Stretch, il n'y a pas de risques de stabilité en confondant ce paquet avec les autres. Nous allons donc combiner les dépôts de Jessie avec ceux de Stretch pour avoir ce qu'il nous faut. Pas de panique, apt n'étant pas si mal fait, il prendra toujours les paquets avec un numéros de version plus récent. Ce qui garanti que Seul les paquets absents de Stretch seront piochés dans Jessie.

Ajouter les dépôts de GNS3 et Debian Jessie dans Stretch

echo -e '#GNS3\ndeb http://ppa.launchpad.net/gns3/ppa/ubuntu xenial main\n#Debian jessie (pour avoir le paquet libvirt-bin)\ndeb http://ftp.fr.debian.org/debian jessie main' >> /etc/apt/sources.list

ATTENTION

Avec Debian sid/buster, il faut remplacer la branche xenial du dépôt http://ppa.launchpad.net/gns3/ppa/ubuntu par bionic.

Ajout de la clé GPG des dépôts GNS3

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F88F6D313016330404F710FC9A2FD067A2E3EF7B

Mise à jour de la base apt

apt update

Installation de GNS3

apt install gns3-gui

Attribution des droits à l'outil ubridge

chmod 777 /usr/bin/ubridge
setcap cap_net_admin,cap_net_raw=ep /usr/bin/ubridge

Méthode DPKG

Cette méthode a été testé avec GNS3 1.5.3. Elle est fonctionnelle mais en plus de sa lourdeur, elle ne permet pas une monté en version simple. Elle reste toutefois plus abordable que la compilation depuis les sources et a été documenté car je me suis bien fait chier pour la pondre quand j'en avais besoin.

Installation des dépendances de gns3-gui (j'ai enlevé gns3-server qui réclame libvirt-bin qui n'existe pas)

apt install python3 python3-pyqt5 python3-pyqt5.qtsvg wireshark vinagre libc6 libexpat1 zlib1g

Installation des dépendances de gns3-server (j'ai enlevé libvirt-bin qui n'existe pas)

apt install python3 vpcs qemu-system-x86 qemu-system-arm qemu-kvm cpulimit x11vnc xvfb libc6 libexpat1 zlib1g

Téléchargement des dépendances non disponibles dans les dépôts Debian

wget http://ppa.launchpad.net/gns3/ppa/ubuntu/pool/main/d/dynamips/dynamips_0.2.16-1~xenial1_amd64.deb http://ppa.launchpad.net/gns3/ppa/ubuntu/pool/main/u/ubridge/ubridge_0.9.11-1~yakkety_amd64.deb

Installation manuelle des dépendances non disponibles dans les dépôts Debian (dépôt GNS3) pour gns3-server

dpkg -i dynamips_0.2.16-1~xenial1_amd64.deb ubridge_0.9.11-1~xenial_amd64.deb

Installation de gns3-server sans libvirt-bin

dpkg -i --ignore-depends=libvirt-bin gns3-server_1.5.4~xenial1_amd64.deb

Installation de gns3-gui

dpkg -i gns3-gui_1.5.3~xenial5_amd64.deb

À ce stade nous avons GNS3 d'installé. Ne criez pas victoire trop vite car libvirt-bin, bien que nous ayant bien fiat chier reste un élément indispensable pour émuler les équipements. Il va donc falloir l'installer si on veut bénéficier de l’intérêt de ce logiciel. Pour se faire, soit vous optez pour l'installation des dépendances de libvirt-bin ainsi que lui même à la main, soit vous le récupérez depuis les dépôts Jessie comme avec la méthode apt.

ASTUCE

Les dépendances des .deb se trouvent avec la commande dpkg-deb --info nom.deb. Lorsque apt ne veut plus rien savoir et qu'il casse les couille on nettoie tout avec la commande apt --fix-broken install.

Attribution des droits à l'outil ubridge

chmod 777 /usr/bin/ubridge
setcap cap_net_admin,cap_net_raw=ep /usr/bin/ubridge

Ajout d'un IOS Cisco

Les IOS Cisco sont disponibles dans nos fichiers. Il sont à ajouter dans les modèles de routeur (vous trouverez, ce n'est pas très compliqué).

Lien avec le monde physique

Faire son réseau virtuel est intéressant mais pouvoir exploiter ses atouts avec de vrais équipements, c'est encore mieux. Ainsi ont peut considérer sont PC hôte comme une baie avec plein d'équipement que l'on relie au réseau externe. Les possibilités sont infinies...

Pour se faire, il faut créer une interface de lien local tap et lui assigner une adresse IP. On ajoutera ensuite un "cloud" dans GNS3 (équipement avec l'icône de nuage) et on le configurera pour ajouter cette interface dans l'onglet NIO TAP. Il faut rentrer le nom de l'interface dans le champ prévu à cet effet : tap0.

INFORMATION

Avec GNS3 2.0, l'étape avec l'onglet n'est plus nécessaire car le nuage ajoute automatiquement les interfaces qu'il trouve sur l'hôte.

Installation

Nouvelle méthode

De nos jours, tout peut se faire via la commande ip du paquet iproute2 comme expliqué ici.

ip tuntap add dev tap0 mode tap user toto
ip address add 10.200.200.1/30 dev tap0
ip link set tap0 up

Ancienne méthode

Installation des dépendances

apt install uml-utilities

Création de l'interface tap0 et attribution d'une adresse IP

tunctl -t tap0
ip a a 10.200.200.1/30 dev tap0
# ou via ifconfig du paquet net-tools
# ifconfig tap0 10.200.200.1 netmask 255.255.255.252

Problèmes

Cette étape aussi simple qu'il puisse y paraître peut générer des erreurs bloquantes. Un message disant quand le chemin de ubridge n'est pas valide ou qu'il n'est pas installé peut survenir. C'est un problème de permission (Tapez ub+<tab> dans un terminal connecté avec l'utilisateur qui doit exécuter GNS3, si Bash n'auto-complète pas en ubridge, c'est que /usr/bin/ubridge n'a pas les bons droits. Sinon c'est que c'est un problème inconnu (ce qui ne serait pas surprenant vu comment c'est une galère à installer).

Pour régler ça. Faire ceci :

chown yohan:ubridge /usr/bin/ubridge
setcap cap_net_admin,cap_net_raw=ep /usr/bin/ubridge

Ce problème peut également survenir après une mise à jour de GNS3.

Utilisation des Ios On Unix (IOU)

IOS on UNIX est un IOS qui tourne comme un programme sur une distribution Linux (ça aurai donc dû s'appeler IOL, on est d'accord...). L’intérêt de cette solution est quelle permet de s'affranchir de la principale lacune de GNS3 : l'impossibilité d'utiliser des commutateurs. Les IOU permettent également d'utiliser un grand nombre de fonctions réservées au haut de gamme des chez Cisco. Sous Windows, GNS3 utilise qemu pour émuler une distribution Linux afin de faire tourner IOU, ce qui en diminue très grandement l'intérêt (en même temps qu'elle idée d'utiliser Windows...).

Autre chose : Je n'ai pas réussi à déterminer si l'utilisation des IOU représentait une violation de licence car comme à son habitude, Cisco pratique l’obscurantisme sur les détails et personne ne semble se soucier de ce sujet...

Les IOU sont des programmes 32 bits (sans commentaires...), on est donc obligé d'ajouter une dépendance i386 dans notre chère distribution amd64.

dpkg --add-architecture i386
apt update

Attention si vous utilisez ma documentation sur apt-mirror et que des erreurs 404 s'affichent dû au fait que vous n'avez pas l'ensemble des dépôts i386 en local (même si c'est des dépôts qui n'ont rien avoir avec la choucroute), je vous recommande de changer de serveur DNS dans /etc/resolv.conf le temps de l'installation sinon vous allez tourner en rond avec des erreurs de dépendance APT bien casse couille (c'est du vécu) sans comprendre la raison de toute cette merde.

apt install libssl1.1:i386

Il faut désormais créer un lien symbolique pour que ce balo d'IOU la trouve (bah oui, c'est trop compliqué de pointer sur la bonne librairie hein, on va laisser l'utilisateur faire le travail à la place des dev de Cisco tien)

ln -s /usr/lib/i386-linux-gnu/libcrypto.so.1.1 /usr/lib/libcrypto.so.4

Pour que IOU fonctionne, il faut une licence, que l'on va devoir générer. Mais avant toute chose il faut faire pointer notre interface de lien local sur notre nom d'hôte ainsi qu'un nom de domaine de chez Cisco (probablement un mécanisme de vérification de licence). Dans mon exemple, mon nom d'hôte est debian, adaptez à votre cas.

echo "debian" > /etc/hostname
hostname debian
echo -e "127.0.0.1 debian\n127.0.0.1 xml.cisco.com" >> /etc/hosts

ATTENTION

La suite de cette procédure doit être exécuté en utilisateur standard.

Téléchargez le script de génération de licence pour Python2 (obsolète) :

wget https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/CiscoKeyGen.py

Pour Python3 (actuel) :

wget https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/CiscoIOUKeygen3f.py

Générez la licence

python2 CiscoKeyGen.py || python3 CiscoIOUKeygen3f.py

Copiez la section suivante dans ~/.iourc (celle du script hein, pas la mienne, sinon ça va pas marcher gros bêta)

[license]                                                                               
debian = b0acc48944f31bd4;

Créez le répertoire d'accueil des IOU

mkdir -p ~/GNS3/images/IOU/

Téléchargez des IOU (avec la commande suivante ou ici)

wget https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/i86bi-linux-l2-adventerprisek9-15.1a.bin https://doc.ycharbi.fr/fichiers/r%c3%a9seaux/cisco/iou/i86bi-linux-l3-adventerprisek9-15.2.4M1.bin -P ~/GNS3/images/IOU/

Les IOU étant des programmes, il faut leur donner les droits d'exécution

chmod +x ~/GNS3/images/IOU/*.bin

La suite ce passe sous GNS3 :

  1. Ajouter la licence dans GNS3 Edit > Préférences > IOS on UNIX > Edit | Aller chercher ~/.iourc > Apply
  2. Ensuite, ajouter un modèle IOU dans GNS3 Edit > Préférences > IOS on UNIX > IOU Device > New
  3. Profitez d'un truck qui déchire pour vos archis !

Sources de la section

À creuser

Se passer de GNS3 pour les IOU : https://myhowtosandprojects.blogspot.fr/2013/08/installing-and-running-iou-checking_10.html

Utilisation de Docker

Docker est une solution de conteneurisation. Il permettra de créer des serveurs et des postes clients virtuelles ainsi que faire des analyses réseaux au sein de l'infra virtuelle. Docker n'est malheureusement pas dans les dépôts Debian. Il faut donc ajouter le dépôt officiel à la main.

Installation

Pour l'installation de Docker, ce référer à la page suivante : Installation de Docker.

Configuration

Ajout de l'utilisateur se servant de GNS3 au groupe docker (sinon l'application ne pourra pas se connecter au démon docker pour interagir avec les conteneurs)

usermod -aG docker <VOTRE_UTILISATEUR_DE_GNS3>

Je n'ai pas trouver comment appliquer ces changements autrement qu'en redémarrant, navré

reboot

Téléchargement d'un conteneur Kalilinux (en root)

docker pull gns3/kalilinux

ASTUCE

Il y a un bon nombre de conteneurs téléchargeables dans le dépôt Docker du projet GNS3. Je vous conseils d'aller y faire un tour.

Il faut maintenant ajouter le conteneur à GNS3 en tant que modèle. Pour se faire il faut aller dans les paramètres, dans la section dédié à Docker et faire du clickodrôme jusqu'à l'ajout de notre conteneur (le 3ème lien des sources montre la procédure officielle si vraiment vous êtes en galère).

Problèmes

Tout comme ubridge, Docker peut ne pas fonctionner pour cause de permission. Si la commande docker ps renvoi une erreur de permission en tant que utilisateur utilisant GNS3, c'est qu'il n'appartient pas au groupe docker.

J'ai également eu l'erreur Docker has returned an error: 304 b avec GNS3 1.5.3. Je n'ai pas eu le temps de résoudre cette erreur qui a été corrigé avec la mise à jour 2.0 de GNS3 et je n'ai pas de piste de résolution (ça semble être le problème de merde bien chiant à régler avec aucune aide sur Internet). Dieu vous garde si vous la rencontrez...

Sources

Sources