Segmentation, MDI, Adresses IPv4 multiples, DHCP, Motivation VLAN

Travaux Pratiques
Segmentation d’une plage réseau, mdi/mdi-x,
Adresses IP multiples sur baie de brassage, Vers les VLAN.

Copyright (C) 2012  Jean-Vincent Loddo
Licence Creative Commons Paternité - Partage à l’Identique 3.0 non transposé.

Séance de TP entièrement effectuée avec le logiciel Marionnet. Durée estimée : 1h30 - 2h.
Prérequis.
Avoir suivi le cours magistral sur les adresses IP (v4) et la segmentation.

 Câblage et configuration de base

Définissez un réseau local avec 6 machines, m1, m2, m3, m4, m5 et m6, branchées à une baie de brassage constituée de 3 commutateurs S1, S2 et S3. Choisissez la distribution GNU/Linux pinocchio pour les machines : la capture de trames se fera en modalité texte par la commande tcpdump (cf. man tcpdump).
Figure images/tp-marionnet-2-plan.png
La plage d’adresses attribuée au réseau est, en notation CIDR, 194.85.40.0 ⁄ 21.
$ ipcalc 194.85.40.0/21 
Address:   194.85.40.0          11000010.01010101.00101 000.00000000
Netmask:   255.255.248.0 = 21   11111111.11111111.11111 000.00000000
Wildcard:  0.0.7.255            00000000.00000000.00000 111.11111111 
=> 
Network:   194.85.40.0/21       11000010.01010101.00101 000.00000000
HostMin:   194.85.40.1          11000010.01010101.00101 000.00000001
HostMax:   194.85.47.254        11000010.01010101.00101 111.11111110
Broadcast: 194.85.47.255        11000010.01010101.00101 111.11111111
Hosts/Net: 2046                 Class C
Segmentez cette plage en deux partie d’égale capacité (i.e. 1022 hôtes) et configurez donc deux sous-réseaux locaux IP indépendants : LAN1 = {m1, m3, m6} (partie gauche de la figure) et LAN2 = {m2, m4, m5} (partie droite). Dans le jargon des ingénieurs réseau, nous dirons avoir découpé la plage en deux sous-réseaux “slash 22”.

 Utilisation des alias de carte

Il est possible d’affecter plusieurs adresses IP à une même carte réseau. Cela permet de réaliser plusieurs réseaux avec la même infrastructure de niveau 1 ou 2 (hub ou switch).
Pour attribuer plusieurs adresses IP à une même interface réseau, la syntaxe de la commande ifconfig demande de choisir un “alias” arbitraire pour la carte (cf. man ifconfig).
Par exemple, pour inclure m4 dans le réseau LAN3 nous utiliserons une commande du genre :
m4# ifconfig eth0:lan3 10.10.10.4 
Ici, l’alias lan3 a été choisi pour l’attribution de l’adresse 10.10.10.4 à l’interface eth0 de m4.
 
Configurez donc un troisième un réseau, cette fois en utilisant des adresses privées, LAN3 = {m5, m6} en 10.10.10.0 ⁄ 24 (partie basse de la figure). La machine m6 appartiendra ainsi à la fois au LAN1 et au LAN3, et la machine m5 appartiendra ainsi à la fois au LAN2 et au LAN3.
 
Par simplicité, la machine mi prendra l’adresse _._._.i sur tous les réseaux sur lesquels elle doit être présente. Configurez toutes les interfaces réseaux avec la commande ifconfig en utilisant la notation CIDR et testez ensuite le bon fonctionnement des liaisons par la commande ping.

 Polarité mdi/mdi-x

Pendant qu’un ping traversant 2 commutateurs tourne en boucle entre deux machines (p.e. m1 et m3) :
 
  • essayez de remplacer dans la baie de brassage un câble croisé connectant deux commutateurs par un câble droit : deux ports ayant la même polarité (à l’occurrence MDI-X) seront ainsi mal connectés ;
     
  • observez l’attente du programme ping,
     
  • rebranchez le bon type de câble et observez le ping qui repart.

 Constater la non étanchéité

En supposant les trois réseaux opérationnels, vous allez observer dans cette dernière section que l’étanchéité entre les réseaux LAN1, LAN2 et LAN3 n’est pas complète.
Broadcast ARP.
Provoquez un broadcast ARP sur un réseau (p.e. LAN1) et observez-le avec tcpdump depuis une machine ne faisant pas partie de ce réseau (p.e. m4).
Broadcast DHCP.
Si le broadcast ARP provoque une perte de bande passante (tous les réseaux sauf un sont concernés à chaque broadcast), le broadcast DHCP peut être bien plus grave. En effet, on ne peut imaginer de configurer des serveurs DHCP comme si le découpage était réel (physique), et c’est ce que nous allons constater. Le protocole DHCP permet à des clients sans adresses IP de “demander” sur un réseau sur lequel ils sont branchés si quelqu’un a autorité pour leur affecter une adresse IP. Sous GNU/Linux la commande qui permet de faire cette demande est dhclient. Par exemple, la machine m4 pourrait tenter de configurer son interface eth0 par la commande :
m4# dhclient eth0 
D’autre part, pour qu’une machine ait autorité à délivrer des adresses IP, il suffit de lancer sur elle un serveur DHCP, typiquement par une commande du type :
m1# /etc/init.d/dhcpd start
cela après avoir éditer son fichier de configuration /etc/dhcpd.conf (cf. man dhcpd.conf), fichier où l’on donne des instructions sur la façon dont le serveur doit répondre à ses clients.
Par exemple, les lignes suivantes :
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.51  192.168.1.99;        
}
ddns-update-style none; 
instruisent le serveur à répondre avec un numéro IP qu’il choisira dans la plage 192.168.1.51 - 192.168.1.99 en fournissant le masque réseau 255.255.255.0 (/24).
La dernière ligne (ddns-update-style none;) est géneralement obligatoire : sans cette ligne le serveur risque ne pas accepter le fichier de configuration et donc de ne pas se lancer.
 
Exercice : configurez et lancez un serveur sur m1 pour servir les requêtes du LAN1 (une sous-plage de 194.85.40.0/22 au choix) et un serveur m2 pour servir les requêtes du LAN2 (une sous-plage de 194.85.44.0/22 au choix). Essayez ensuite d’ajouter 3 nouvelles machines que vous brancherez sur 3 commutateurs différents de la baie de brassage, et de les configurer toutes par DHCP. Vous devriez constater une sorte de “course” entre les serveurs : les nouvelles machines appartiendront au LAN1 ou au LAN2 selon la rapidité de réponse des serveurs...
Solution : les VLAN.
Certains commutateurs peuvent être configurés pour découper un réseau physique en plusieurs réseaux logiques en fonction des ports utilisés (VLAN 1) ou des adresses MAC utilisés (VLAN 2). Cela permet d’obtenir une étainchéité complète des réseaux logiques réalisés.