surveillance du rŽseau et de gestion Exercices de définition et de mesure des performances réseau Remarques : ----------- * Les commandes précédées de "$" doivent être exécutées en tant qu'utilisateur général et non en tant qu'utilisateur root. * Les commandes précédées de "#" nécessitent que vous travailliez en tant qu'utilisateur root. * Les commandes incluant des lignes de commande plus spécifiques (telles que "RTR-GW>" ou "mysql>") doivent être exécutées sur un équipement distant ou au sein d'un autre programme. * Une ligne de commande se terminant par "\" se poursuit sur la ligne suivante et doit être traitée comme une ligne unique. Exercices Partie I ------------------ Mesures de performances du réseau --------------------------------- 1. ping ---- ping est un programme qui envoie des paquets ICMP de demande d'écho à des hôtes cibles et attend une réponse ICMP de la part de ces derniers. Selon le système d'exploitation utilisé, vous pouvez voir les délais de propagation (RTT, Round-Trip Time) minimaux, maximaux et moyens, ainsi que parfois les écarts types par rapport à la moyenne des réponses ICMP de l'hôte cible. Voir pour plus de précisions : http://en.wikipedia.org/wiki/Ping Il est généralement déconseillé de bloquer ping. En partant de ces éléments, essayez d'utiliser Ping de différentes manières : $ ping localhost Appuyez sur ctrl-c pour interrompre le processus. Voici quelques résultats classiques de la commande ci-dessus : PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.020 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.006 ms 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.006 ms 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.006 ms 64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.006 ms 64 bytes from localhost (127.0.0.1): icmp_seq=6 ttl=64 time=0.009 ms 64 bytes from localhost (127.0.0.1): icmp_seq=7 ttl=64 time=0.007 ms ^C --- localhost ping statistics --- 7 packets transmitted, 7 received, 0% packet loss, time 5994ms rtt min/avg/max/mdev = 0.006/0.008/0.020/0.005 ms Question : pourquoi la première réponse ICMP a-t-elle mis 20 ms alors que les autres réponses ont été beaucoup plus rapides ? Il s'agit d'un type de délai. De quelle sorte de délai s'agit-il ? Créons de manière artificielle un délai de traitement. Dans une fenêtre de terminal, saisissez la commande suivante : $ ping localhost Dans une autre fenêtre de terminal (sur la même machine), tapez : $ cd $ vi cpu.sh Ajoutez les lignes suivantes dans ce fichier : #!/bin/sh sh $0 or in c while ( 1 ) fork(); Enregistrez le fichier et rendez-le exécutable : $ chmod a+x cpu.sh Exécutez maintenant le script de bouclage : $ ./cpu.sh Vous devriez voir les résultats de ping dans votre autre fenêtre commencer à prendre plus de temps. Une fois terminé, appuyez sur ctrl-c dans les deux fenêtres du terminal afin d'interrompre les deux processus. 2. mtr --- L'outil mtr associe ping et traceroute en un seul et même affichage mis à jour de manière dynamique. Faites un essai : $ mtr nsrc.org Le résultat de la commande looks varie entre les environnements Linux et UNIX, mais vous obtiendrez en général une synthèse des paquets perdus sur chaque noeud du chemin jusqu'à l'hôte cible distant, du nombre de paquets ICMP de demande d'écho envoyés, le dernier délai RTT vers l'hôte, le meilleur, le RTT minimal, maximal et moyen ainsi que les écarts par rapport à la moyenne. L'affichage du pourcentage de paquets perdus dans ce format permet de localiser beaucoup plus facilement les problèmes de réseau. Exercices Partie II ------------------- Analyse du réseau ----------------- 1. lsof et netstat --------------- Vérifiez les services présents sur votre machine. Vous pouvez pour cela vous baser sur la présentation du réseau. Ou voir avec "man lsof", "man netstat ", "lsof -h" et "netstat -h" les options disponibles (elles sont nombreuses !). Pensez à utiliser sudo lorsque vous utilisez lsof et netstat afin de vous doter des permissions nécessaires pour tout voir * avec lsof : quels sont les services IPv4 qui écoutent votre machine ? * avec netstat, quels sont les services IPv4 et IPv6 qui écoutent votre machine ? 2. tcpdump et tshark ----------------- Pour utiliser tcpdump, vous devez utiliser sudo ou vous connecter en tant que root. Pour utiliser wireshark vous devez ouvrir un terminal et utiliser sudo en tant qu'utilisateur normal (c'est-à-dire avant l'identifiant "tldadmin") : Utilisez tcpdump comme suit : $ sudo tcpdump -i lo -A -s1500 -w /tmp/tcpdump.log Vous pouvez maintenant initier du trafic sur votre interface avec un autre terminal. Exemple : $ ping localhost $ ssh localhost etc. Appuyez ensuite sur CTRL-C pour mettre fin à la session tcpdump. Remarque : ssh donne des résultats beaucoup plus "intéressants". Lisons maintenant avec shark les résultats de tcpdump : $ sudo tshark -r /tmp/tcpdump.log | less Que voyez-vous ? Pouvez-vous suivre la session SSH initiée plus haut ? Essayons maintenant ceci : $ sudo rm /tmp/tcpdump.log $ sudo tcpdump -i eth0 -A -s1500 -w /tmp/tcpdump.log Sur un autre terminal : $ ftp limestone.uoregon.edu Connected to limestone.uoregon.edu. 220 FTP Server ready. Name (limestone.uoregon.edu:sysadmin): anonymous Password: ftp> exit Mettez fin à la session tcpdump sur l'autre terminal (CTRL-C) et observez maintenant le contenu du fichier log : $ sudo tshark -r /tmp/tcpdump.log | less Voyez-vous votre mot de passé ? En présence d'un gros trafic sur votre réseau, il se peut que le fichier tcpdump.log soit volumineux. Vous pouvez rechercher votre session FTP en tapant : "/FTP" dans l'écran de résultat. Sachant que vous avez redirigé le flux de votre commande shark sur la commande "less" avec "/", la recherche de chaînes fonctionne. Appuyez maintenant sur la touche "n" pour "next" afin de suivre la session FTP. Vous devriez voir la chaîne suivante : "FTP Request: PASS PasswordYouTypedIn" Ce type de script permet de détecter très facilement des mots de passe cryptés sur des réseaux LAN sans fil. 3. Utilisation d'iperf ------------------- Utilisez "man iperf" ou "iperf -h" pour obtenir de l'aide. Installez tout d'abord iperf : $ sudo apt-get install iperf Demandez à votre voisin d'exécuter : $ iperf -s Connectez-vous à la machine de votre voisin avec : $ iperf -c ipNeighbor Comment se présente le débit entre vos machines ? Vous pouvez connecter vos deux PC directement (par un câble sans passer par le commutateur). Utilisez une adresse IP privée sur les deux machines, vérifiez que vous pouvez adresser mutuellement des "ping", puis renouvelez les étapes précédentes avec votre nouvelle connexion. Le débit est-il meilleur ? Si vous en avez le temps, continuez d'explorer les options iperf. Si vous disposez d'un PC distant fonctionnant sous UNIX ou Linux, vous pouvez essayer d'installer iperf et de tester la connexion entre le laboratoire de l'atelier et votre machine distante. Autres aspects à explorer... * Testez TCP dans différentes tailles de fenêtres (-2). * Vérifiez TCP MSS (-m). Quel en est l'incidence sur le débit ? Qu'entend-on par découverte du MTU d'un chemin ? * Testez avec deux fils parallèles (-P) et comparez les totaux. Constatez-vous des différences ? Pourquoi ? * Testez avec différentes tailles de paquets et l'option TCP_NODELAY (-N).