Copyright ©
présent sur cette page.
Tous les TP se font en environnement Unix
.
Vous devez redémarrer votre machine de la salle de TP sous Unix
si elle est sous Windows
.
L'objectif est de vous faire découvrir le fonctionnement d'Internet en l'illustrant par les échanges ayant lieu dans le réseau quand un client Web demande un document à un serveur Web. L'objectif de cette première séance est de mettre en place une architecture réseau capable d'illustrer de tels échanges. Vous devrez :
gns3
, l'architecture composée d'un PC client Web doté de Firefox, d'une box, de deux routeurs de Fournisseurs d'Accès à Internet (FAI
), d'un serveur Web et d'un serveur DNS
(Domain Name Server, un serveur qui stocke les correspondances entre les noms des serveurs et leur adresse IP, par exemple lifrw.univ-lyon1.fr -> 134.214.200.136)DNS
du PC et du serveur Web, le NAT
, le routage sur les machines, la box et les routeurs intermédiaires.ping
, tracepath
et telnet
.
Pour faire ce TP, vous allez utiliser l'émulateur réseau gns3
. Ce logiciel n'est disponible que dans les salles TP du bâtiment Nautibus.
Vous ne pourrez donc pas faire le TP chez vous ou dans les autres salles informatiques du campus.
Pour commencer, ouvrez un terminal et copier-coller les commandes suivantes en faisant un Drag and drop (glisser/déposer) de toutes les lignes à la fois :
cd $HOME rm -Rf GNS3 .config/GNS3 .config/VirtualBox Téléchargements/GNS3* rm -Rf .local/lib/python* wget http://perso.univ-lyon1.fr/olivier.gluck/Cours/Supports/L3IF_RE/GNS3.tar.gz -O GNS3.tar.gz tar zxvf GNS3.tar.gz; cd GNS3 bash lifasr2_tpgns3.sh echo "Affichage du contenu de votre compte" cd $HOME; du -h -d 1 echo "Si total > 400M, faire de la place avant de lancer GNS3" echoVérifiez qu'il n'y a pas eu de message d'erreur dans les commandes précédentes et qu'il reste suffisament de place sur votre compte.
La plupart des questions posées dans les sujets de TP sont suivies d'une Aide.
Avant de faire une question, il faut lire l'Aide qui suit la question.
Important : tout au long du TP, notez dans un fichier toutes les commandes que vous tapez sur chaque machine et routeur. Ainsi, si vous perdez la configuration des équipements, il vous suffira de recopier les commandes dans les bons terminaux pour restaurer votre configuration.
gns3
va vous permettre de réaliser la topologie réseau souhaitée comme le montre la figure ci-dessus. La topologie comprend un client Web appelé CLIENT
, un serveur Web appelé SERVEUR
, le serveur DNS du FAI du client Web appelé DNS
, un premier routeur qui est la box appelé Box
et deux routeurs de FAI appelés FAI-CLIENT
et FAI-SERVEUR
. La fenêtre principale de gns3
permet, en quelques instants, d'émuler intuitivement les quelques équipements mentionnés précédemment.
Ouvrez gns3
en cliquant sur le menu Applications
en haut à gauche puis Lancer le programme...
et tapez gns3
. Créez un nouveau projet nommé TPreseau1 dans le champ Name
visible sur l'image ci-dessous. Ne changez pas le contenu du champ Location
.
Le volet à gauche de l'interface est le menu des équipements. Il liste l'ensemble du matériel à votre disposition. A l'aide d'un glisser-déposer d'un équipement vers l'espace vide au milieu, vous créez une instance de cet équipement.
Mettez en place tous les équipements conformément au schéma de la topologie à mettre en place présenté en introduction : un client Web appelé CLIENT
, un serveur Web appelé SERVEUR
, le serveur DNS du FAI du client Web appelé DNS
, un premier routeur qui est la box appelé Box
et deux routeurs de FAI appelés FAI-CLIENT
et FAI-SERVEUR
.
Renommez chaque équipement comme indiqué sur le schéma.
A partir du volet gauche, cliquez sur l'icône pour développer la liste des équipements terminaux. Faites un glisser-déposer de Client-ou-Serveur
vers l'espace de droite pour ajouter une machine cliente ou serveur. Cet élément contient l'image d'un ordinateur sous Linux (distribution Ubuntu).
A partir du volet gauche, cliquez sur l'icône pour développer la liste des routeurs. Faites glisser un exemplaire de celui disponible pour ajouter un routeur dans la topologie.
Pour renommer un appareil, double-cliquez sur son nom.
PLAY
.
Soyez patient(e), le démarrage des machines peut être long.
Trois fenêtres s'ouvrent. Ce sont les écrans des clients ou serveurs Linux. Vous pouvez identifier les machines grâce au nom de leur fenêtre.
Devices/Drag and Drop
et cochez Bidirectionnel
si ce n'est pas fait.
Testez les commandes pwd
, ls
, et id
dans le terminal ouvert et répondez aux questions suivantes :
Quel est le répertoire courant ?
Quel est son contenu ?
Quel est l'identifiant de l'utilisateur ?
Pour faire ce TP, vous aurez besoin d'avoir les droits d'administrateur sur la machine. Pour cela, tapez la commande sudo su
dans le terminal de chaque machine. Le mot de passe est lifasr2.
Quel est le nouvel identifiant de l'utilisateur ?
Les routeurs que vous utilisez n'ont pas le système Linux mais un système dédié appelé Cisco IOS
. Les terminaux partagent certaines commandes et fonctionnalités avec les terminaux UNIX comme par exemple l'auto-complétion avec la touche Tab
, les flèches directionnelles pour se déplacer dans l'historique des commandes... En revanche, vous allez voir que la configuration d'une carte réseau ou d'une table de routage ne se fait pas de la même manière sur un routeur ou sur une machine Linux (cliente ou serveur).
Ouvrez le terminal du routeur Box
en double-cliquant sur l'équipement. Procédez de même pour les deux autres routeurs.
Affichez la configuration courante du routeur à l'aide de la commande show running-config
Ici, seront stockées toutes les configurations que vous effectuerez pendant le TP. Vous pouvez faire défiler avec Entrée
, et quitter cet affichage avec Ctrl-C
.
Pour sauvegarder vos configurations d'un routeur, il faudra penser à faire copy running-config startup-config
sur chaque routeur avant de quitter gns3
.
Affichez l'état des cartes réseaux du routeur à l'aide de la commande show ip interface brief
.
Dans la colonne "Interface", se trouve la liste des cartes réseaux. FastEthernet désigne une carte Ethernet, Serial est utilisée pour connecter deux routeurs entre eux.
Combien comptez-vous de cartes réseaux ? Les interfaces ont-elles une adresse IP par défaut ? Sont-elles activées (colonne Status) ?
Vous allez maintenant créer les liens (câbles Ethernet
ou Serial
) qui relient les équipements entre eux. Les liens Serial
sont utilisés pour relier deux routeurs entre eux alors que les liens Ethernet
sont utilisés pour relier une machine à un routeur.
Cliquez sur la dernière icone du volet gauche permet de basculer en "Mode Lien".
Dans ce mode, cliquez sur la machine CLIENT
, sélectionnez l'interface Ethernet0
, puis cliquez sur la Box, et sélectionnez l'interface FastEthernet0/0
. Le client Web et Box sont à présent reliés par un câble Ethernet
.
Reliez tous les équipements selon le schéma suivant :
CLIENT(eth0) -> Box(FastEthernet0/0) (fait à la question précédente !) Box(Serial1/0) -> FAI-Client(Serial1/1) FAI-Client(Serial1/0) -> FAI-Serveur(Serial1/0) DNS(eth0) -> FAI-Client(FastEthernet0/0) SERVEUR(eth0) -> FAI-Serveur(FastEthernet0/0)
Ouvrez le terminal de la Box et tapez show ip interface brief
pour afficher la configuration des cartes réseaux. Est-ce que la création des liens a modifié la configuration des cartes réseaux ? Sont-elles actives ?
Quittez le mode Lien en recliquant sur .
Pour permettre aux équipements de communiquer, il faut attribuer une adresse IP
à chaque carte réseau. Les machines utilisent une seule carte réseau mais les routeurs en utilisent plusieurs. Pour répondre aux questions ci-dessous, aidez-vous du schéma du réseau présenté au début du sujet.
Pour chaque équipement (machine ou routeur), indiquez combien de carte réseau sont utilisées et précisez l'adresse IP de chaque interface.
Combien de sous-réseaux y a t-il dans la topologie mise en oeuvre ?
Pour répondre à cette question, vous devez observer le schéma de la topologie du réseau qui se trouve au début du sujet du TP. Ouvrez cette image dans un nouvel onglet afin d'y accéder rapidemment dans la suite du TP.
Un sous-réseau est un ensemble d'adresses IP dont la taille est donnée par le masque de sous-réseau (ou netmask). Par exemple, /24
signifie que 24 bits sont réservés pour l'adresse du sous-réseau et 8 bits pour l'adresse des machines dans le sous-réseau. Dans un sous-réseau de masque /24
, on peut donc attribuer 2⁸-2
adresses IP aux machines de ce sous-réseau. En décimal, /24
s'écrit 255.255.255.0
ce qui correspond à la mise à 1
des 24 premiers bits de l'adresse IP.
Chaque carte réseau a une adresse IP dans un seul sous-réseau. Le client et les serveurs utilisent une seule interface donc un seul sous-réseau. Le rôle d'un routeur est de faire passer les paquets IP d'un sous réseau à un autre sous-réseau. De ce fait, les routeurs utilisent plusieurs interfaces et sont donc dans plusieurs sous-réseaux.
En mode super-utilisateur (sudo su
), affichez la configuration des interfaces du client Web à l'aide de la commande ip addr show
.
La carte réseau eth0
a-t-elle déjà une adresse IP ? Quelle est son adresse MAC ?
Utilisez la commande ip addr add
pour attribuer statiquement son adresse IP à chaque carte réseau des machines client ou serveur :
Client(eth0) -> 192.168.0.1/24 DNS(eth0) -> 8.8.8.7/8 Serveur(eth0) -> 100.1.1.1/10
Sur les machines, il ne suffit pas d'attribuer une adresse IP à une interface pour qu'elle fonctionne. Il faut également l'activer. Pour activer les interfaces configurées, exécutez la commande ip link set up dev eth0
sur chaque machine.
Vérifiez que tout est correct avec ip addr show dev eth0
Exécutez la commande ip route
pour afficher la table de routage de la machine. La commande doit afficher une ligne sinon vous avez fait une erreur de configuration. A quoi correspond cette ligne ?
Pour attribuer statiquement une adresse IP à une machine Ubuntu, ouvrez un terminal, passez en mode super-utilisateur avec sudo su
et tapez :
ip addr add [ADDRESSE IP]/[NETMASK] dev eth0
Par exemple : ip addr add 192.168.0.1/24 dev eth0
En cas d'erreur, pour supprimer une adresse attribuée à une interface, il suffit de faire ip addr del
.
Par exemple : ip addr del 192.168.0.1/24 dev eth0
Vous allez maintenant configurer les cartes réseaux des routeurs. Les commandes que vous allez utiliser sont différentes de celles exécutées précédement sur les machines.
Avec l'aide ci-dessous, attribuez les adresses IP aux différentes interfaces des routeurs comme suit :
Box(FastEthernet 0/0) -> 192.168.0.254 255.255.255.0 Box(Serial 1/0) -> 12.25.0.1 255.0.0.0 FAI-Client(Serial 1/1) -> 12.25.0.2 255.0.0.0 FAI-Client(Serial 1/0) -> 85.0.0.1 255.0.0.0 FAI-Client(FastEthernet 0/0) -> 8.0.0.1 255.0.0.0 FAI-Serveur(Serial 1/0) -> 85.0.0.2 255.0.0.0 FAI-Serveur(FastEthernet 0/0) -> 100.0.0.1 255.192.0.0Vérifiez avec
show ip interface brief
que la configuration des interfaces a bien été modifiée et que les interfaces sont actives c'est à dire deux fois UP
.
Comment attribuer une adresse IP à une interface d'un routeur Cisco ?
no
![nom-du-routeur]#
, passez en mode administrateur avec enable
configure terminal
L'invite du routeur devient [nom-du-routeur](config)#
FastEthernet0/0
ou Serial1/0
), entrez la commande int fa0/0
ou int s1/0
L'invite [nom-du-routeur](config-if)#
doit apparaitre.ip address [adresse IP] [masque de sous-réseau]
ip address 192.168.0.254 255.255.255.0
no shutdown
exit
exit
pour quitter le mode (config)#
quand vous avez terminé.(config)#
et tapez la commande copy run start
pour sauvegarder vos modifications. Quand le terminal demande le fichier de destination, il faut faire entrer pour confirmer.
Si tout a été correctement configuré, vous pouvez maintenant tenter de faire communiquer les différents équipements entre eux. Pour cela, vous allez utiliser la commande ping
qui envoie un paquet d'un équipement à un autre équipement dont l'adresse IP est spécifiée en argument du ping
. L'équipement destinataire va à son tour renvoyer le paquet reçu à l'équipement qui a émis le ping
. Cette commande fait donc un aller-retour entre l'émetteur et le destinataire.
La commande ping
s'exécute dans le terminal d'une machine ou d'un routeur. La commande est identique pour Linux et Cisco IOS.
Par exemple, ping 192.168.0.254
depuis la machine CLIENT doit afficher :
Pour arrêter le ping
sur une machine, il faut faire Ctrl-c
. Sur les routeurs, le ping s'arrête tout seul après l'envoi de 5 messages.
A partir d'un terminal du CLIENT, utilisez ping
pour tester la connectivité vers la Box (192.168.0.254). La requête a-t-elle abouti ?
A partir d'un terminal du DNS, utilisez ping
pour tester la connectivité vers la FAI-CLIENT (8.0.0.1). La requête a-t-elle abouti ?
A partir d'un terminal du SERVEUR, utilisez ping
pour tester la connectivité vers la FAI-SERVEUR (100.0.0.1). La requête a-t-elle abouti ?
A partir d'un terminal de la Box, utilisez ping
pour tester la connectivité vers la FAI-CLIENT (12.25.0.2). La requête a-t-elle abouti ?
A partir d'un terminal du FAI-CLIENT, utilisez ping
pour tester la connectivité vers FAI-SERVEUR (85.0.0.2). La requête a-t-elle abouti ?
Si l'un des ping
précédents n'a pas fonctionné, il faut dépanner en vérifiant vos configurations sur les machines et/ou les routeurs. Pour cela, sur les machines, utilisez les commandes ip addr show dev eth0
et ip route
. Sur les routeurs, utilisez les commandes show ip int brief
et show ip route
A ce stade, vous avez correctement configuré les adresses IP de vos équipements finaux (machines Linux) et intermédiaires (routeurs). Cela n'est pourtant pas suffisant pour que toutes les communications soient possibles. En effet, pour l'instant, les ping
fonctionnent uniquement entre les cartes réseaux qui sont dans le même sous-réseau.
A partir d'un terminal du SERVEUR, utilisez ping
pour tester la connectivité vers l'interface Serial du FAI-SERVEUR (85.0.0.2). La requête a-t-elle abouti ? Idem pour joindre 85.0.0.1 ? Idem pour 12.25.0.1 ? Idem pour 8.8.8.7 ?
A partir d'un terminal du FAI-SERVEUR, utilisez ping
pour tester la connectivité vers l'interface Serial 1/1 du FAI-CLIENT (12.25.0.2). La requête a-t-elle abouti ? Idem pour joindre 12.25.0.1 ? Idem pour 8.8.8.7 ?
A partir d'un terminal du FAI-CLIENT, utilisez ping
pour tester la connectivité vers l'interface Fa 0/0 du FAI-SERVEUR (100.0.0.1). La requête a-t-elle abouti ? Idem pour joindre 100.1.1.1 ?
Qu'en concluez-vous ?
Depuis un équipement, il est pour l'instant impossible de joindre un équipement qui se trouve dans un autre sous-réseau car la route vers ce sous-réseau est inconnue (Network unreachable
). Pour joindre un équipement qui se trouve dans un sous-réseau distant, il est nécessaire de passer par routeur intermédiaire appelé prochain saut
dont il faut préciser l'adresse IP. Pour chaque sous-réseau distant, il est donc nécessaire d'ajouter une route vers lui dans la table de routage en précisant l'adresse IP du prochain saut.
Voici pour chaque routeur la liste des sous-réseaux distants et le prochain saut qu'il faut ajouter dans la table de routage du routeur :
Sur FAI-CLIENT : ajouter 100.0.0.0/10 via 85.0.0.2 Sur FAI-SERVEUR : ajouter 8.0.0.0/8 et 12.0.0.0/8 via 85.0.0.1 Sur la Box : ajouter 0.0.0.0/0 via 12.25.0.2L'adresse
0.0.0.0/0
est l'adresse de réseau qui représente tout l'Internet car elle contient toutes les adresses IP. C'est le plus grand sous-réseau possible. Cela signifie qu'ajouter une route vers ce sous-réseau revient à envoyer tous les paquets vers le prochain saut associé à cette route. Cette route est appelée la route par défaut
c'est à dire la route qui sera utilisée si aucune des autres routes présentes dans la table de routage ne correspond à la destination recherchée.
Sur la Box, les sous-réseaux distants sont 8.0.0.0/8
, 85.0.0.0/8
et 100.0.0.0/10
. Pour joindre ces trois sous-réseaux depuis la Box, il faut passer par 12.25.0.2
. Plutôt que d'ajouter trois lignes dans la table de routage ayant le même prochain saut, vous pouvez ajouter une route par défaut comme suggéré ci-dessus.
En vous aidant de l'aide ci-dessous, sur chacun des trois routeurs, ajoutez les routes manquantes indiquées ci-dessus. En mode enable
, vérifiez avec la commande show ip route
que la table de routage est complète. Pouvez-vous voir vos configurations avec la commande show running-config
?
A partir d'un terminal du FAI-CLIENT, utilisez ping
pour tester la connectivité vers FAI-SERVEUR (85.0.0.2). La requête a t-elle abouti ? Idem pour joindre 100.0.0.1 ? Idem pour 100.1.1.1 ?
A partir d'un terminal du FAI-SERVEUR, utilisez ping
pour tester la connectivité vers FAI-CLIENT (12.25.0.1). La requête a t-elle abouti ? Idem pour joindre 8.0.0.1 ? Idem pour 8.8.8.7 ?
A partir d'un terminal de la Box, utilisez ping
pour tester la connectivité vers FAI-SERVEUR (85.0.0.2). La requête a t-elle abouti ? Idem pour joindre 100.0.0.1 ? Idem pour 100.1.1.1 ?
Quelles sont vos conclusions ? Pourquoi les machines sont-elles toujours injoignables ?
Pour ajouter une route sur un routeur Cisco, il faut passer en mode enable
puis en mode configure terminal
. L'invite doit être [nom-du-routeur](config)#
. Pour chaque route à ajouter dans la table de routage, il faut utiliser la commande suivante :
ip route [adresse IP du réseau distant] [netmask] [adresse IP du prochain saut]
Par exemple : ip route 100.0.0.0 255.192.0.0 85.0.0.2
Pour supprimer une route, en cas d'erreur lors de l'ajout par exemple, il suffit d'ajouter no
devant la commande qui a ajouté la route.
Par exemple : no ip route 100.0.0.0 255.192.0.0 85.0.0.2
ping
fonctionnent sauf ceux depuis un routeur vers une machine distante, c'est à dire une machine qui se trouve dans un autre sous-réseau que lui. En effet, la route pour joindre cette machine existe bien sur le routeur mais cette machine ne sait pas encore comment répondre à la requête ping
. Pour régler ce problème, il suffit d'ajouter une route par défaut sur chaque machine pour qu'elle puisse joindre les sous-réseaux distants.
Utilisez la commande ip route show
pour afficher la table de routage du Client. Y'a-t-il déjà une entrée ? Pourquoi ?
Sur chacune des trois machines (CLIENT, DNS, SERVEUR), ajoutez une route par défaut. Vérifiez l'ajout avec ip route show
Pour ajouter une route sur une machine Linux, il faut utiliser la commande suivante :
ip route add [adresse IP du réseau distant] [netmask] via [adresse IP du prochain saut]
.
Par exemple : ip route add 0.0.0.0/0 via 192.168.0.254
A partir d'un terminal de la Box, utilisez ping
pour tester la connectivité vers le DNS (8.8.8.7). La requête a t-elle abouti ? Idem pour joindre le SERVEUR (100.1.1.1) ?
A partir d'un terminal du DNS, utilisez ping
pour tester la connectivité vers la SERVEUR (100.1.1.1). La requête a t-elle abouti ?
A partir d'un terminal du CLIENT, utilisez ping
pour tester la connectivité vers le DNS (8.8.8.7) ou le SERVEUR (100.1.1.1). La requête a t-elle abouti ?
Il reste donc un dernier obstacle pour que votre réseau fonctionne parfaitement. Le problème vient du fait que le CLIENT et la Box utilisent une adresse dite privée. Les adresses du sous-réseau 192.168.0.0/24
sont privées. Cela signifie qu'elles ne sont pas utilisables pour aller sur Internet. En revanche, tout le monde peut les utiliser chez soi. Ainsi, la plupart des Box utilisent ces adresses pour économiser les adresses IP publiques. La Box doit donc remplacer l'adresse privée par son adresse publique 12.25.0.1
dès lors qu'un paquet traverse la Box pour aller sur Internet. Ce mécanisme s'appelle le NAT (Network Address Translation) et doit être configuré sur la Box. Pour plus d'information à ce sujet, cliquez ici !
Suivez la procédure ci-dessous pour configurer le NAT sur la Box. L'interface inside
est FastEthernet 0/0
. L'interface outside
est Serial 1/0
A partir d'un terminal du CLIENT, utilisez ping
pour tester la connectivité avec le DNS (8.8.8.7) et le SERVEUR (100.1.1.1). Les requêtes ont-elles abouti ? En principe, tout doit fonctionner. Si tel n'est pas le cas, vérifiez la connectivité à des équipements intermédiaires et dépannez en vérifiant vos configurations sur les machines et/ou les routeurs. Pour cela, sur les machines, utilisez les commandes ip addr show dev eth0
et ip route
. Sur les routeurs, utilisez les commandes show ip int brief
et show ip route
En mode enable
sur la Box, tapez la commande show ip nat translations
pour afficher la table NAT. Qu'affiche t-elle ?
Pour configurer le NAT sur un routeur, il faut suivre plusieurs étapes. La 1ère étape consiste en la définition d'une liste d'accès contenant toutes les adresses IP privées qui vont pouvoir être traduites en une adresse publique et donc seront autorisées à aller sur Internet. Pour cela, tapez la commande suivante en mode config
sur la Box :
access-list 1 permit 192.168.0.0 0.0.0.255
Ensuite, il faut demander au routeur de faire la traduction d'adresses en appliquant l'autorisation définie ci-dessus à l'interface de sortie de la Box :
ip nat inside source list 1 interface s1/0 overload
Pour finir, il faut indiquer au routeur quelles interfaces appartiennent à un réseau privé (interne) ou public (externe). Il faut donc accéder à la configuration de l'interface interne avec int Fa0/0
puis indiquer au routeur que l'interface appartient au réseau privé avec la commande ip nat inside
Il faut ensuite faire exit
puis int s1/0
et ip nat outside
pour déclarer l'interface s1/0
dans le réseau public.
Si besoin, vous pouvez utiliser la commande debug ip nat
pour afficher ce qui se passe lors d'un ping
depuis une adresse interne vers une adresse externe.
Une fois vos modifications effectuées, quittez le mode (config)# et tapez la commande copy run start
pour sauvegarder vos modifications.
tracepath
et ssh
tracepath
La commande tracepath
permet, comme ping
, de tester la connectivité entre deux équipements. La différence est que tracepath
affiche les équipements intermédiaires traversés au cours du chemin. Cela permet de connaître le chemin emprunté par les paquets transmis.
Tentez de vous connecter depuis CLIENT vers SERVEUR en utilisant la commande tracepath 100.1.1.1
ssh
La commande ssh
permet d'ouvrir un terminal sur un équipement distant pour lancer des commandes dessus sans être physiquement sur la machine.
Tentez de vous connecter de CLIENT à SERVEUR en utilisant la commande ssh lifasr2@100.1.1.1
Le mot de passe est lifasr2
Utilisez la connexion à distance pour lancer le serveur Web sur la machine SERVEUR. Pour cela, tapez sudo nginx
Le mot de passe est lifasr2
Allez dans le dossier où sont situées les pages Web hébergées par ce serveur :
/usr/share/nginx/html/
Que contient ce dossier ? Affichez le contenu des fichiers avec la commande cat
. Ouvrez un navigateur sur la machine CLIENT et essayez d'accéder à la page principale du serveur Web.