Vous êtes sur la page 1sur 8

Licence 3 Informatique Module déploiement de réseaux (S3IN621) par P. Anelli & P.

Spathis

Travaux pratiques no 1
Installation d’un réseau local

Les TP de ce module reposent sur la plateforme d’émulation Netkit(http://www.netkit.org). Ce TP vise à vous


familiariser avec l’usage de cette plateforme. Sur le site du module, vous retrouverez un aide-mémoire contenant les
principales commandes de plateforme d’émulation. Ces commandes sont également documentées par le manuel en ligne
man.
Afin de reprendre les notions d’adressage et d’acheminement préalablement étudiées, nous allons constituer le
réseau de la figure 1 dans l’environnement d’émulation.

switch
eth0 eth1 client
serveur routeur

net1 cd1 cd2


eth0
eth0 eth0 eth1

Figure 1 – Topologie du réseau développé en émulation.

Machine Interface Adresse IPv4/Lg Adresse IPv6/Lg


serveur eth0 173.31.1.2/24 fd26:d0d0:1e1a:1::2/64
routeur eth0 173.31.1.254/24 fd26:d0d0:1e1a:1::ffff/64
routeur eth1 173.31.2.254/24 fd26:d0d0:1e1a:2::ffff/64
client eth0 173.31.2.2/24 fd26:d0d0:1e1a:2::2/64

Table 1 – Interfaces de réseau, adresses et préfixes utilisés.

Hostid et Netid
Dans une adresse IPv4 ou IPv6, les bits qui identifient le réseau sont les premiers bits de l’adresse. Ils sont
qualifiés de préfixe réseau. Le nombre de bits ou longueur du préfixe dépend du réseau et se note /n. Toutes
les interfaces ayant une adresse IP avec les mêmes n premiers bits font partie d’un même réseau. Dans notre.
exemple, l’interface eth0 du serveur a pour adresse 173.31.1.2 avec un préfixe de longueur 24. Cela signifie
que l’identifiant du réseau (netid ) occupe les 24 premiers bits de l’adresse et se note 173.31.1.0/24. L’interface
eth0 du routeur a le même identifiant de réseau. L’interface eth1 du routeur a un identifiant réseau différent :
173.31.2.0/24. Le routeur est donc à la fois dans le réseau 173.31.1.0/24 par à son interface eth0 et dans le
réseau 173.31.2.0/24 par à son interface eth1. On appelle identifiant d’interface (hostid ) les derniers bits de
l’adresse. L’adresse 173.31.1.2 ayant un préfixe sur 24 bits à un hostid qui vaut 2.

Exercice 1.1 — Création de noeuds


Ce premier exercice montre la création et le raccordement de noeuds au sein de la plateforme Netkit. Nous voulons
constituer le réseau 1 pour lequel le préfixe 173.31.0.0/16 sera utilisé. Ce préfixe réseau est divisé en deux sous-
réseaux : 173.31.1.0/24 pour net1 et 173.31.2.0/24 pour cd1 et cd2.
Dans un premier temps nous allons mettre en place le sous-réseau net1. Ce sous-réseau est construit sur une support
physique à diffusion de type Ethernet. Il forme ce qui est appelé un domaine de collision. Ici l’interface eth0 du serveur
et l’interface eth0 du routeur sont reliées à un même domaine de collision nommé net1.

1/8 TP no 1 v3.0
Licence 3 Informatique Module déploiement de réseaux (S3IN621) par P. Anelli & P. Spathis

Domaine de collision
Un domaine de collision signifie qu’une trame émise sur une des interfaces sera diffusée et reçue par toutes
les interfaces du domaine de collision. Si deux interfaces émettent en même temps, il va y avoir collision. En
pratique, des interfaces font partie du même domaine de collision si elles sont connectées au même support
physique (câble, canal radio) ou à un hub (les hubs ont quasiment disparu). Il peut y avoir plusieurs domaines
de collision dans un réseau physique comme par exemple l’interface eth1 du routeur (resp. eth0 du client) et
l’interface eth0 du switch (resp. eth1 du switch) font partie d’un second domaine de collision arbitrairement
appelé cd1 (resp. cd2).

Un noeud connecté à un domaine de collision se crée par une commande saisie dans la console. Le domaine de collision
est nommé par un identifiant attribué de manière arbitraire. Sans plus de précision, un sous-réseau est construit sur un
domaine de collision. Ainsi le sous-réseau net1 repose sur un domaine de collision. La syntaxe de la ligne de commande
pour la création du serveur est vstart server −−eth0=A
Cette commande crée le noeud nommé serveur, équipé de l’interface eth0 relié au domaine de collision net1.
On peut également spécifier plusieurs interfaces Ethernet pour un même noeud. Une fois la commande de création du
noeud exécutée, le terminal de ce noeud s’affiche sur votre écran.
1) Donner et exécuter les commandes de création des noeuds du réseau net1.

Vous avez maintenant 2 terminaux d’ouverts : ils s’appellent respectivement serveur et routeur. Toutes les commandes
que vous entrerez dans ces nouveaux terminaux s’exécuteront sur ces nouveaux noeuds (et non sur la machine héber-
geuse !). Pour arrêter un noeud, il faut exécuter la commande vcrash nom-noeud.

Attention : Après cette commande, toutes les configurations effectuées sur le noeud sont perdues.
En cas de dysfonctionnement (e.g. erreur au lancement de noeuds ...), vous pouvez supprimer tous les noeuds du réseau
avec la commande vclean −−clean-all.
2) A l’aide de la commande vlist, vérifier que ces deux noeuds sont actifs.
3) Une fois la connectivité physique établie, il convient d’effectuer la configuration de niveau réseau à savoir configurer
les interfaces de réseau des noeuds. La configuration type d’une interface réseau commence par son activation. Puis
il faut lui allouer une adresse IPv4 et dans le cas d’un hôte définir la route par défaut. Enfin, dans le cas d’une
configuration manuelle d’IPv6, il faut répéter les commandes faites avec IPv4 mais dans le contexte IPv6.
Effectuer la configuration Internet du réseau net1 à l’aide des commandes de la suite net-tools ou iproute2. Dans
les 2 cas, les commandes sont documentées par le manuel en ligne. Des exemples de commandes de la suite iproute2
sont montrés dans la documentation Linux Advanced Routing & Traffic Control HOWTO 1 . Les exemples pour les
net-tools sont développés dans Linux Network Administrators Guide 2 . Pour des exemples propres à IPv6, il vaut
mieux se référer au document Linux IPv6 HOWTO 3 .
Une configuration type d’une interface Ethernet en IPv4 pour le serveur se compose des lignes suivantes :
ifconfig eth0 hw ether 00:00:00:00:10:00 up. # enable itf and assign MAC address (for debugging)
ifconfig eth0 173.31.1.2/24 # set up IP address
route add default gw 173.31.1.254 # Add the default route
Alternative avec la commande ip :
ip addr add 173.31.1.2/24 dev eth0 # set up IP address
ip route add default via 173.31.1.254
L’interface pourrait être configurée en IPv6 de la manière suivante :
ifconfig eth0 inet6 add fd26:d0d0:1e1a:1::2/64 # set up IP address
route -A inet6 add default gw fd26:d0d0:1e1a:1::ffff # Add the default route

4) Vérifier à l’aide de la commande ping <adresse_IP_destination> que les deux noeuds ont une connectivité
entre eux.
5) Pendant que le noeud serveur ”ping” le noeud routeur, observer le trafic ainsi généré sur l’interface eth0 du noeud
routeur à l’aide de la commande tcpdump. Ajouter à la commande tcpdump l’option permettant d’observer le contenu
des entêtes Ethernet

2/8 TP no 1 v3.0
Licence 3 Informatique Module déploiement de réseaux (S3IN621) par P. Anelli & P. Spathis

6) Arrêter le routeur et le serveur à l’aide de la commande vclean -K.

Réalisation d’un fichier de captures

Un noeud du réseau émulé peut partager un fichier avec la machine hébergeuse à l’aide des répertoires /hosthome
et /hostlab (voir la documentation de présentation de Netkit). En effet, chaque noeud possède un répertoire
/hosthome qui est lié au répertoire $HOME de la machine hébergeuse. Ainsi, tous les fichiers placés dans le
répertoire $HOME de la machine hébergeuse sont accessibles depuis les noeuds du réseau émulé par leur répertoire
/hosthome, et inversement. Ces répertoires permettent de transférer simplement des fichiers entre l’hôte et les
noeuds. En particulier, vous pouvez enregistrer les captures effectuées par tcpdump dans un fichier que vous
placerez dans /hosthome et que vous ouvrirez dans l’application Wireshark lancé depuis votre station de travail.
Vous bénéficiez ainsi de l’interface graphique pour l’analyse de vos captures.
Sur un noeud du réseau émulé, la spécification du fichier capture est de la forme :
tcpdump -w /hosthome/capture.cap.
Si vous souhaitez exécuter d’autres commandes dans le terminal après avoir lancé votre capture, ajoutez un &
à la fin de la commande : tcpdump -w /hosthome/capture.cap &.
Pour arrêter la capture, cela peut se faire avec la commande : killall tcpdump. Une solution alternative consiste
à utiliser la commande screen qui offre le moyen de gérer plusieurs terminaux virtuels dans un terminal.

Exercice 1.2 — Création d’un Lab


La sauvegarde d’une configuration s’effectue avec la notion de Lab. Un Lab est la définition et la configuration d’un
ensemble de noeuds, soit d’un réseau au sens large. La topologie du réseau est décrite dans le fichier nommé lab.conf.
Dans ce fichier, vous allez déclarer les noeuds du réseau, ainsi que les interfaces réseaux de ces noeuds, et leur domaine
de collision. Cela revient à définir le raccordement des noeuds au support physique. La syntaxe de la définition d’un
raccordement est la suivante :
noeud[numerointerface]="nomdomainecollision"
Par exemple, la création du réseau selon la topologie de la figure 1 se décrit par le fichier lab.conf de la manière
suivante :
serveur[0]=net1
routeur[0]=net1
routeur[1]=cd1
switch[0]=cd1
switch[1]=cd2
client[0]=cd2
Il est nécessaire de créer dans le répertoire contenant le fichier lab.conf des répertoires au nom des noeuds.
Attention : la casse et l’orthographe des noms des répertoires doivent être identiques aux noms des noeuds décrits
dans le fichier lab.conf.
Une fois les répertoires et le fichier lab.conf créés, on démarre les noeuds en tapant lstart dans le répertoire contenant
le fichier lab.conf. Pour arrêter toutes les noeuds en une seule fois, il faut entrer lcrash -k. On peut aussi les arrêter
manuellement une à une par la commande vcrash -k.
Attention : hormis les répertoires au nom des noeuds, le fichier lab.conf et les fichiers .startup (voir plus loin), vous
ne devez placer dans le répertoire du Lab aucun autre répertoire.
Script de démarrage : Il est possible d’exécuter des commandes au démarrage des noeuds. Pour cela, il faut créer un
fichier moeud.startup dans le même répertoire que le fichier lab.conf et d’y écrire les commandes à exécuter. Il est
notamment intéressant d’y placer les commandes de configuration des paramètres IP et de la table de routage.
Par exemple, pour le serveur, le contenu du fichier serveur.startup de l’exemple de l’exercice précédent serait :
1. https://lartc.org/howto/
2. https ://tldp.org/LDP/nag2/index.html
3. http://tldp.org/HOWTO/html_single/Linux+IPv6-HOWTO/

3/8 TP no 1 v3.0
Licence 3 Informatique Module déploiement de réseaux (S3IN621) par P. Anelli & P. Spathis

ifconfig eth1 173.31.1.2/24 up


route add default gw 173.31.1.254
Attention : il faut toujours terminer le fichier par un retour à la ligne pour que la dernière commande soit exécutée.
Système de fichiers : Il est possible de modifier le système de fichiers qui sera chargé au démarrage des noeuds. Par
exemple, un répertoire nommé serveur dans le même dossier que le lab.conf contiendra les fichiers qui devront être
chargés dans ce noeud, en plus ou en remplacement des fichiers par défaut. Si le répertoire serveur contient un fichier
”coucou.txt”, vous retrouverez celui ci à la racine du système de fichier de la machine serveur. Si le répertoire serveur
contient un fichier etc/network/interfaces celui-ci sera chargé à la place du fichier interfaces par défaut du noeud
serveur.

Configuration réseau d’un hôte par /etc/network/interfaces

Dans les machines Linux la configuration réseau se fait via le fichier /etc/network/interfaces. Ce dernier
suit le format suivant :
auto eth0
iface eth0 inet static
address 173.31.1.1
netmask 255.255.255.0
broadcast 173.31.1.255
gateway 173.31.1.254
Dans certaines distribution Linux /etc/network/interfaces est rendu obsolète au profit de NetworkManager
ou NetPlan.

1) Vous allez recommencer le réseau précédent en utilisant un Lab et des fichiers startup.
2) Après avoir lancé votre Lab, vérifier à l’aides des commandes ping et ifconfig que les deux noeuds sont bien
configurés.
3) Arrêter tous les noeuds du Lab.

Exercice 1.3 — Création d’un commutateur Ethernet


La partie commutée du réseau de la figure 1 repose sur un commutateur Ethernet. Nous allons étudier comment créer
un commutateur dans l’environnement Netkit. Tout d’abord, il est important de souligner que chaque lien attaché au
commutateur constitue un domaine de collision. On supposera que l’ensemble des domaines de collision forme un seul
sous-réseau IP (aussi appelé lien en IPv6).
Les interfaces du commutateur ne sont pas à configurer avec des adresses IP. Cependant dans Netkit, l’adresse MAC
peut être indiquée. L’activation d’une interface est de la forme :
ifconfig eth0 up
ifconfig eth0 hw ether 00:00:00:00:01:00
La commande brctl (bridge control ) sert à vérifier et spécifier la configuration du commutateur. L’affichage de l’état
du commutateur s’effectue par : brctl show.
Comme un noeud peut comporter fonctionnellement plusieurs commutateurs, il convient donc de créer explicitement
le commutateur en y associant les interfaces sur lequel il doit opérer. Ceci se décrit par la suite de commandes :
brctl addbr br0 # create a new bridge br0
brctl addif br0 eth0 # Attache network interface eth0 to bridge br 0
brctl addif br0 eth1 # Attache network interface eth1 to bridge br 0
ifconfig br0 up # enable the bridge
La commande brctl showmacs br0 affiche la table de filtration.
1) Compléter le Lab avec les commandes de création d’un commutateur pour le sous réseau IP 173.31.2.0/24.
Les domaines de collision sont appelés cdx avec x = 1, 2. En IPv6, le SID prendra la valeur 2. Le préfixe IPv6 reste

4/8 TP no 1 v3.0
Licence 3 Informatique Module déploiement de réseaux (S3IN621) par P. Anelli & P. Spathis

fd26:d0d0:1e1a::/48. L’IID prendra la même valeur que le hostID en IPv4.


2) Ajouter les éléments nécessaire à la création et la configuration du client. Vous compléterez également avec les
commandes de configuration de l’interface eth1 du routeur.
3) Une fois le lab démarré, consulter la table de filtration et déterminer les adresses MAC utilisées sur le réseau
commuté.
4) Vérifier qu’il existe bien une connectivité entre le client et le routeur

Exercice 1.4 — Configuration d’un routeur


La transformation d’un hôte en un routeur consiste à activer la fonction de relayage. Il doit relayer les paquets d’une in-
terface vers une interface de sortie. La fonction de relayage s’active par le fichier
/proc/sys/net/ipv4/ip_forward qui doit contenir la valeur 1. Ceci peut se faire par la la commande :
echo 1 > /proc/sys/net/ipv4/ip_forward.
1) Vérifier que la fonction de relayage est activée. Sinon procéder à son activation.
2) Afficher la table de routage du routeur et vérifier que toutes les routes nécessaire à ce réseau sont présentes. Sinon
préciser les routes que vous avez du ajouter.
3) Vérifier à l’aide de la commande ping que le serveur puisse bien joindre le client.
4) Effectuer une capture de paquets sur l’interface eth1 du routeur pendant l’exécution de la commande ping par le
client vers le serveur. Identifier les adresses MAC utilisées.
5) Consulter la table de filtration du commutateur, pouvez vous voir les adresses MAC du serveur et/ou du client ?
Expliquer le principe de fonctionnement d’un commutateur Ethernet en quoi il se différencie d’un routeur ?

Exercice 1.5 — Service de connexion à distance


Pour se connecter sur une machine distante, il faut posséder un compte sur cette machine. La première opération
consiste donc à installer un compte utilisateur. En effet, la création de comptes utilisateurs différents sur une machine
est essentiel pour que chaque utilisateur dispose de son propre espace personnel. De plus, des droits sont associés
aux utilisateurs. L’administrateur de la machine (root) doit avoir le contrôle sur tout le système alors que de simples
utilisateurs doivent avoir un accès limité à leur répertoires personnel et à certaines commandes. La notion de groupe
regroupe un nombre d’utilisateurs selon leurs droits d’accès afin d’en faciliter l’administration.
1) Ajouter sur le serveur, l’utilisateur myuser faisant partie du groupe mygroup. Vérifier que l’utilisateur et le groupe
sont crées en regardant les fichier /etc/passwd et /etc/group. Pour terminer, changer de compte et emprunter celui
de myuser par la commande : su myuser
L’ajout d’un utilisateur dans un système Linux s’effectue de la manière suivante :
— Création d’un utilisateur par la commande useradd. La syntaxe de cette commande est
useradd nom-utilisateur -g groupe -d répertoire-personnel -m avec les options :
-s pour remplacer le shell courant par un shell spécifique avec comme par exemple /etc/ftponly.
-m pour demander de créer le répertoire personnel de l’utilisateur s’il n’existe pas déjà.
La suppression d’un utilisateur se fait en utilisant la commande userdel -r nom-utilisateur. L’option -r
permet de supprimer le répertoire personnel de l’utilisateur désigné.
— Associer un mot de passe à l’utilisateur avec la commande passwd nom-utilisateur. Il y a alors ajout d’une
entrée dans le fichier /etc/passwd
— Définir à quel groupe appartient l’utilisateur. Pour cela, il faut faire un ajout d’une entrée dans le fichier
/etc/group. Si le groupe n’existe pas, créer un groupe avec la commande groupadd nom-groupe. Sinon, ajouter
l’utilisateur à un groupe secondaire avec la commande : usermod -G groupe-secondaire1, groupe-secondaire2
nom-utilisateur
— Créer le répertoire personnel de l’utilisateur avec les commandes suivantes :
mkdir /home/nom-utilisateur
cp /etc/skel/* /home/nom-utilisateur
— Créer le fichier de configuration personnel du shell

Certaines commandes sont aussi utiles pour changer les propriétés d’un fichier ou d’un répertoire :
— Changement d’utilisateur sur un répertoire :
chown nom-utilisateur /home/nom-utilisateur-bis

5/8 TP no 1 v3.0
Licence 3 Informatique Module déploiement de réseaux (S3IN621) par P. Anelli & P. Spathis

— Changement de droits sur les fichiers d’un répertoire :


chmod u+rwx /home/nom-utilisateur
— Changement de groupe sur un répertoire :
chgrp nouveau-groupe /home/nom-utilisateur

Pour administrer des machines à distance, il est nécessaire de se connecter de façon sécurisé. Pour cela, nous utiliserons
ssh (Secure Shell ) qui est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole
de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite toutes les données sont
chiffrées. Il devient donc impossible d’utiliser un sniffer pour voir ce que fait l’utilisateur. Pour le transfert de données
de façon sécurisé, un programme similaire est utilisé, scp.
2) Afin de rendre la connexion distante possible, il faut un processus serveur en attente de demande de session d’un
client. Ce processus sera installé sur la machine serveur de la manière suivante :
— Vérifier que le processus du programme ssh est actif : ps -edf | grep ssh
— Si le processus n’est pas actif, lancez le à l’aide de la commande : /etc/init.d/ssh restart
3) Maintenant, il nous reste à vérifier que notre service de connexion à distance fonctionne. pour cela connectez vous
sur la machine serveur avec ssh sous le compte de ”myuser” de la machine client. Pour fermer la connexion distante,
utiliser la commande exit.
4) Sur l’interface eth1 du routeur, lancer une capture de paquets avec la commande tcpdump et effectuer un transfert
de fichier vers le serveur avec la commande scp. Inspecter le contenu des paquets du fichier transférer de manière à
vérifier que le contenu est crypté.

6/8 TP no 1 v3.0
Licence 3 Informatique Module déploiement de réseaux (S3IN621) par P. Anelli & P. Spathis

Interagir avec la pile IP

La configuration de la pile IP des systèmes Linux peut être modifiée à travers des outils en ligne de commande.
Historiquement c’est le paquet net-tools qui regroupait ces outils mais il est maintenant remplacé par
iproute2. Les commandes qui en découlent sont encore accessibles sur la plupart des distributions Linux mais
il est préférable de s’habituer à iproute2.

usage net-tools iproute2


Adressage ifconfig ip addr, ip link
Routage route ip route
Résolution d’adresses arp ip neigh
VLAN vconfig ip link
Bridge brctl ip link
Tunnels iptunnel ip tunnel
Multicast ipmaddr ip maddr
Statistiques netstat ss

Ajouter / supprimer des adresses net-tools et iproute2

Commande Action
Ajoute l’adresse ADDRESS avec le
ip addr add ADDRESS/LG dev INTERFACE
préfixe de longueur LG à l’interface INTERFACE
ifconfig INTERFACE ADDRESS/LG Configure l’adresse primaire
Ajoute l’adresse ADDRESS avec le
ip -6 addr add ADDRESS/LG dev INTERFACE
préfixe de longueur LG à l’interface INTERFACE
Ajoute une niéme alias c.a.d. une adresse secondaire
ifconfig INTERFACE:n ADDRESS/LG
à l’interface INTERFACE.
ip addr del ADDRESS/LG dev INTERFACE Supprime l’adresse
ifconfig INTERFACE down Supprime toutes les adresses

Ajouter / supprimer des routes avec net-tools et iproute2

Ajouter des routes :

Commande Action
ip route add NETWORK/LG via GATEWAYIP permet de router les paquets a destination du
route add -net NETWORK/LG gw GATEWAYIP reseau NETWORK/LG via le routeur GATEWAYIP
ip -6 route add default via GATEWAYIP
idem avec le mot clé default indique la route ::/0
route -A inet6 add default gw GATEWAYIP
Supprimer des routes :

Commande Action
ip route del to NETWORK/LG via GATEWAYIP Supprimer la route vers NETWORK/LG via
route del -net NETWORK/LG gw GATEWAYIP le routeur GATEWAYIP
ip route del to default via GATEWAYIP idem avec le mot clé default qui indique le réseau
route del default gw GATEWAYIP 0.0.0.0/0

7/8 TP no 1 v3.0

Vous aimerez peut-être aussi