Démon uml_switch

Fonctionnement de base

Démarrage du démon

Commencez par démarrer le démon sur l'hôte : 'uml_switch' (ce démon fait partie des outils installés au début de l'activité 1).

Démarrage d'une machine UML avec une carte sans adresse MAC

Démarrez ensuite une première machine UML en indiquant sur la ligne de commande 'ethn=daemon' :

Noyaux/linux-2.4.27 umid=ordi1 ubd0=cow01,SysFich/root_fs_slack8.1 eth0=daemon
Le démon uml_switch doit détecter une nouvelle connection.

Dans la machine UML, affichez la configuration de la carte réseau eth0 ('ifconfig eth0'). L'adresse Ethernet attribuée par défaut est 00:00:00:00:00:00.

Attribuez à présent l'adresse 192.168.100.11 à cette carte ('ifconfig eth0 192.168.100.11') et affichez à nouveau la configuration. L'adresse IP est positionnée à celle indiquée, et vous remarquez aussi que l'adresse Ethernet est maintenant FE:FD:C0:A8:64:0B soit FE:FD:HH:HH:HH:HH, HH:HH:HH:HH étant la représentation hexadécimale de l'adresse IP donnée.

Démarrage d'une machine UML avec une carte avec adresse MAC

Démarrez une nouvelle machine UML en précisant cette fois l'adresse Ethernet à utiliser pour la carte virtuelle en indiquant sur la ligne de commande 'ethn=daemon,adresse_Ethernet' :

Noyaux/linux-2.4.27 umid=ordi2 ubd0=cow02,SysFich/root_fs_slack8.1 eth0=daemon,00:11:22:33:44:55

Attribuez l'adresse 192.168.100.22 à la carte eth0 de cette machine, puis affichez sa configuration.

Pinguez la première machine ('ping -c 1 192.168.100.11').

Démarrage d'une machine UML sans carte réseau

Utilisation de la console de gestion pour ajouter une carte sans adresse MAC

Démarrez une nouvelle machine UML sans mentionner de carte réseau :

Noyaux/linux-2.4.27 umid=ordi3 ubd0=cow03,SysFich/root_fs_slack8.1

Démarrez (sur l'hote) une console de gestion associée à cette machine : 'uml_mconsole ordi3'.

Tapez 'config eth0=daemon' au prompt de la console de gestion. Le démon uml_switch détecte une nouvelle connection et un ifconfig dans la machine UML fait apparaitre eth0.

Attribuez l'adresse 192.168.100.33 à la carte eth0 de cette machine, puis affichez sa configuration.

Pinguez la première machine ('ping -c 1 192.168.100.11').

Utilisation de la console de gestion pour retirer une carte

Arretez la carte de ordi3 : 'ifconfig eth0 down'.

Tapez 'remove eth0' au prompt de la console de gestion pour retirer la carte virtuelle.

Utilisation de la console de gestion pour ajouter une carte avec adresse MAC

Tapez 'config eth0=daemon,01:23:45:67:89:10' au prompt de la console de gestion.

Créer plusieurs réseaux virtuels séparés

Au paragraphe précédent, nous avons décrit le cas le plus simple où toutes les machines UML sont reliées au même switch virtuel. Pour obtenir plusieurs réseaux séparés, il faut lancer plusieurs uml_switch sur l'hôte en indiquant pour chacun une socket unix différente qui lui permettra de communiquer avec les machines UML : uml_switch -unix socket (par exemple : uml_switch -unix /tmp/reseau1).

Lors de la définition des interfaces d'une machine UML (soit sur la ligne de commande lançant la machine UML, soit depuis une uml_mconsole), il faut alors préciser à quel switch se connecter : ethn=daemon,[adresse ethernet],unix,socket (par exemple eth0=daemon,,unix,/tmp/reseau1) ; note : "unix" étant pour l'instant le seul type de socket supporté, il n'est pas obligatoire de le préciser lors de la définition de l'interface (c'est-à-dire que eth0=daemon,,,/tmp/reseau1 est équivalent à eth0=daemon,,unix,/tmp/reseau1).

Fonctionnement en mode hub

Il est possible de faire fonctionner l'uml_switch en mode hub plutot qu'en mode switch. Pour cela, il suffit d'indiquer l'option "-hub" sur la ligne de commande de lancement de l'uml_switch : uml_switch -hub.

Problème : je ne vois pas la différence entre mode switch et mode hub : on lance 2 machines UML, on configure la carte de la machine 1 avec l'adresse IP 192.168.100.111 et la machine 2 avec l'adresse 192.168.200.222 puis depuis la machine 1 on broadcaste un ping sur le sous-réseau 100 : ping -b 192.168.100.255 et sur la machine 2 on lance un tcpdump. Dans les 2 cas (mode switch et mode hub) la machine 2 "voit" les ICMP echo request...

Connection au réseau de l'hôte

Pour permettre aux machines UML d'accéder à l'hôte et au réseau réel auquel il est connecté, ajouter -tap tapi à la ligne de commande de lancement de l'uml_switch.

tapi doit être un dispositif TAP configuré. Il doit apparaitre, avec une adresse IP valide dans le réseau virtuel, lorsqu'on fait un ifconfig -a sur l'hôte. S'il apparait, mais sans adresse IP, if suffit d'en attribuer une à l'aide de ifconfig tapi dd.dd.dd.dd up. S'il n'y a pas de dispositif TAP, utiliser l'outil tunctl pour en créer un. Voir le paragraphe TUN/TAP.

Utiliser cette option permet d'observer le traffic du réseau virtuel depuis un tcpdump lancé sur le dispositif TAP de l'hôte.

Pour que la machine UML ait accès au réseau de l'hôte, il faut également configurer l'hôte et la machine UML :

Lorsqu'on utilise cette option d'uml_switch, l'adresse ethernet d'une machine UML reste (si elle n'est pas précisée lorsqu'on "déclare" l'interface) FE:FD:00:00:00:00. Cela peut poser des problèmes si plusieurs machines UML utilisent cette même adresse ethernet.