Institut Galilée L2 info S1 Année 2008 2009 Administration de Parc Informatique TP 03 Utilisation du logiciel Marionnet (premiers pas). Marionnet est un logiciel contenu sur le Live DVD qui permet de simuler des réseaux simples ou complexes. On peut créer des machines virtuelles et les connecter à l aide de câbles puis configurer le réseau. 1 Préliminaires 1.1 Démarrage Démarrer l ordinateur à l aide du Live DVD. Rappel, à l invite boot:, il faut taper : knoppix bootfro,=!dev!sdqè!locql!qdsy:iso et il doit s afficher : knoppix bootfrom=/dev/sda7/local/adsy.iso Une fois l ordinateur démarré, regarder si le réseau est fonctionnel et sinon l activer à l aide de ifup. À la fin du TP, penser à copier à l aide de scp tous les travaux du jour sur votre compte au sercal ou sur votre clé USB! Attention, par défaut les nouveaux projets Marionnet sont enregistrés dans /UNIONFS/urs/marionnet/. Lancer le logiciel Marionnet. Attention, enregistrer un projet peut être long et le fichier résultant assez gros (donc prendre du temps à transférer). Le transfert vers une clé USB sera sans doute plus rapide, surtout si tout le monde essaye en même temps de transférer son projet sur les machines sercal... 1.2 Création d une variante opérationnelle Quelques bugs dans la configuration de base des machines de Marionnet empêche le bon déroulement des opérations. Nous allons donc créer une variante de la machine de base qui corrige ces problèmes et l utiliser pour la suite du TP. Attention! Tant que la nouvelle version du logiciel n est pas sorti, il faudra refaire ces opérations à chaque TP. Donc cet énoncé est à conserver précieusement et à rapporter chaque semaine! 1. Lancer Marionnet. Créer un nouveau projet. Mettre un ordinateur dans le projet et le démarrer (bouton Tout démarrer ). 2. Dans la machine virtuelle, éditer le fichier /etc/init.d/marionnet_prepare_startup (utiliser la [TAB]-complétion pour éviter de se tromper dans le nom du fichier). Rechercher la ligne # Configure network interfaces: (utiliser Ctrl-W pour rechercher un texte dans nano). Commenter (rajouter # en début de ligne) les lignes suivantes qui se trouvent un peu en dessous : ifconfig eth$i hw ether $mac_address ifconfig eth$i mtu $mtu ifconfig eth$i $ipv4_address \ broadcast $ipv4_broadcast \ netmask $ipv4_netmask ifconfig eth$i inet6 add \ $ipv6_address Sauvegarder les modifications... 3. Dans la machines virtuelle, éditer le fichier /etc/init.d/networking Rechercher la ligne case "$1" in Un peu en dessous, remplacer la ligne : ifconfig eth$i up &> /dev/null true par : ifup eth$i &> /dev/null true 1
Sauvegarder les modifications... 4. Dans la machine virtuelle, éditer le fichier /etc/sysctl.conf. Trouver vers le début la ligne #net.ipv4.icmp_echo_ignore_broadcasts=1 (elle se trouve juste dans le deuxième paragraphe ). La remplacer par net.ipv4.icmp_echo_ignore_broadcasts=0 (supprimer le # au début et changer le 1 en 0 à la fin). 5. Supprimer les fichiers /etc/network/if-up.d/postfix et /etc/network/if-down.d/postfix. 6. Arrêter la machine virtuelle (bouton Tout arrêter ). 7. Aller dans l onglet Disques de Marionnet. Cliquer sur la flèche à gauche de la première ligne pour ouvrir les informations concernant la première machine. 8. Clic droit sur le disque de la première machine, choisir Créer une nouvelle variante. Enregistrer la variante. 9. Par la suite, chaque nouvel ordinateur créé dans Marionnet devra l être en choisissant la variante créée dans le menu Variante de la fenêtre de création de machine. Ces erreurs devraient normalement être corrigées dans la prochaine version du logiciel... 1.3 Une erreur fréquente Lorsqu on configure les interfaces réseaux des machines virtuelles, il arrive 1 qu on obtienne le message d erreur suivant : SIOCSIFFLAGS: transport endpoint not connected auquel cas l interface n est pas configurée. Ce problème est généralement résolu en arrêtant et en redémarrant toutes les machines du projet (boutons Tout arrêter et Tout démarrer ). En règle générale, toujours arrêter et redémarrer toutes les machines virtuelles à la fois à l aide de ces boutons permet d éviter ce problème (i.e. ne pas utiliser les commandes halt ou reboot pour arrêter/redémarrer un seul ordinateur à la fois). 2 Un Réseau simple 2.1 Mise en place matérielle Ouvrir un nouveau projet. Rajouter deux ordinateurs (les réglages par défaut sont corrects) et les connecter à l aide d un câble. Attention! Il y a deux types de câbles : droit ou croisé. Sans rentrer, pour l instant, dans les détails, la règle d or est la suivante : Deux équipements identiques se connectent avec un câble croisé. Deux équipements différents se connectent avec un câble droit. Puisqu il s agit ici de deux ordinateurs identiques, il faut les connecter avec un câble croisé. Démarrer les ordinateurs. On obtient 2 terminaux, un pour chaque ordinateur. Dans chacun, le login est root et le mot de passe est root. Se connecter sur les deux ordinateurs. 2.2 Configuration logicielle Vérifier à l aide d ifconfig que les cartes réseaux ne sont pas configurées (elles n ont pas d adresse IP). Il faut leur en attribuer une pour que les ordinateurs puissent communiquer. Comme nous ne disposons pas sur le réseau virtuel de serveur DHCP (contrairement au réseau réel qui a permis de connecter l ordinateur réel au réseau de la fac), il faut choisir une adresse IP pour chaque ordinateur. Comme indiqué la semaine dernière, une adresse IP est composée de 4 chiffres compris entre 0 et 255 (= 2 8 1). Le premier chiffre indique à quel domaine appartient l ordinateur. Il correspond, en pratique, à la dernière partie du nom en clair de l ordinateur. Par exemple, les ordinateurs dont l adresse IP commence par 194 correspondent (normalement) à des ordinateurs européens (194.254.167.19 est l adresse IP de sercalssh.ig-edu.univ-paris13.fr). 1 En particulier lorsqu on redémarre une seule machine virtuelle dans un projet qui en comporte plusieurs. 2
c www.xkcd.com 3
On ne peut donc pas attribuer à nos machines une IP complètement au hasard, sinon on risque des gros problèmes de compatibilité... La valeur 255 dans l un des 4 champs correspond à un joker. Elle est utilisée pour envoyer un message à toutes les machines dont l adresse vérifie certains champs. Nous y reviendrons plus tard. Afin de permettre à de multiples réseaux de coexister, une plage d adresses IP a été réservée pour des adresses locales (on parle de réseaux privés). Toute adresse dans ces valeurs est toujours considérée comme étant locale au réseau dans lequel on se trouve. Il s agit des adresses IP commençant par 10. C est celles-là que nous allons utiliser dans notre réseau. Remarque : le sous réseau 192.168. est aussi un réseau privé. Ces adresses sont souvent utilisées par les fournisseurs d accès ADSL : la box dispose d une adresse IP publique, avec laquelle elle peut communiquer à l extérieur, et fournit (via DHCP) des adresses privées aux ordinateurs qu on connecte. Ce soir, chercher l adresse IP de votre box ainsi que du ou des ordinateurs connectés dessus. Regarder quelle est l IP de votre machine réelle (qui a été attribuée par le serveur DHCP de la fac). Nous allons donc utiliser le réseau 10. Les 3 autres chiffres de l adresse IP sont libres (entre 0 et 254). Pour plus de simplicité, nous allons donner à tous les ordinateurs de ce réseau une adresse de la forme 10.0.0.? Par exemple, pour la machine m1 : 10.0.0.1 et pour la machine m2 : 10.0.0.2 (au moins, ça sera facile à retenir... ) Regarder le manuel d ifconfig. Pour attribuer une adresse à une interface, il faut passer en argument non seulement le nom de l interface, mais aussi l adresse à attribuer. Donner les bonnes adresses aux 2 machines. 2.3 Test du réseau Vérifier à l aide d ifconfig que les deux machines ont bien reçu leur adresse. À l aide de ping, tester la connexion dans un sens et dans l autre. Attention! Il n y a pas de DNS, donc impossible de traduire ici les noms lisibles en adresses, il faut faire un ping directement sur l adresse IP. Rappel : pour arrêter un ping, il suffit d appuyer sur Ctrl-C. 2.4 Ça s en va et ça revient... ou pas Arrêter les deux ordinateurs à l aide du bouton tout arrêter. Les redémarrer. Le réseau fonctionneil? Pourquoi? Arrêter les deux ordinateurs et enregistrer le projet. 3 Un réseau qui dure plus longtemps Nous allons maintenant mettre en place un réseau simple qui survit à l arrêt et au redémarrage des ordinateurs. 3.1 Mise en place matérielle Ouvrir un nouveau projet (ou renommer l ancien). Y placer deux ordinateurs et les connecter par un câble. Tout démarrer. 3.2 Mise en place logicielle. Pour ne pas avoir à reconfigurer les cartes réseau à chaque démarrage, il faut fournir les informations directement dans les fichiers de configuration. Comme vu la semaine dernière, le fichier qui contient les configurations des interfaces réseaux est /etc/network/interfaces. Éditer ce fichier. Les lignes commençant par # sont des commentaires. Actuellement, le fichier contient trois blocs séparés par des lignes vides. Le premier bloc est un commentaire décrivant le contenu du fichier. Le deuxième contient la configuration de l interface lo qui désigne toujours l ordinateur courant et le troisième bloc est une série de commentaires pour éventuellement configurer les cartes réseaux (eth*), il peut y en avoir plusieurs sur ces machines virtuelles... 4
Nous allons insérer un bloc pour la configuration de la carte réseau. Ce bloc est à insérer juste après la configuration de l interface lo. Penser à sauter des lignes pour avoir un fichier de configuration lisible... La première ligne à écrire dans le bloc est un commentaire décrivant le contenu du bloc. Pour les lignes suivantes, plusieurs choix sont possible. Dans une konsole sur la machine réelle, ouvrir le manuel de interfaces pour voir les descriptions de ces choix. Le manuel parle de stanzas ( stances/strophe 2 ). Ainsi que décrit par le manuel, juste avant une poignée d exemples, chaque stance est iface, auto, allow- ou mapping. Seuls les deux premiers types nous intéressent pour le moment. Lire le paragraphe qui suit immédiatement les exemples dans le manuel et qui décrit les stances auto. Rajouter dans le fichier une ligne pour que la carte réseau soit automatiquement activée au démarrage. Chercher dans la suite du manuel le passage qui décrit les strophes commençant par iface (utiliser / et n pour chercher un texte dans une page de manuel). Commencer une ligne pour la configuration de la carte réseau. Il faut maintenant choisir une famille d adresses et une méthode par laquelle la carte obtiendra une adresse. Pour la famille d adresses, choisir inet. Descendre dans le manuel jusqu à trouver la liste de méthodes disponibles pour la famille inet (partie intitulée INET ADDRESS FAMILY). Regarder rapidement la description des méthodes (sans lire la liste des options de chaque méthode). Laquelle faut-il utiliser selon vous pour configurer la carte réseau dans notre cas? Terminer la première ligne de la strophe dans le fichier /etc/network/interfaces avec le nom de la méthode à utiliser pour recevoir une adresse IP fixe. Cette première ligne de la strophe iface devrait maintenant contenir 4 mots : La déclaration iface, le nom de l interface à configurer, la famille d adresses et la méthode par laquelle la carte obtiendra une adresse. Regarder un peu en détail la liste d options de la méthode choisie. Deux d entre elles sont obligatoires (marquée required ) les autres sont optionnelles et nous nous en passerons... Tout d abord, il faut fournir une adresse IP pour la carte. Rajouter la ligne correspondante à la strophe iface. Ensuite, il faut fournir un netmask. Choisir 255.255.255.0 et rajouter la ligne en question à la strophe. Il y a donc en tout 5 lignes non vides à rajouter au fichier : Un commentaire pour dire ce qu on va faire. Une stance auto pour activer la carte au démarrage. Une strophe iface composée de 3 lignes : Une ligne décrivant l interface à configurer, la famille d adresses et la méthode par laquelle une adresse sera choisie. Une ligne affectant une adresse à la carte. Une ligne affectant le netmask 255.255.255.0 à la carte. Sauver le fichier. Quitter l éditeur. Activer la carte à l aide de ifup 3 Vérifier à l aide de ifconfig que la carte a été configurée correctement. 3.3 One more time Sur la deuxième machine virtuelle, éditer le fichier /etc/network/interfaces. Rajouter les lignes correspondant à la configuration de la carte réseau. Activer la carte à l aide de ifup. Vérifier à l aide de ping que le réseau fonctionne! Éteindre les machines virtuelles. Les rallumer. Le réseau fonctionne-t-il? 4 3 machines Comme chaque ordinateur n a qu une seule carte réseau (en général), si on veut connecter plus de 2 machines sur le même réseau, on a besoin d un matériel spécial, appelé hub qui comporte plusieurs prises réseaux et répartit le trafic entre les différents ordinateurs. 2 Au sens poétique de déclaration. 3 Si les fichiers /etc/network/.../postfix n ont pas été supprimés sur la machine virtuelle, un message d erreur concernant /etc/postfix/main.cf s affiche à chaque utilisation de ifup ou ifdown. Il peut être ignoré sans soucis (si d autres erreurs ont lieu, par contre... ) 5
4.1 Mise en place matérielle Ouvrir un nouveau projet. Ajouter trois ordinateurs. Ajouter un hub (deuxième icône en partant du haut), 4 ports (choix par défaut) est un bon choix. Connecter chaque ordinateur au hub à l aide d un câble. Attention! Puisqu il s agit ici de matériels différent (hub/ordinateur), il faut mettre des câbles droits. Démarrer tout ça. Au lieu du terminal, le hub est représenté par une fenêtre avec 4 lampes qui représentent l activité du réseau. Au démarrage, les 3 qui sont connectées aux 3 ordinateurs sont allumées en jaunes pour indiquer qu il y a une connexion mais pas de trafic dessus. Cocher la case Always on top pour ne pas perdre de vue cette fenêtre. À l aide d ifconfig, donner une adresse IP à chaque machine (par exemple 10.0.0.1, 10.0.0.2 et 10.0.0.3). Pas besoin pour l instant de modifier /etc/network/interfaces. Utiliser ping pour vérifier que le réseau fonctionne. Regarder le hub pendant le ping. Les lampes clignotent pour indiquer qu il y a du trafic dans le réseau. On remarque que lorsqu on fait un ping entre 2 ordinateurs, les 3 lampes clignotent. En effet un hub ne sait pas où il doit envoyer les données du réseau et les renvoie à tous les ordinateurs qui sont connectés dessus. Charge à chaque ordinateur ensuite de ne conserver que ce qui lui est destiné. 4.2 Routage Afin de ne pas surcharger inutilement les machines et le réseau, il est intéressant de pouvoir diriger le trafic uniquement vers l ordinateur qui doit le recevoir (en plus, cela évite d envoyer des informations confidentielles à tout le monde et renforce donc la sécurité). Pour cela, on utilise un Commutateur ou switch à la place d un hub. Un switch est capable de diriger les données, c est-à-dire leur indiquer le bon câble à suivre pour arriver à destination. Arrêter toutes les machines. Enregistrer le projet. Supprimer le hub (cliquer sur l icône du hub dans la barre de gauche, puis supprimer). Ajouter à la place un switch (icône sous le hub) et le connecter aux ordinateurs (utiliser le bon type de câble). Enregistrer sous le nouveau projet pour en faire une copie. Démarrer toutes les machines. Cocher la case Always on top de la fenêtre du switch (pour différencier les hub des switch, les lampes des switch sont vertes). Configurer les adresses IP des 3 machines. Ne pas faire de ping pour le moment! Attention! Le phénomène à observer par la suite est assez bref. Bien lire le paragraphe suivant en entier avant de commencer! Depuis m1, faire un ping sur m2. Avant de confirmer la commande (d appuyer sur [Entrée]), garder les yeux fixés sur la fenêtre du switch et ses 3 lampes vertes. Regarder ce qui se passe au niveau des lampes lors du lancement du ping et des premiers clignotements (et par la suite aussi). Si vous ne constatez rien, vous pouvez recommencer jusqu à 6 fois (depuis chacune des 3 machines vers chacune des 2 autres). Ou tout arrêter et redémarrer pour essayer de voir ce qui se passe. Arrêter le ping et recommencer le même ping (depuis m1 vers m2). Que remarque-t-on sur les lampes qui clignotent? À votre avis, que c est-il passé au niveau du routeur? 5 Broadcast et sous-réseau 5.1 Broadcast Reprendre le réseau à 3 machines et 1 hub construit précédemment. Enregistrer sous pour en faire une copie à part. Éditer les fichiers /etc/network/interfaces pour configurer correctement les 3 cartes réseaux (prendre les adresses 10.0.0.1, 10.0.0.2 et 10.0.0.3). Tout arrêter et tout (re)démarrer. Attention! Avec un switch, ça ne marchera pas. Les switch bloquent les informations de broadcast. Dans m1, regarder avec ifconfig la configuration de l interface eth0. Sur la ligne qui indique l adresse, on trouve en fait 3 adresses IP. Tout d abord, une inet addr qui est l adresse IP qu on a utilisé jusqu à présent, ensuite une Bcast qui correspond à l adresse de broadcast et finalement un Mask qui correspond au netmask qui a été configuré dans /etc/network/interfaces 6
Regarder dans le manuel de ping, l option -b. Envoyer un ping en broadcast vers l adresse de broadcast trouvé précédemment. Que remarque-t-on sur les réponses? À quoi sert cette adresse? 5.2 Sous-réseaux Rajouter un deuxième hub, H2, et 3 nouvelles machines, n1, n2 et n3. Connecter les 2 hubs entre eux et les 3 nouvelles machines à H2. Attention! Penser à prendre le bon type de câble. Astuce 4 : pour un bon rendu visuel du réseau obtenu, placer les câbles de m* vers H1, de H1 vers H2 et de H2 vers n*. les câbles allant du haut vers le bas de l image, on obtient ainsi une image symétrique plus lisible. Tout démarrer. Éditer /etc/network/interfaces pour configurer les 3 nouvelles machines avec les adresses IP 10.0.1.1, 10.0.1.2 et 10.0.1.3. Tout arrêter. Tout redémarrer. Faire un ping en broadcast depuis m1. Depuis n1. Que remarque-t-on? Que peut-on en déduire sur les broadcast? Comment pourrait-on faire un broadcast depuis m1 qui atteindrait n*? Essayer. Que remarque-t-on? À quoi sert le netmask (masque de sous-réseau)? (comparer en particulier le netmask avec l adresse de broadcast) Changer les adresses de netmask des 6 machines pour 255.255.0.0 Tout arrêter et redémarrer. Que se passe-t-il au niveau des adresses de broadcast? Et des broadcasts eux-mêmes? 6 Problèmes 6.1 Une machine injoignable Avec scp, récupérer le fichier ~moyen/enseignement/api/tp03/probleme_1.mar sur les machines du Sercal. Ouvrir le projet sous Marionnet. Démarrer toutes les machines. À l aide d ifconfig, regarder sur m2 l adresse IP de la carte réseau. Essayer depuis m1 ou m3 de faire un ping sur m2. Corriger le problème. 6.2 Encore une machine injoignable Récupérer le fichier ~moyen/enseignement/api/tp03/probleme_2.mar, ouvrir le projet avec Marionnet. Démarrer les ordinateurs. Regarder l adresse de m2. Essayer depuis m3 de se connecter à m2 à l aide de ssh. Corriger le problème. 4 Bientôt, les TPs avec le trombone qui donne des astuces au démarrage. 7