Projet 1 - Adressage IP, couche liaison et DNS
Contexte
Vous avez reçu comme mandat de gérer le réseau pour votre laboratoire de recherche. Chaque section du projet vous guidera vers l'élaboration du réseau. À la fin du projet, vous aurez réalisé un réseau local (LAN) où tous les postes seront interconnectés.
Pour y arriver, vous aurez à:
- Effectuer un plan d'adressage
- Explorer les différents moyens de configurer des adresses
- Utiliser des appareils de la couche liaison (couche 2) afin de connecter une multitude d'appareils sur le réseau local.
- Explorer la portée des adresses.
Le mandat sera simulé dans l'application GNS3 que vous avez installée à la semaine 1 du cours.
Critères d'évaluation
L'évaluation du projet est faite de deux manières:
- Par une section pratique évaluée par la démonstration du bon fonctionnement de vos configurations. Certains documents peuvent aussi avoir à être remis pour cette section.
- Par des questions de suivi évaluées en classe après la remise du projet.
Voici la répartition des points pour chacune des deux évaluations.
Section | Pondération |
---|---|
Pratique | 70% |
Questions de suivi | 30% |
Tout travail remis en retard se verra attribuer la note de 0 pour la partie pratique du projet.
Une absence non motivée à la période de questions suivant le projet entraine la note de 0 pour la partie questions de suivi du projet.
Évaluation de la partie pratique
L'évaluation d'une partie pratique du projet peut être effectuée de deux manières:
- Par la remise d'un document
- Par la remise d'une vidéo qui présente la démarche effectuée ainsi que le bon fonctionnement de la configuration.
Répartissez équitablement la narration des différentes vidéos entre les membres de l'équipe.
La nature de l'évaluation varie d'une partie à l'autre du projet. Le matériel à remettre pour chaque partie du projet est clairement identifié au bas de la section.
Voici les pondérations de chaque section pour la partie pratique du projet:
Partie | Pondération |
---|---|
1: Plan d'adressage | 10% |
2: Plan d'adressage | 5% |
3: Plan d'adressage | 0% |
4: Adresses link-local autoconfigurées | 10% |
5: Connexion des deux réseaux | 15% |
6: Serveur DHCP | 10% |
7: LAN et ARP | 20% |
Évaluation par questions de suivi
Pour les questions de suivi, 3 questions vous seront posées, valant chacune 10% pour un total de 30% de la note au projet. Les questions vous seront communiquées à l'avance. Vous aurez donc l'opportunité de valider votre compréhension avant la période de questions.
Configurations nécessaires
Le projet fait appel à deux types d'appareil:
- Des postes (des clients). Ces clients peuvent être des clients ipterm ou Alpine Linux Virt. Ils devraient avoir été installés lors de la première semaine de cours.
- Des appareils Cumulus VX.
Cumulus est un système d'exploitation pour les commutateurs réseau communément
utilisé dans les centres de données. Les appareils Cumulus sont virtualisés de la même manière que les
appareils FRR. Les étapes d'installation sont donc identiques à une étape près. La version de Cumulus
validée pour le projet est 5.4.0
.
La limite de mémoire configurée par défaut de 1024MB
sur les appareils Cumulus est insuffisante. Vous
devez augmenter cette limite à 2048MB
. Pour y arriver, vous devez
- Sous l'onglet Browse all devices, effectuez un clic droit de la souris sur l'appareil Cumulus installé.
- Sélectionnez Configure template
Les appareils Cumulus sont beaucoup plus lourds que les appareils FRR. En effet, chaque appareil Cumulus requiert 2048MB de mémoire vive. Nous utiliserons un seul appareil Cumulus lors du projet.
Si vous croyez que votre ordinateur personnel n'a pas les ressources nécessaire pour effectuer le projet, n'hésitez pas à emprunter les ordinateurs du PLT-0103. Il a été validé que ces ordinateurs ont suffisamment de mémoire vive pour réaliser le projet.
Partie 1 : Plan d'adressage
Votre laboratoire de recherche compte une centaine d'employés et est divisé en deux sections: la section A et la section B. Chaque section veut pouvoir administrer son propre réseau local. Voici une liste des effectifs matériels dans chaque section:
Type d'appareil | Nb. dans la section A | Nb. dans la section B |
---|---|---|
PCs | 51 | 48 |
Cellulaires | 51 | 48 |
Serveurs | 3 | 2 |
IoT | 20 | 12 |
Commutateurs1 | 3 | 1 |
Routeurs (interfaces) | 1 | 1 |
Pour les routeurs, la quantité est en nombre d'interfaces.
Plan d'adressage IPv4
Votre organisation vous alloue le préfixe IPv4 suivant 10.0.{NI}.0/24
.
{NI}
doit être remplacé par le
matricule d'un ou un membre de l'équipe. Par exemple, si votre matricule est FOBAR83
, {NI}
doit être
remplacé par 83
.
Utilisez la notation décimale pour IPv4 et hexadécimale pour IPv6.
En espérant que vous n'ayez pas un nom assez populaire pour que votre NI ne dépasse pas 255
😉.
À partir du préfixe IPv4 alloué, effectuez un plan d'adressage où la section A et la section B de votre laboratoire sont séparées en deux sous-réseaux (subnets).
Plan d'adressage IPv6
Votre organisation vous alloue aussi le préfixe 2001:db8:{NI}::/48
.
Encore une fois, effectuez un plan d'adressage à partir de ce préfixe où les deux sections de votre laboratoire sont séparées en deux sous-réseaux (subnets). Vos sous-réseaux doivent impérativement supporter le Stateless Address Autoconfiguration (SLAAC). Voir le RFC4862 pour plus de détails.
À remettre pour la partie 1
Pour cette section, vous avez à remettre un fichier en format JSON décrivant votre plan d'adressage. Le fichier doit avoir le format suivant:
[
// Sous réseau A vient en premier
{
"ipv4": "192.168.0.0", // préfixe IPv4 du sous réseau
"ipv4Mask": "/24", // masque du sous réseau
"ipv6": "2001:db8:1::", // préfixe IPv6 du sous réseau
"ipv6Mask": "/64", // longueur du préfixe en bits. Dans le format /[longueur]
"ipv4Example": "192.168.0.1", // Exemple d'une adresse IPv4 valide dans le sous réseau
"ipv6Example": "2001:db8:1::1" // Exemple d'une adresse IPv6 valide dans le sous réseau
},
// Sous réseau B en 2e. Le format est le même que pour le
// sous réseau A.
{
"ipv4": "192.168.1.0",
"ipv4Mask": "/24",
"ipv6": "2001:db8:2::",
"ipv6Mask": "/64",
"ipv4Example": "192.168.1.1",
"ipv6Example": "2001:db8:2::1"
}
]
Un outil vous est fourni pour générer le fichier JSON.
Partie 2 : Interconnexion entre deux postes
Vous commencez l'implantation de votre réseau dans la section A du laboratoire. Dans cette section, vous avez à connecter 16 PCs et 4 serveurs.
Les contraintes du nombre d'appareil par sous-réseau n'auront pas à être implémentées directement dans GNS3. Simuler autant de postes serait couteux en performance pour peu de valeur pédagogique ajoutée.
Vous devez cependant garder en tête le nombre d'appareil par sous réseau lorsque vous réalisez la planification de vos sous réseaux ainsi que pour les questions théoriques.
Pour commencer, vous connectez deux PCs du laboratoire directement comme présenté à la figure suivante.
La commande ping
vous permet de valider la connectivité entre deux postes sur le réseau. Cependant, ping
opère à la couche 3. Elle nécessite donc l'utilisation d'adresses IP.
Configuration d'adresses statique
Ouvrez une console sur chacun des PCs et énumérez les interfaces. Ciblez l'interface que vous avez utilisée pour interconnecter les deux postes.
Assurez vous que l'interface est activée à l'aide de la commande
ip link set [interface] up
Puis configurez une adresse IPv4 statique sur chacune des interfaces. Les adresses choisies doivent être des adresses valides dans le sous-réseau A.
Si vous n'êtes pas certains de comment effectuer une certaine configuration, allez consulter la section Documentation pour y trouver les différentes commandes utiles aux laboratoires.
Utilisez les adresses nouvellement configurées pour effectuer un ping
entre les deux postes.
À remettre pour la partie 2
Filmez votre écran avec une capture Wireshark sur le lien entre les deux postes qui témoigne de la bonne
transmission du echo request et echo reply du ping
. Dans la vidéo, identifiez
les adresses IPv4 choisies pour chaque poste et commentez sur le choix effectué. Dans votre commentaire, mentionnez:
- Pourquoi les adresses choisies sont valides dans le sous-réseau A.
- Si les adresses choisies sont routables sur Internet.
Partie 3 : Ajout de postes supplémentaires
Bien entendu, votre laboratoire ne compte pas que deux employés. Vous désirez interconnecter tous les postes du laboratoire. Cependant, la plupart des postes n'ont qu'une seule ou parfois que deux interfaces. On vous fournit donc un commutateur Ethernet.
Modifiez votre topologie afin d'ajouter l'un des serveurs du réseau A. Vous voulez que tous les postes ainsi que les serveurs soient connectés comme s'ils étaient sur le même lien Ethernet. Ce genre de configuration peut être obtenu à l'aide d'un commutateur opérant à la couche 2.
Retirez le lien entre les deux postes existants. Ajoutez un poste supplémentaire qui jouera le rôle de l'un des serveurs.
Ajoutez un appareil Ethernet switch et connectez tous les postes et le serveur en passant par le commutateur comme présenté à la figure suivante.
Les appareils de type Ethernet switch sont natifs à GNS3 et ne nécessitent aucune installation supplémentaire.
Ne démarrez pas les postes immédiatement. Attendez les instructions de la Partie 4 avant de démarrer les postes sans quoi vous ne pourrez pas obtenir les résultats attendus.
À remettre pour la partie 3
Il n'y a rien à remettre pour cette partie du projet.
Partie 4 : Adresses autoconfigurées sur un lien local
Nous avons maintenant un petit réseau local! Explorons comment nos différents postes peuvent communiquer à la couche IP sur ce réseau.
À la Partie 2, vous avez probablement remarqué que l'interface utilisée
pour interconnecter les deux PCs possède déjà une adresse IPv6 préconfigurée! Cette adresse débute par le préfixe
fe80::/10
.
Dans cette partie du projet, vous allez analyser comment ces adresses fonctionnent ainsi que comment elles sont choisies.
Exploration du Stateless Address Autoconfiguration sur réseaux locaux
Connectez une instance de Wireshark sur le lien entre le serveur et le commutateur, puis démarrez les postes.
Attendez quelques secondes puis sauvegardez la capture Wireshark produite. Vous en aurez besoin pour la remise de cette partie du projet.
Utilisation des adresses autoconfigurées
Utilisez les adresses autoconfigurées pour effectuer un ping
entre l'un des deux postes.
Attachez une capture Wireshark au lien entre le poste utilisé pour la commande ping
et le commutateur.
Capturez au moins un echo request et un echo reply. Sauvegardez aussi cette capture puisque vous
l'utiliserez pour la remise de cette partie du projet.
À remette pour la partie 4
Enregistrez une narration sur votre capture Wireshark obtenue en premier temps en expliquant:
- Le rôle de l'adresse
::
et pourquoi elle est initialement utilisée dans les premiers paquets transmis. - Comment est-ce que les postes valident que l'adresse obtenue est unique sur le réseau. La section 5.4.2 du RFC4862 est utile pour répondre à cette question.
- Le rôle des différentes adresses destination ayant pour préfixe
ff00::/8
.
Enregistrez une narration sur votre capture Wireshark obtenue en deuxième temps en commentant sur:
- La formation des adresses utilisées. Comment sont elles générées?
- L'utilisation de ces adresses en dehors d'un réseau local.
Partie 5 : Connexion des deux réseaux
Comme pour répondre à la dernière question de la Partie 4, nous allons maintenant configurer le sous-réseau B.
Vous avez réalisé un plan d'adressage à la Partie 1 du projet. C'est toujours ce plan d'adressage que vous devez utiliser pour réaliser cette partie du projet ainsi que toutes les parties subséquentes.
Pour ce faire, ajoutez deux postes ainsi qu'un commutateur au réseau B comme présenté à la figure suivante.
Globablement, votre schéma GNS3 devrait ressembler au schéma suivant.
Vous avez alors deux sous-réseaux où les postes peuvent communiquer entre eux s'ils sont sur le même réseau. Un poste du réseau A ne pourrait cependant pas communiquer avec le réseau B. On pourrait tout simplement connecter les deux commutateurs entre eux. Cependant, nous perdrions alors toute possibilité d'implémenter du contrôle ou du filtrage au delà de la couche liaison pour le réseau.
Pour connecter les deux réseaux, nous allons plutôt ajouter un appareil opérant à la couche 3 (un routeur). Le routeur possèdera l'une de ses interfaces dans chaque sous-réseau qu'il interconnecte. Vous configurerez le routeur afin qu'il ait conscience des préfixes associés à chacune de ses interfaces. Avec cette information et suite à une bonne configuration, le routeur saura acheminer les datagrammes d'une interface à l'autre selon l'adresse de destination qui y est inscrite.
Ajoutez un appareil Cumulus Vx entre les deux sous-réseaux. L'interface swp1
de l'appareil est connecté au commutateur
du sous-réseau A, alors que l'interface swp2
est connectée au commutateur du sous-réseau B.
Configuration du routage
Démarrez tous les postes et connectez vous à la ligne de commande de l'appareil Cumulus.
Il est normal que l'appareil Cumulus prenne quelques minutes à démarrer.
Vous verrez après la semaine de lecture que des algorithmes de routage dynamiques permettent au réseau de s'adapter a des états de lien qui varient dans le temps. Ce n'est cependant pas le sujet de ce laboratoire. Pour simplifier l'implémentation de ce laboratoire, vous allez configurer du routage statique. Le routage statique signifie que, peu importe l'état du réseau, le routeur choisira toujours le même interface pour acheminer les datagrammes portant un certain préfixe. Dans notre cas, ça ne change pas grand chose. Il n'y a en effet qu'une seule interface reliant chaque sous-réseau.
Pour configurer des routes statiques IPv4 et IPv6 vous devrez:
- Configurer des adresses IPv4 et IPv6 valides pour les interfaces du routeur. Il y aura une interface du routeur dans chaque subnet.
- Configurer des routes statiques.
Les instructions pour configurer le routage sur Cumulus sont disponibles dans la section Documentation.
Exploration de la portée des adresses link-local
Effectuez un ping6
d'un PC du sous-réseau B vers le serveur du sous-réseau A. Utilisez les adresses link-local ayant pour
préfixe fe80::/10
.
Connectez une instance de Wireshark d'un côté et de l'autre du routeur et observez la différence d'un sous réseau à l'autre. Le datagramme se rend t-il au routeur? Sauvegardez ces captures puisque vous en aurez besoin pour la remise.
Nouvelles adresses autoconfigurées
Analysons maintenant comment l'autoconfiguration peut aller au delà des adresses link-local.
Assignez un préfixe pour le neighbor discovery sur chaque interface du routeur. Activez ensuite le router advertisement et le neighbor discovery sur le routeur.
Avant d'utiliser la commande write memory
pour activer la nouvelle configuration, démarrez une
capture Wireshark sur un lien du sous-réseau A.
Exécutez la commande write memory
.
Observez les différentes communications entre les postes et les routeurs. Sauvegardez la capture Wireshark puisque vous en aurez besoin pour la remise.
Pour un poste dans chaque sous-réseau, énumérez les interfaces. Remarquez qu'une nouvelle adresses IPv6 aura été ajoutée à leur
interface. Cette adresse a pour préfixe celui du sous-réseau dans lequel se situe le poste. Vous pouvez maintenant utiliser
ces adresses autoconfigurées pour effectuer un ping
entre les deux sous-réseaux.
À remettre pour la partie 5
Enregistrez une vidéo où vous analysez la propagation du ping
utilisant les adresses link-local d'un sous-réseau à l'autre.
Utilisez vos captures Wireshark pour justifier vos explications. Répondez notamment à la question suivante:
Le datagramme se rend t-il au PC du réseau A? Quitte t-il l'interface du PC d'origine? Pourquoi?
Enregistrez une seconde vidéo où vous commentez sur l'autoconfiguration d'adresses (SLAAC). Utilisez les enregistrements Wireshark pour présenter les différents messages échangés lors de l'autoconfiguration des adresses. Commentez sur les adresses source et destination des datagrammes utilisés pour l'autoconfiguration des adresses.
Partie 6 : Serveur DHCP
Bon, assez parlé d'IPv6!
Alors que les grands réseaux et la nécessité de moyens automatisés pour l'allocation d'adresses était prévus pour IPv6, ce n'était pas le cas pour IPv4.
Les réseaux locaux modernes sont tout de même souvent trop imposants et trop dynamiques pour reposer sur un administrateur qui alloue manuellement des adresses. En effet, plusieurs appareils IP sont mobiles et leur présence sur le réseau est éphémère. Imaginez s'il fallait qu'un employé de l'Université vous prête une adresse à votre arrivée sur le campus et la reprenne à votre départ! Vous n'avez configuré qu'une paire d'adresses IPv4 et vous en êtes déjà probablement ennuyés.
Bien qu'il n'y ait pas d'employé qui effectue ce travail, un protocole applicatif existe pour le faire. Ce protocole est le Dynamic Host Configuration Protocol, ou DHCP.
Vous désirez bien évidemment configurer DHCP sur votre réseau de laboratoire puisque vous ne voulez pas avoir à gérer le bassin d'adresses IPv4 manuellement.
Il est possible que DHCP n'ait pas été couvert en classe au moment où vous réalisez cette étape du laboratoire. Rassurez-vous cependant en sachant que chaque étape est guidée. L'objectif est de vous faire analyser pratiquement les différents messages échangés sur le réseau pour le bon fonctionnement du protocole.
Configuration du service DHCP: serveur
Le fichier /etc/default/isc-dhcp-server
contient la configuration des interfaces
où DHCP sera utilisé. Vous devrez y ajouter les lignes suivantes
...
DHCPD_CONF="-cf /etc/dhcp/dhcpd.conf"
INTERFACES="swp1 swp2"
...
Assurez-vous de remplir la section INTERFACES
en spécifiant les interfaces du
routeur R1 que vous avez configuré.
Ensuite, modifiez le fichier /etc/dhcp/dhcpd.conf
pour configurer les informations
nécessaires pour le serveur DHCP. Le fichier contient déjà plusieurs exemples.
Voici un exemple pour un sous-réseau ayant pour préfixe 192.168.99.0/25
et offrant un
routeur par défaut. L’adresse de l’interface du routeur sur ce sous-réseau
est 192.168.99.1
subnet 192.168.99.0 netmask 255.255.255.128 {
range 192.168.99.2 192.168.99.126;
option routers 192.168.99.1;
}
Ajoutez une configuration similaire pour chacun de vos sous-réseaux (vous devriez en avoir deux).
Le processus du serveur DHCP doit ensuite être activé et démarré avec les commandes suivantes:
sudo systemctl enable dhcpd.service
sudo systemctl start dhcpd.service
Configuration des clients DHCP
N'oubliez pas de déconfigurer les adresses statiques qui ont été assignées aux postes du sous-réseau A lors de la Partie 2 du projet.
Pour supporter des adresses statiques sur un réseau où est hébergé un serveur DHCP, il faut réserver les adresses désirées lors de la configuration du serveur. Sans quoi vous courez un risque d'avoir des duplications d'adresses.
Les postes et serveurs sur les deux sous réseaux devront aussi être configurés pour
utiliser DHCP.
Vous devez donc modifier le fichier /etc/network/interfaces
sur chacun des postes
pour activer la configuration par DHCP de l’interface eth0
. Par exemple:
auto eth0
iface eth0 inet dhcp
Vous pouvez configurer le client DHCP que sur un seul poste. L'évaluation de la section sur DHCP ne nécessite pas que DHCP soit configuré sur tous les postes.
Éteignez le poste sur lequel vous avez configuré le client DHCP. Connectez une instance de Wireshark sur le lien reliant le poste à l'appareil Cumulus. Démarrez le poste et attendez quelques secondes avant de sauvegarder votre capture Wireshark. Vous en aurez besoin pour la remise de cette partie du projet.
Vous pouvez valider le bon fonctionnement
À remettre pour la partie 6
Commentez sur l'interaction client / serveur DHCP. Utilisez votre capture Wireshark pour assister vos explications. Commentez sur les adresses source et destination utilisées lors de l'échange, principalement celles initialement utilisées par le client.
Partie 8 : LAN et ARP
Consignes à venir pour la partie 7.
Sommaire des remises
Si vous avez suivi les instructions de remise pour chaque partie du projet, vous devriez avoir amassé les documents suivants:
- Partie 1: Un fichier JSON décrivant votre plan d'adressage.
Notes de bas de page
-
Supposez que les commutateurs opèrent à la couche 2 (liaison) seulement. ↩