1 Introduction TP : Introduction à TCP/IP sous UNIX Le but de cette séance est de vous familiariser au fonctionnement de la pile TCP/IP sous UNIX. Les systèmes UNIX (Linux, FreeBSD, Solaris, HPUX,...) utilisent le protocole TCP/IP en standard pour communiquer avec d autres machines. L intégration fiable et cohérente de la pile TCP/IP fait d UNIX un leader dans les applications réseau (calcul parallèle, serveurs, parc de machines,...). Les commandes suivantes constituent les outils de base, indispensables à connaître pour configurer et utiliser convenablement le réseau. Contrairement à d autres systèmes, ces outils n offrent pas d interface graphique et peuvent dérouter les non-informaticiens (ce qui n est pas votre cas!). Cette apparente faiblesse cache l énorme avantage à ces outils d être plus facilement portables et donc d être standardisés. Remarque : La plupart des commandes UNIX offrent une brève description de leur fonctionnement et utilisation. Pour cela il suffit de taper la commande suivie de --help. Enfin une documentation plus complète est accessible par l utilisation de la commande man en tapant : man nom_de_commande. Remarque : Les shells UNIX différencient les majuscules des minuscules pour les noms de commandes et de fichiers : LS n est pas la même chose que ls. Dû à la contrainte du platforme du TP, ne pas modifier l adresse et la configuration DNS de votre machine. 2 Commandes de base ping Cette commande permet de tester la joignabilité d une machine. ping utilise le protocole ICMP en envoyant un message Echo Request à la machine distante, qui à la réception de celui-ci renvoie un paquet Echo Reply vers la machine locale. Cette commande constitue le test minimal pour vérifier que deux machines peuvent communiquer. La syntaxe générale est : ping [options] nom_de_machine_distante host Cette commande interroge le Serveur de noms (DNS) et permet entre autres de connaître l adresse IP d une machine à partir de son nom. ifconfig Cette commande permet de connaître la configuration des interfaces réseau et également de la modifier. Pour afficher la configuration d une interface, il faut taper : ifconfig interface. Sous Linux la carte ethernet a pour nom d interface eth0. Si aucune interface n est précisée, les informations sont affichées pour toutes les interfaces réseau actives. La syntaxe de base pour configurer une interface est la suivante : ifconfig interface adresse netmask masque [options] netstat Couteau suisse réseau, cet outil permet d obtenir les informations sur la configuration et l état actif du réseau. arp Affiche ou modifie la table de résolution d adresses de la couche liaison (associations adresse MAC - adresse IP). route Manipule manuellement les tables de routage. traceroute Affiche les adresses des machines impliquées dans une route vers une destination. 1
telnet Ce programme permet d ouvrir une session shell interactive sur une machine distante à travers le réseau. Le protocole TELNET étant extrêmement simple, la commande telnet peut être utilisée pour tester des protocoles manuellement, laissant à l utilisateur le soin d interagir avec le serveur. ftp Protocole de transfert de fichiers (File Tranfer Protocol). who La commande who affiche la liste des utilisateurs connectés sur la machine courante. finger Cette commande permet d obtenir les informations d un utilisateur (généralement l identité de la personne détentrice du compte ainsi que sa fonction) à partir de son login. last Affiche les dernières connexions ayant eu lieu sur la machine courante. 3 Fichiers de configuration et services L organisation du système de fichiers UNIX est fortement hiérarchisée. Les commandes de base d administration se trouvent dans /sbin, les commandes de base accessibles par les utilisateurs dans /bin, les comptes (en général) dans /home et les fichiers de configuration sont (presque tous) regroupés dans le répertoire /etc. La commande more vous permet d afficher le contenu d un fichier texte. vi et emacs sont des éditeurs, c est-à-dire qu ils permettent de modifier des fichiers. La liste suivante décrit brièvement les fichiers de configuration de TCP/IP. /etc/hosts Liste des correspondances de noms aux adresses IP du réseau. Cette liste est utilisée par défaut lorsque le DNS n est pas accessible (par exemple au démarrage de la machine). /etc/resolv.conf Fichier dans lequel on spécifie le nom de domaine auquel appartient la machine, l adresse du serveur de noms et également une liste de domaines à essayer de rajouter au nom demandé lorsque celui-ci n existe pas. /etc/services Ce fichier établit la correspondance entre le nom d un service, le port utilisé et le protocole de transport (TCP ou UDP). 3.1 Le démon Internet Certains services sont lancés dès le démarrage du système comme named le démon DNS. Mais étant donné le nombre croissant de services réseaux, il pourrait s avérer peut efficace de démarrer tous ces services, qui occuperaient des ressources (CPU, mémoire, connexions) inutilement. Ainsi un programme nommé démon Internet, est lancé au démarrage du système et a pour fonction de démarrer un service lorsqu il réceptionne des requêtes pour celui-ci. Dans UNIX, le démon Internet se nomme inetd. /etc/inetd.conf Fichier de configuration du démon internet. Il contient la liste des serveurs à démarrer. Chaque ligne de ce fichier a le format suivant : service type protocole attente uid serveur [arguments] service Nom du service tel qu il est écrit dans le fichier /etc/services type Type de transport : stream correspond à TCP, dgram à UDP, raw signifie qu aucun protocole de transport n est utilisé. protocole tcp ou udp uid Identifiant de l utilisateur lançant le service (généralement root, mais on peut très bien créer un compte pour définir les droits d exécution d un service) 2
serveur Chemin d accès complet au démon lancé par inetd. /etc/hosts.allow Fichier de configuration du service de contrôle d accès tcpd. Ce fichier contient la liste des machines dont l accès à un ensemble de services autorisé. Le format d une ligne de ce fichier est : service1 [, service2,...] : machine1 [, machine2,...] /etc/hosts.deny Fichier de configuration du service de contrôle d accès tcpd. Ce fichier contient la liste des machines dont l accès à un ensemble de services est interdit. Le format est le même que pour le fichier hosts.allow. En cas de conflit, ce sont les droits définis dans hosts.allow qui sont appliqués. 3.2 Le système de fichiers partagés NFS Abréviation de Network File System, ce service permet de partager sur le réseau une arborescence de répertoires. Ce service nécessite une configuration du coté client et serveur. Du coté serveur, il faut définir les partages, du coté client il faut intégrer le répertoire distant à l arborescence du système de fichiers. De cette façon, l utilisateur accède à un fichier distant de façon transparente exactement comme un fichier local. /etc/exports Stocke la configuration du service NFS. Chaque ligne de ce fichier correspond à un partage et à la forme suivante : répertoire machine(options) [machine(options)...] Exemple : /home/public pluton(rw) mercure(rw) mars(ro) 4 Redémarrage des services réseaux Pour être effective, une modification des fichiers de configuration des services réseaux doit être suivie d un redémarrage des services réseaux. Pour cela, il n est pas nécessaire de redémarrer le système. Cela peut se faire en exécutant la "partie réseau" du script de démarrage en tapant : /etc/rc.d/init.d/network restart Exercices A. Configuration de l interface réseau 1. Utilisez la commande man pour obtenir la documentation complète des commandes présentées dans la section 2. 2. Nom et adresse d hôte 2.1 Trouvez le nom d hôte de votre machine? 2.2 En utilisant la page du manuel en ligne (commande man), découvrez toutes les possibilité de la commande uname et exécuter la commande avec l option permettant d afficher le nom d hôte. 2.3 Que fait la commande who am i? 2.4 Utilisez la commande ping pour tester la joignabilité des machines (en utilisant les noms et les adresses IP). 2.5 A l'aide de la commande ifconfig, déterminer pour la carte réseau (appelée généralement eth0) de votre machine. En allant sur le site http://standards.ieee.org/regauth/oui/index.shtml donner le nom du constructeur de votre carte réseau. La commande host permet de résoudre les noms d hôte et les adresses IP. 2.5 Résoudre plusieurs fois d affiler le nom d hôte du serveur Web de CNN (www.cnn.com). Comparer les réponses renvoyées. Pourquoi diffèrent-elles? 3 Fichiers d initialisation 3.1 Editer les fichiers /etc/inittab et /etc/rc.d/rc.sysinit. Quelles observations peut-on faire? 3
4 Routage IP 4.1 Trouvez la commande pour afficher la table de routage de votre machine. 4.2 Quelle est l adresse IP de la passerelle du réseau local? 4.3 Donner (sans l exécuter) la ligne de commande qui permet de créer l entrée correspondant à la route par défaut. 4.4 Afficher la table de routage. Quels sont les types de routes que contient la table de routage? Expliquer la présence de ces différents types de routes. 5 Commande netstat 5.1 Vérifiez votre configuration avec la commande netstat. Déterminez l adresse MAC de votre carte réseau. 5.2 Afficher la table de routage utilisant la commande netstat. Afficher les connexions actives. 5.3 À l aide des statistiques, calculer le taux de délivrance de paquets observé par l hôte. 6 Cache ARP 6.1 Quel est le contenu du cache arp de votre machine? 6.2 Trouvez la commande qui permet de créer manuellement une entrée permanente faisant correspondre l adresse IP de la gateway du réseau local à son adresse physique. 6.3 Comment distinguer les entrées permanentes du cache ARP? 7 Outil ping et traceroute 7.1 Tester ping lri.fr et ping -c 5 lri.fr. Quelle est la différence entre ces deux commandes? 7.2 Expliquer les 3 types d erreurs que renvoie la commande ping : unknown host network unreachable no answer (ou 100% packet loss) 7.3 Dans certains cas, il peut être impossible d établir une connexion au niveau applicatif (ftp, telnet, etc.) avec un hôte qui est pourtant pingable (l hôte distant répond correctement aux messages ECHO_REQUEST). Donner au moins deux raisons à cela. 7.4 Pourquoi seul le super-utilisateur a-t-il le droit d utiliser les options -f, -l et -b? 7.5 A l'aide de la commande traceroute, donnez le nombre de sauts (routeurs traversés) effectués pour atteindre www.google.com 8 Application ftp 8.1 Téléchargez un fichier depuis une machine du réseau avec ftp. B. Les fichiers de configuration B.1 Supprimez l accès au service FTP dans inetd.conf. Vérifiez que cela fonctionne. B.2 Interdisez l accès au service FTP à une machine. Interdisez TELNET à une autre. Vérifiez que cela fonctionne. C. Manipulation de protocoles simples Le service de courrier électronique est disponible en standard sur tous les systèmes UNIX. Il se décompose souvent en deux services réseaux distincts : un pour l envoi des messages, un autre pour les récupérer depuis le serveur de mails. Le protocole SMTP (Simple Mail Transport Protocol) est responsable de la distribution des messages à travers Internet et le réseau local. Il fonctionne au dessus du protocole TCP (c est un protocole de la couche application). Pour envoyer un mail, un client mail (mail, elm, mutt,...) utilise ce protocole pour dialoguer avec le serveur de mail du réseau afin d envoyer les messages. La lecture des mails peut s effectuer de plusieurs manières : si la machine que vous utilisez héberge un serveur de courrier, votre lecteur de courrier se contentera d afficher avec le formatage approprié le fichier /var/mail/nom_login. Si en revanche votre station n héberge pas de serveur et que le répertoire /var/mail/nom_loginn est pas accessible via NFS, votre client de mail doit d abord récupérer vos 4
messages depuis le serveur de mails sur votre machine, puis les afficher. Le protocole utilisé pour cette opération est généralement POP3 (Post Office Protocol version 3). Q.1 Les principaux mots-clefs de SMTP sont regroupés dans le tableau 1. L envoi d un message se fait donc par la succession des commandes HELO, FROM, RCPT TO, DATA puis QUIT. Sachant que le protocole SMTP utilise le port 25, utilisez telnet pour envoyer un courrier au compte root de votre machine puis à celui d une autre machine. Remarque : Les plus curieux d entre vous auront remarqué que c est à vous de préciser l émetteur et non au serveur de mails de vérifier la validité de vos informations. Néanmoins, le serveur de mails ajoute à l en-tête du message l adresse de la machine qui le lui a transmis. Le protocole SMTP ne permet donc pas complètement d envoyer des emails anonymes. Q.2 Maintenant que nous sommes capables de nous passer d un client mail pour envoyer du courrier (ce qui en soit n est pas très utile, sauf à des fins didactiques), occupons nous maintenant de sa réception. La syntaxe du protocole POP3 est résumée dans le tableau 2. Une session POP3 comporte obligatoirement une phase d authentification (USER et PASS) puis c est une suite de commandes RETR et éventuellement DELE. Le port utilisé par POP3 est le 110. Utilisez telnet pour voir le contenu d un mail sur votre machine, puis sur celle d un voisin (en admettant que vous possédez un compte sur celle-ci). 5
D. Découverte de la topologie Internet Q.1 Visitez le site www.renater.fr. A quoi sert ce réseau? Quels sont les débits des différents liens? Quels sont les sites reliés? A quels réseaux mondiaux Renater est il relié? Q.2 Visitez le site www.geant2.net. Ce réseau est il de même envergure que Renater? Quel est son rôle? Quels pays européens ne sont pas reliés à ce réseau? Q.3 Visitez le site www.rap.prd.fr. De quel type est le Réseau Académique Parisien? Quelle est sa topologie? La Faculté d Orsay est elle reliée à ce réseau? Pourquoi? A quoi sert la métrologie d un réseau? Q.4 Ouvrez une console et effectuez un traceroute vers les trois sites suivants : a. stanford.edu (Stanford University, California) b. sjsu.edu (San José State University, California) c. sfgov.org (San Franscisco City Hall, California) En essayant de déduire la ville où chaque routeur est localisé à partir de son nom, tracez approximativement les trois chemins empruntés sur le sol américain pour atteindre les destinations (utilisez google maps par exemple). Utilisez éventuellement un outil tel que http://www.generic nic.net/dyn/whois/ pour déterminer l emplacement d un routeur intermédiaire. Q.5 Pourquoi, alors que les destinations sont géographiquement très proches, les routes empruntées et les réseaux traversés diffèrent? Q.6 Visitez les sites des réseaux traversés pour voir leur topologie, les lignes de communications et les débits disponibles (par exemple, le site www.internet2.org). Q.7 A chaque ligne d'un traceroute, vous trouvez une ou plusieurs valeurs de temps aller retour pour le routeur correspondant. Lorsque ces temps diffèrent, considérez le temps le plus petit. En exploitant ces données temporelles et en supposant que tous les liens entre les routeurs sont en fibre optique à très haute capacité (donc la distance est proportionnelle au délai de propagation entre deux routeurs, soit 200.000 km/s), calculez la distance entre votre machine et quelques routeurs intermédiaires. Il est possible que vous trouviez des distances aberrantes : plus que 50.000 km entre deux sites européens par exemple. En dehors du délai de propagation, quel(s) autre(s) facteur(s) important(s) peut (peuvent) augmenter significativement ce délai de bout-en-bout? 6