DS d’infonuagique
Polytech’Lille - Département GIS - seconde année |
1 DS réseau du 11 décembre 2014
Tous documents autorisés. Répondez directement sur l’énoncé.
Vous trouverez la correction sur le site web habituel.
1.1 Questions sur le cours
Voici quelques questions sur le cours d’infonuagique.
Une réponse de plus de deux lignes est hors sujet (une ligne suffit généralement).
-
Définissez en une phrase la notion de partition de disque.
- Quels sont les protocoles de la pile TCP/IPv4 directement encapsulés dans
un protocole de couche 2 (e.g. Ethernet) ?
- Donnez, en un mot, le concept technique le plus important sur lequel
repose l’infonuagique.
1.2 Questions sur le TP
Voici quelques questions sur les travaux pratiques d’infonuagique.
Une réponse de plus de deux lignes est hors sujet (une ligne suffit généralement).
-
Quelle distribution Linux avez-vous utilisé en TP ?
- Donnez le nom de deux utilitaires Unix que vous avez le plus fréquement
utilisé durant les travaux pratiques. Décrivez chaque utilitaire en moins de
dix mots.
- Donnez le nom de deux systèmes de virtualisation utilisés durant les TP.
- Quels types de virtualisations ont été utilisés en TP ?
1.3 Exercice de gestion des disques
On suppose qu’une clef USB a été connectée sur une machine Linux ne possédant pas
de mécanisme de montage automatique de systèmes de fichiers.
Répondez aux questions suivantes :
-
Indiquez comment vous pouvez trouver le fichier spécial périphérique bloc
correspondant à la clef USB (fichier se trouvant dans le répertoire /dev).
- Supposons que le fichier spécial correspondant à la clef soit /dev/sdb.
Est-ce obligatoirement /dev/sdb que l’on va utiliser pour accèder au système
de fichiers présent sur la clef ?
- Donnez la ligne de commande permettant de rendre le système de fichiers
de la clef USB disponible aux utilisateurs.
1.4 Exercice de configuration réseau
Une interconnexion simplissime de réseaux locaux est présentée dans la figure suivante :
Le réseau IPv4 implanté sur LAN2 est 192.168.2.0/24. Celui de LAN3 est 192.168.3.0/24.
Répondez aux questions suivantes.
-
On souhaite donner aux interfaces réseau du routeur dans LAN2 et dans LAN3, les premières
adresses IPv4 disponibles. Quelles sont ces adresses ?
- Donnez les commandes ifconfig et route à taper sur la machine A pour lui donner accès
à l’ensemble des machines du réseau. On suppose que la machine B n’est pas démarrée, il n’y a donc aucun
risque de conflit d’adresse IP avec cette dernière.
- Donnez la configuration à saisir dans /etc/network/interfaces sur la machine C pour lui donner
accès à l’ensemble des machines du réseau. On suppose que la machine D n’est pas démarrée, il n’y a donc aucun
risque de conflit d’adresse IP avec cette dernière.
2 Corrigé du DS du 11 décembre 2014
Tous documents autorisés. Répondez directement sur l’énoncé.
Vous trouverez la correction sur le site web habituel.
2.1 Questions sur le cours
Voici quelques questions sur le cours d’infonuagique.
Une réponse de plus de deux lignes est hors sujet (une ligne suffit généralement).
-
Définissez en une phrase la notion de partition de disque.
Une partition est une plage de blocs de données contigüs.
- Quels sont les protocoles de la pile TCP/IPv4 directement encapsulés dans
un protocole de couche 2 (e.g. Ethernet) ?
Les protocoles ARP et IPv4 sont directement encapsulés dans un protocole de
couche 2. Les protocoles ICMPv4, UDP et TCP sont encapsulés dans IPv4.
- Donnez, en un mot, le concept technique le plus important sur lequel
repose l’infonuagique.
La virtualisation. Que ce soit la virtualisation des systèmes d’exploitation
(instances), ou la virtualisation réseau (réseaux locaux et routeurs virtuels).
2.2 Questions sur le TP
Voici quelques questions sur les travaux pratiques d’infonuagique.
Une réponse de plus de deux lignes est hors sujet (une ligne suffit généralement).
-
Quelle distribution Linux avez-vous utilisé en TP ?
Il s’agissait de la distribution Linux Debian.
- Donnez le nom de deux utilitaires Unix que vous avez le plus fréquement
utilisé durant les travaux pratiques. Décrivez chaque utilitaire en moins de
dix mots.
Quelques utilitaires fréquement utilisés en TP :
-
apt-get : gestionnaire de paquetages logiciels,
- vi, nano : éditeurs de texte en mode console,
- xl : gestionnaire de machines virtuelles Xen,
- ssh : client de connexion à distance.
- Donnez le nom de deux systèmes de virtualisation utilisés durant les TP.
Système de virtualisation Xen pour la mise en jambes et les noeuds
contrôleur et réseau. Système de virtualisation KVM pour les instances
openstack.
- Quels types de virtualisations ont été utilisés en TP ?
Les deux systèmes Xen et KVM ont été utilisés en mode para-virtualisation
avec, donc, des systèmes d’exploitation modifiés pour que les périphériques
soient accédés en passant par l’hyperviseur plutôt que par une émulation.
2.3 Exercice de gestion des disques
On suppose qu’une clef USB a été connectée sur une machine Linux ne possédant pas
de mécanisme de montage automatique de systèmes de fichiers.
Répondez aux questions suivantes :
-
Indiquez comment vous pouvez trouver le fichier spécial périphérique bloc
correspondant à la clef USB (fichier se trouvant dans le répertoire /dev).
Vous pouvez visualiser les derniers messages du noyau avec dmesg.
Vous pouvez visualiser les disques connectés avec fdisk -l.
Les fichiers spéciaux étant désormais créés dynamiquement, un simple
ls /dev/sd* suffit.
- Supposons que le fichier spécial correspondant à la clef soit /dev/sdb.
Est-ce obligatoirement /dev/sdb que l’on va utiliser pour accèder au système
de fichiers présent sur la clef ?
Non, le système de fichiers est probablement sur la première
(et unique) partition de la clef, soit /dev/sdb1.
- Donnez la ligne de commande permettant de rendre le système de fichiers
de la clef USB disponible aux utilisateurs.
mount /dev/sdb1 /mnt
2.4 Exercice de configuration réseau
Une interconnexion simplissime de réseaux locaux est présentée dans la figure suivante :
Le réseau IPv4 implanté sur LAN2 est 192.168.2.0/24. Celui de LAN3 est 192.168.3.0/24.
Répondez aux questions suivantes.
-
On souhaite donner aux interfaces réseau du routeur dans LAN2 et dans LAN3, les premières
adresses IPv4 disponibles. Quelles sont ces adresses ?
La première adresse disponible dans LAN2 est 192.168.2.1. Dans LAN3 l’adresse
sera 192.168.3.1.
- Donnez les commandes ifconfig et route à taper sur la machine A pour lui donner accès
à l’ensemble des machines du réseau. On suppose que la machine B n’est pas démarrée, il n’y a donc aucun
risque de conflit d’adresse IP avec cette dernière.
Un exemple de configuration réseau valide est :
# ifconfig eth0 192.168.2.10 netmask 255.255.255.0
# route add -net default gw 192.168.2.1
- Donnez la configuration à saisir dans /etc/network/interfaces sur la machine C pour lui donner
accès à l’ensemble des machines du réseau. On suppose que la machine D n’est pas démarrée, il n’y a donc aucun
risque de conflit d’adresse IP avec cette dernière.
Un exemple de configuration réseau valide est :
# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.3.10
netmask 255.255.255.0
gateway 192.168.3.1
# ifup eth0
3 DS réseau du 11 janvier 2016
Tous documents autorisés. Répondez directement sur l’énoncé.
Vous trouverez la correction sur le site web habituel.
3.1 Questions sur le cours
Voici quelques questions sur le cours d’infonuagique.
Une réponse de plus de trois lignes est hors sujet (deux lignes suffisent généralement).
-
Quel procédé permet d’obtenir une machine virtuelle avec un processeur de
type différent de celui de la machine hôte ?
- Dans le système LVM (Logical Volume Manager) de Linux, quelle commande
permet de libérer une partition physique ou un disque physique (PV) des blocs
utilisés par une partition virtuelle (LV) ?
- Pour qu’un navigateur reconnaisse un site Web sécurisé comme valide faut-il que
le certificat X509 de ce site soit directement signé par une autorité de certification
connue du navigateur ? Sinon précisez la condition de validation.
- Avant que l’encryption WEP (Wired Equivalent Privacy) ne soit cassée par découverte
de la clef WEP, quel autre procédé permettait de décoder les trames WiFi encryptées avec WEP ?
- Si vous souhaitez utiliser, comme procédé d’encryption, WPA-PSK, quelle précaution
faut-il prendre ? Pourquoi ?
3.2 Questions sur le TP
Voici quelques questions sur les travaux pratiques d’infonuagique.
Une réponse de plus de trois lignes est hors sujet.
-
Quel hyperviseur avez-vous utilisé pour votre machine virtuelle hébergeant
un site Web ? Avec quel type de virtualisation ?
- Combien de serveurs de bases de données avez-vous installé pour openStack ?
- Décrivez la méthode utilisée pour ajouter deux cartes Ethernet sur le noeud
réseau.
- Dans quel fichier de configuration avez-vous enregistré les adresses IP de vos machines
virtuelles Debian ?
- Quel est le rôle du module glance d’openStack ?
3.3 Exercice de configuration réseau
Il vous est demandé de configurer l’interface réseau d’une machine virtuelle déjà créée
et installée dans un réseau local associé au réseau IPv4 192.168.226.0/28.
Répondez aux questions suivantes.
-
Trouvez l’adresse IPv4 du routeur sachant qu’il possède la première adresse IPv4
utilisable du réseau.
- Donnez le masque réseau avec la notation classique, c’est à dire celle des adresses IPv4.
- Avec les éléments ci-dessus, donnez une configuration IP valide pour eth0 à saisir
dans le fichier interfaces (répertoire /etc/network) sur la machine virtuelle. La
machine virtuelle doit pouvoir contacter des machines à l’extérieur de son réseau local.
3.4 Exercice de cassage de clef WiFi
Nous allons considérer un protocole d’identification basé sur celui de WPA
(WiFi Protected Access) mais extrêmement simplifié :
-
La clef d’identification est sur un seul octet.
- Les adresses MAC sont aussi sur un seul octet.
- Les paquets contiennent les champs suivants :
-
le type de paquet sur un octet (0xaa pour les
paquets d’identification) ;
- l’adresse MAC du point d’accès ;
- l’adresse MAC de la station source ;
- l’adresse MAC de la station destination ;
- les données.
- L’identification se fait en trois échanges :
-
la station donne sa valeur aléatoire sur un octet ;
- le point d’accès donne sa valeur aléatoire sur un octet et un code
calculé en gardant les deux octets de poids faible de la multiplication des
adresses MAC, des valeurs aléatoires, de la clef d’identification et de la
constante 0x5555 ;
- la station vérifie le code envoyé par le point d’accès et transmet son
propre code calculé de façon similaire mais en utilisant la constante 0xaaaa
à la place de 0x5555. Le point d’accès peut alors identifier la station.
Un analyseur réseau est utilisé pour capturer les trois premiers échanges de
l’identification entre une station et le point d’accès.
-
paquet n°1
- : aa 04 91 00 16 ;
- paquet n°2
- : aa 04 00 91 df 53 a8 ;
- paquet n°3
- : aa 04 91 00 a7 50 ;
Répondez aux questions suivantes :
-
Quelle est l’adresse du point d’accès ? Quelle valeur aléatoire transmet-il
à la station ?
- Quelle est l’adresse de la station ? Quelle valeur aléatoire transmet-elle
au point d’accès ?
- Quel est le code calculé par le point d’accès ?
- A partir du code du point d’accès, donnez la formule mathématique pour retrouver la clef
d’identification ou, à défaut, écrivez un programme C pour la découvrir.
4 Corrigé du DS du 11 janvier 2016
Tous documents autorisés. Répondez directement sur l’énoncé.
Vous trouverez la correction sur le site web habituel.
4.1 Questions sur le cours
Voici quelques questions sur le cours d’infonuagique.
Une réponse de plus de trois lignes est hors sujet (deux lignes suffisent généralement).
-
Quel procédé permet d’obtenir une machine virtuelle avec un processeur de
type différent de celui de la machine hôte ?
Seule l’émulation permet d’obtenir une machine virtuelle avec un CPU
totalement différent de celui de la machine hôte.
- Dans le système LVM (Logical Volume Manager) de Linux, quelle commande
permet de libérer une partition physique ou un disque physique (PV) des blocs
utilisés par une partition virtuelle (LV) ?
La commande pvmove permet de transférer les blocs d’un PV vers un autre.
- Pour qu’un navigateur reconnaisse un site Web sécurisé comme valide faut-il que
le certificat X509 de ce site soit directement signé par une autorité de certification
connue du navigateur ? Sinon précisez la condition de validation.
Non, le certificat du site doit être en bout d’une chaîne de certification
dont l’origine est une autorité de certification reconnue par le navigateur.
- Avant que l’encryption WEP (Wired Equivalent Privacy) ne soit cassée par découverte
de la clef WEP, quel autre procédé permettait de décoder les trames WiFi encryptées avec WEP ?
L’idée était de constituer, par différentes techniques, un dictionnaire avec comme
entrées les vecteurs d’initialisation et comme valeurs les flux aléatoires RC4
correspondants.
- Si vous souhaitez utiliser, comme procédé d’encryption, WPA-PSK, quelle précaution
faut-il prendre ? Pourquoi ?
La clef WPA doit être suffisament longue et utiliser un jeu de caractères assez riche.
Dans le cas contraire la clef peut être cassée par force brute après capture de quelques
paquets WiFi seulement.
4.2 Questions sur le TP
Voici quelques questions sur les travaux pratiques d’infonuagique.
Une réponse de plus de trois lignes est hors sujet.
-
Quel hyperviseur avez-vous utilisé pour votre machine virtuelle hébergeant
un site Web ? Avec quel type de virtualisation ?
Il s’agissait d’un hyperviseur Xen avec une machine virtuelle en mode
para-virtualisation.
- Combien de serveurs de bases de données avez-vous installé pour openStack ?
Un seul sur le noeud contrôleur. Les applications sur les noeuds réseau et de
calcul se connectent sur le serveur mysql du noeud contrôleur.
- Décrivez la méthode utilisée pour ajouter deux cartes Ethernet sur le noeud
réseau.
Le fichier de configuration .cfg de la machine virtuelle a été modifié.
Plus exactement deux descriptions de cartes Ethernet ont été ajoutées à la directive
vif du fichier de configuration. La description consiste en une adresse Ethernet
et en le commutateur virtuel correspondant au VLAN sur lequel connecter la carte.
- Dans quel fichier de configuration avez-vous enregistré les adresses IP de vos machines
virtuelles Debian ?
Le fichier de configuration IP sous Debian est /etc/network/interfaces.
- Quel est le rôle du module glance d’openStack ?
Ce module gère les images des machines virtuelles d’openStack.
4.3 Exercice de configuration réseau
Il vous est demandé de configurer l’interface réseau d’une machine virtuelle déjà créée
et installée dans un réseau local associé au réseau IPv4 192.168.226.0/28.
Répondez aux questions suivantes.
-
Trouvez l’adresse IPv4 du routeur sachant qu’il possède la première adresse IPv4
utilisable du réseau.
La première adresse disponible est 192.168.226.1.
- Donnez le masque réseau avec la notation classique, c’est à dire celle des adresses IPv4.
Un masque avec 28 bits à 1 s’écrit de façon classique 255.255.255.240.
- Avec les éléments ci-dessus, donnez une configuration IP valide pour eth0 à saisir
dans le fichier interfaces (répertoire /etc/network) sur la machine virtuelle. La
machine virtuelle doit pouvoir contacter des machines à l’extérieur de son réseau local.
Un exemple de configuration IP valide pour la machine virtuelle est :
iface eth0 inet static
address 192.168.226.2
netmask 255.255.255.240
gateway 192.168.226.1
4.4 Exercice de cassage de clef WiFi
Nous allons considérer un protocole d’identification basé sur celui de WPA
(WiFi Protected Access) mais extrêmement simplifié :
-
La clef d’identification est sur un seul octet.
- Les adresses MAC sont aussi sur un seul octet.
- Les paquets contiennent les champs suivants :
-
le type de paquet sur un octet (0xaa pour les
paquets d’identification) ;
- l’adresse MAC du point d’accès ;
- l’adresse MAC de la station source ;
- l’adresse MAC de la station destination ;
- les données.
- L’identification se fait en trois échanges :
-
la station donne sa valeur aléatoire sur un octet ;
- le point d’accès donne sa valeur aléatoire sur un octet et un code
calculé en gardant les deux octets de poids faible de la multiplication des
adresses MAC, des valeurs aléatoires, de la clef d’identification et de la
constante 0x5555 ;
- la station vérifie le code envoyé par le point d’accès et transmet son
propre code calculé de façon similaire mais en utilisant la constante 0xaaaa
à la place de 0x5555. Le point d’accès peut alors identifier la station.
Un analyseur réseau est utilisé pour capturer les trois premiers échanges de
l’identification entre une station et le point d’accès.
-
paquet n°1
- : aa 04 91 00 16 ;
- paquet n°2
- : aa 04 00 91 df 53 a8 ;
- paquet n°3
- : aa 04 91 00 a7 50 ;
Répondez aux questions suivantes :
-
Quelle est l’adresse du point d’accès ? Quelle valeur aléatoire transmet-il
à la station ?
L’adresse du point d’accès est donnée par le second octet des paquets : 0x04.
La valeur aléatoire du point d’accès est le premier octet des données du
second paquet : 0xdf.
- Quelle est l’adresse de la station ? Quelle valeur aléatoire transmet-elle
au point d’accès ?
L’adresse de la station est donnée, par exemple, par le troisième octet du
premier paquet : 0x91. La valeur aléatoire de la station est le
premier octet des données du premier paquet : 0x16.
- Quel est le code calculé par le point d’accès ?
Ce code est visible dans les deux derniers octets de données du second paquet : 0x53a8.
- A partir du code du point d’accès, donnez la formule mathématique pour retrouver la clef
d’identification ou, à défaut, écrivez un programme C pour la découvrir.
La méthode de calcul du code rend la découverte de la clef d’identification
un peu complexe (du moins dans le cadre de cet examen, je ne doute pas qu’avec
une méthode si primitive et un peu de temps vous seriez capable de mettre au
point un algorithme efficace de découverte de clef). Par contre avec un espace
si restreint pour la clef (256 valeurs seulement), le cassage par force brute est
trival, voir le programme C ci-dessous.
#include <stdio.h>
#define MAC_STATION 0x91
#define MAC_AP 0x04
#define ALEA_STATION 0x16
#define ALEA_AP 0xdf
#define CST_AP 0x5555
#define CODE_AP 0x53a8
int main(void){
int i;
for(i=0;i<256;i++){
long int key=MAC_STATION*MAC_AP*ALEA_STATION*ALEA_AP*i;
long int code_ap=(key*CST_AP)&0xffff;
if(code_ap==CODE_AP) printf("key=%02x\n",i);
}
}
Ici la clef d’identification était 0x8d.
5 DS réseau du 13 janvier 2017
Tous documents autorisés. Répondez directement sur l’énoncé.
Vous trouverez la correction sur le site web habituel.
5.1 Exercice système d’exploitation
Supposons que vous avez oublié le mot de passe administrateur de votre machine virtuelle dumbo.
Nous allons essayer de ré-initialiser ce mot de passe.
Procédons par étapes.
-
Sur quel serveur de virtualisation se trouve votre machine virtuelle ?
- Le disque virtuel de votre machine virtuelle se trouve dans le répertoire
/usr/local/xen/domains/dumbo/disk.img. Donnez une idée de grandeur de la taille de ce fichier.
- L’option -o loop permet à l’utilitaire mount de monter des fichiers
comme des partitions. Donnez la ligne de commande permettant de monter le disque virtuel
sur le répertoire /mnt.
- Une fois le montage effectué, quel fichier faut-il modifier pour changer le mot de
passe administrateur de la machine virtuelle ? Donnez le chemin complet du fichier.
- Sachant que le mot de passe est crypté, comment pouvez-vous faire pour remplacer
l’ancien mot de passe oublié par un nouveau mot de passe connu ?
5.2 Exercice de configuration réseau
Il vous est demandé de configurer l’interface réseau d’une machine virtuelle déjà créée
et installée dans un réseau local associé au réseau IPv4 192.168.53.192/26.
Répondez aux questions suivantes.
-
Trouvez l’adresse IPv4 du routeur sachant qu’il possède la dernière adresse IPv4
utilisable du réseau.
- Donnez le masque réseau avec la notation classique, c’est à dire celle des adresses IPv4.
- Avec les éléments ci-dessus, donnez une configuration IP valide pour eth0 à saisir
dans le fichier interfaces (répertoire /etc/network) sur la machine virtuelle. La
machine virtuelle doit pouvoir contacter des machines à l’extérieur de son réseau local.
5.3 Exercice de cassage de clef WiFi
Nous allons considérer un protocole d’identification basé sur celui de WPA
(WiFi Protected Access) mais extrêmement simplifié :
-
La clef d’identification est sur un seul octet.
- Les adresses MAC sont aussi sur un seul octet.
- Les paquets contiennent les champs suivants :
-
le type de paquet sur un octet (0xaa pour les
paquets d’identification) ;
- l’adresse MAC du point d’accès ;
- l’adresse MAC de la station source ;
- l’adresse MAC de la station destination ;
- les données.
- L’identification se fait en trois échanges :
-
la station donne sa valeur aléatoire sur un octet ;
- le point d’accès donne sa valeur aléatoire sur un octet et un code
calculé en gardant les deux octets de poids faible de la multiplication des
adresses MAC, des valeurs aléatoires, de la clef d’identification et de la
constante 0x5555 ;
- la station vérifie le code envoyé par le point d’accès et transmet son
propre code calculé de façon similaire mais en utilisant la constante 0xaaaa
à la place de 0x5555. Le point d’accès peut alors identifier la station.
Un analyseur réseau est utilisé pour capturer les trois premiers échanges de
l’identification entre une station et le point d’accès.
-
paquet 1
- : aa a5 3f 00 d3 ;
- paquet 2
- : aa a5 00 3f 27 6f e6 ;
- paquet 3
- : aa a5 3f 00 df cc ;
Répondez aux questions suivantes :
-
Quelle est l’adresse du point d’accès ? Quelle valeur aléatoire transmet-il
à la station ?
- Quelle est l’adresse de la station ? Quelle valeur aléatoire transmet-elle
au point d’accès ?
- Quel est le code calculé par la station ?
- A partir du code de la station, trouvez la clef d’identification. Donnez la en hexa-décimal.
6 Corrigé du DS du 13 janvier 2017
Tous documents autorisés. Répondez directement sur l’énoncé.
Vous trouverez la correction sur le site web habituel.
6.1 Exercice système d’exploitation
Supposons que vous avez oublié le mot de passe administrateur de votre machine virtuelle dumbo.
Nous allons essayer de ré-initialiser ce mot de passe.
Procédons par étapes.
-
Sur quel serveur de virtualisation se trouve votre machine virtuelle ?
Vos machines virtuelles ont été créées sur le serveur
chassiron.insecserv.deule.net.
- Le disque virtuel de votre machine virtuelle se trouve dans le répertoire
/usr/local/xen/domains/dumbo/disk.img. Donnez une idée de grandeur de la taille de ce fichier.
Le disque virtuel doit contenir tous les fichiers d’une distribution Debian.
Soit quelques gigaoctets. Pour une distribution jessie, 4Go peuvent suffire.
- L’option -o loop permet à l’utilitaire mount de monter des fichiers
comme des partitions. Donnez la ligne de commande permettant de monter le disque virtuel
sur le répertoire /mnt.
mount -o loop -t ext4 /usr/local/xen/domains/dumbo/disk.img /mnt
- Une fois le montage effectué, quel fichier faut-il modifier pour changer le mot de
passe administrateur de la machine virtuelle ? Donnez le chemin complet du fichier.
Il faut modifier l’entrée root du fichier /mnt/etc/shadow.
- Sachant que le mot de passe est crypté, comment pouvez-vous faire pour remplacer
l’ancien mot de passe oublié par un nouveau mot de passe connu ?
Le plus simple est de prendre le mot de passe encrypté d’une machine dont on connait
le mot de passe en clair.
6.2 Exercice de configuration réseau
Il vous est demandé de configurer l’interface réseau d’une machine virtuelle déjà créée
et installée dans un réseau local associé au réseau IPv4 192.168.53.192/26.
Répondez aux questions suivantes.
-
Trouvez l’adresse IPv4 du routeur sachant qu’il possède la dernière adresse IPv4
utilisable du réseau.
La dernière adresse disponible est 192.168.53.254.
- Donnez le masque réseau avec la notation classique, c’est à dire celle des adresses IPv4.
Un masque avec 26 bits à 1 s’écrit de façon classique 255.255.255.192.
- Avec les éléments ci-dessus, donnez une configuration IP valide pour eth0 à saisir
dans le fichier interfaces (répertoire /etc/network) sur la machine virtuelle. La
machine virtuelle doit pouvoir contacter des machines à l’extérieur de son réseau local.
Un exemple de configuration IP valide pour la machine virtuelle est :
iface eth0 inet static
address 192.168.53.193
netmask 255.255.255.192
gateway 192.168.53.254
6.3 Exercice de cassage de clef WiFi
Nous allons considérer un protocole d’identification basé sur celui de WPA
(WiFi Protected Access) mais extrêmement simplifié :
-
La clef d’identification est sur un seul octet.
- Les adresses MAC sont aussi sur un seul octet.
- Les paquets contiennent les champs suivants :
-
le type de paquet sur un octet (0xaa pour les
paquets d’identification) ;
- l’adresse MAC du point d’accès ;
- l’adresse MAC de la station source ;
- l’adresse MAC de la station destination ;
- les données.
- L’identification se fait en trois échanges :
-
la station donne sa valeur aléatoire sur un octet ;
- le point d’accès donne sa valeur aléatoire sur un octet et un code
calculé en gardant les deux octets de poids faible de la multiplication des
adresses MAC, des valeurs aléatoires, de la clef d’identification et de la
constante 0x5555 ;
- la station vérifie le code envoyé par le point d’accès et transmet son
propre code calculé de façon similaire mais en utilisant la constante 0xaaaa
à la place de 0x5555. Le point d’accès peut alors identifier la station.
Un analyseur réseau est utilisé pour capturer les trois premiers échanges de
l’identification entre une station et le point d’accès.
-
paquet 1
- : aa a5 3f 00 d3 ;
- paquet 2
- : aa a5 00 3f 27 6f e6 ;
- paquet 3
- : aa a5 3f 00 df cc ;
Répondez aux questions suivantes :
-
Quelle est l’adresse du point d’accès ? Quelle valeur aléatoire transmet-il
à la station ?
L’adresse du point d’accès est donnée par le second octet des paquets : 0xa5.
La valeur aléatoire du point d’accès est le premier octet des données du
second paquet : 0x27.
- Quelle est l’adresse de la station ? Quelle valeur aléatoire transmet-elle
au point d’accès ?
L’adresse de la station est donnée, par exemple, par le troisième octet du
premier paquet : 0x3f. La valeur aléatoire de la station est le
premier octet des données du premier paquet : 0xd3.
- Quel est le code calculé par la station ?
Ce code est visible dans les deux derniers octets de données du troisième paquet : 0xdfcc.
- A partir du code de la station, trouvez la clef d’identification. Donnez la en hexa-décimal.
Une solution pour trouver la clef consiste à tester les 256 possibilités.
C’est à dire calculer l’expression suivante pour clef de 0 à 255 :
long int code=(MAC_STATION*MAC_AP*ALEA_STATION*ALEA_AP*clef*0xaaaa)&0xffff;
Quand code est égal à 0xdfcc vous avez trouvé la
bonne valeur de clef. Soit 82 dans le cas présent.
7 DS réseau du 16 janvier 2018
Tous documents autorisés. Répondez directement sur l’énoncé.
Vous trouverez la correction sur le site web habituel.
7.1 Présentation de l’examen
Cet examen passe en revue tous les aspects de configuration IP, d’isolation et de virtualisation
vus en cours. L’idée est de vous faire étudier un système de serveurs Web installés dans une
machine virtuelle, chaque serveur Web étant isolé au sein d’un conteneur. Pour une isolation
encore plus complète et pour de meilleures performances, les serveurs Web peuvent être connectés
sur des VLANs différents.
Il va vous être demandé de configurer l’ensemble du système y compris les équipements réseau et y
compris une station de test des serveurs Web. Le schéma du dispositif est donné par la figure ci-dessous :
Quelques explications sur le schéma :
-
le routeur est connecté, par son interface gigabitEthernet0, au port gigabitEthernet0/1
du commutateur, port configuré en mode "trunk" ;
- la station est connectée, par son interface eth0, au port gigabitEthernet0/2 du commutateur,
port configuré dans le VLAN10 ;
- le serveur de virtualisation est connecté, via ses interfaces eth0, eth1 et eth2, aux
ports gigabitEthernet1/1, gigabitEthernet1/2 et gigabitEthernet1/3 du commutateurs, ces ports
sont configurés dans les VLAN VLAN2, VLAN3 et VLAN4 ;
- le cercle donne un aperçu de la configuration du serveur de virtualisation : y sont créés une machine
virtuelle et 3 commutateurs virtuels bridgeVLAN2, bridgeVLAN3 et bridgeVLAN4, ces commutateurs
sont initialisés avec comme interfaces participantes l’interface eth0 du serveur pour bridgeVLAN2,
l’interface eth1 du serveur pour bridgeVLAN3 et l’interface eth2 du serveur pour bridgeVLAN4 ;
- la machine virtuelle est configurée avec 3 interfaces virtuelles eth0, eth1 et eth2
définies dans les commutateurs virtuels bridgeVLAN2, bridgeVLAN3 et bridgeVLAN4 (dans cet ordre) ;
- dans la machine virtuelle, des conteneurs sont créés et rattachés aux commutateurs br0, br1
et br2, ces commutateurs sont initialisés avec comme interfaces participantes l’interface eth0 de la
machine virtuelle pour br0, l’interface eth1 de la machine virtuelle br1 et l’interface eth2
de la machine virtuelle pour br2.
Les réseaux IPv4 sont définis comme suit :
-
au réseau de serveurs Web VLAN2 est associé le réseau IPv4 10.187.0.0/16 ;
- au réseau de serveurs Web VLAN3 est associé le réseau IPv4 10.218.0.0/16 ;
- au réseau de serveurs Web VLAN4 est associé le réseau IPv4 10.53.0.0/16 ;
- au réseau des stations de tests VLAN10 est associé le réseau IPv4 192.168.51.0/24 ;
- enfin il est prévu d’interconnecter ce réseau avec Internet via VLAN42 associé au réseau IPv4 172.16.0.192/29.
7.2 Exercice de configuration du routeur
Donnez la configuration du routeur pour permettre une communication non restreinte entre les différents réseaux IPv4 et
avec internet. On suppose que le routeur d’accès à Internet a comme adresse IPv4 dans VLAN42 172.16.0.198.
Il est demandé d’affecter aux interfaces du routeur les premières adresses utilisables des réseaux IPv4.
Il est indiqué que ce type de routeur se configure avec la méthode des interfaces "vlan".
Il n’est pas demandé de configurer un mot de passe.
> enable
# configure terminal
(config)# interface gigabitEthernet0
(config-if)# switchport
(config-if)# switchport trunk encapsulation dot1q
(config-if)# switchport mode trunk
(config-if)# exit
7.3 Exercice de configuration du commutateur
Donnez la configuration du commutateur pour qu’il se comporte comme indiqué dans la présentation.
Il n’est pas demandé de configurer un mot de passe ni de configurer une adresse IPv4 de gestion.
> enable
7.4 Exercice de configuration réseau de la station
Donnez une configuration réseau possible de la station de test. Vous devez effectuer
une configuration pérenne. Il n’existe pas de serveur DHCP utilisable sur le réseau.
7.5 Exercice sur la configuration du serveur de virtualisation
Deux aspects de la configuration du serveur de virtualisation sont abordés.
-
Le serveur dispose de deux disques de 5To accessibles via les fichiers
spéciaux /dev/sdu et /dev/sdb. Donnez les commandes permettant de créer
un groupe de volumes LVM avec ces deux disques et de créer une partition virtuelle
de 500Go pour la machine virtuelle.
- Donnez l’extrait du fichier de configuration permettant de créer à chaque
démarrage du serveur le commutateur virtuel bridgeVLAN2.
7.6 Exercice sur la configuration de la machine virtuelle
Il vous est demandé d’intuiter des extraits du fichier de configuration
de la machine virtuelle suffixé .cfg .
-
Donnez la valeur du mot clef disk dans le fichier de configuration.
- Donnez la valeur du mot clef vif dans le fichier de configuration.
7.7 Exercice sur la configuration d’un conteneur
Pour cet exercice vous supposerez les points suivants acquis :
Donnez le script shell permettant de réaliser les opérations suivantes :
-
monter le système de fichier du conteneur sur le répertoire
/var/lib/containers/web48 ;
- lancer en tâche de fond la commande de création du conteneur
par unshare avec exécution du script de démarrage, récupérer
le PID de la commande par l’instruction pid=$! ;
- créer une paire d’interfaces Ethernet virtuelles, déplacer une
interface dans le commutateur virtuel br1 et l’autre dans le
conteneur de sorte que le script de démarrage sorte de sa boucle.
7.8 Exercice sur la copie d’un site Web
Pour cet exercice vous devez supposer que vous vous trouvez à travailler
physiquement sur le serveur de virtualisation. Vous voulez transférer les
fichiers d’un site Web qui se trouvent à la racine d’une clef USB dans le
répertoire adéquat de votre conteneur. Vous allez donc connecter la clef
USB sur le serveur de virtualisation. Donnez ensuite les commandes à taper
pour effectuer le transfert sachant que le conteneur est, à ce moment,
arrêté. Pour vous aider, voici le résultat de la commande lsusb
après insertion de la clef USB :
# lsblk -o NAME -i
NAME
sdu
sdb
sde
`-sde1
sr0
8 Corrigé du DS du 16 janvier 2018
Tous documents autorisés. Répondez directement sur l’énoncé.
Vous trouverez la correction sur le site web habituel.
8.1 Présentation de l’examen
Cet examen passe en revue tous les aspects de configuration IP, d’isolation et de virtualisation
vus en cours. L’idée est de vous faire étudier un système de serveurs Web installés dans une
machine virtuelle, chaque serveur Web étant isolé au sein d’un conteneur. Pour une isolation
encore plus complète et pour de meilleures performances, les serveurs Web peuvent être connectés
sur des VLANs différents.
Il va vous être demandé de configurer l’ensemble du système y compris les équipements réseau et y
compris une station de test des serveurs Web. Le schéma du dispositif est donné par la figure ci-dessous :
Quelques explications sur le schéma :
-
le routeur est connecté, par son interface gigabitEthernet0, au port gigabitEthernet0/1
du commutateur, port configuré en mode "trunk" ;
- la station est connectée, par son interface eth0, au port gigabitEthernet0/2 du commutateur,
port configuré dans le VLAN10 ;
- le serveur de virtualisation est connecté, via ses interfaces eth0, eth1 et eth2, aux
ports gigabitEthernet1/1, gigabitEthernet1/2 et gigabitEthernet1/3 du commutateurs, ces ports
sont configurés dans les VLAN VLAN2, VLAN3 et VLAN4 ;
- le cercle donne un aperçu de la configuration du serveur de virtualisation : y sont créés une machine
virtuelle et 3 commutateurs virtuels bridgeVLAN2, bridgeVLAN3 et bridgeVLAN4, ces commutateurs
sont initialisés avec comme interfaces participantes l’interface eth0 du serveur pour bridgeVLAN2,
l’interface eth1 du serveur pour bridgeVLAN3 et l’interface eth2 du serveur pour bridgeVLAN4 ;
- la machine virtuelle est configurée avec 3 interfaces virtuelles eth0, eth1 et eth2
définies dans les commutateurs virtuels bridgeVLAN2, bridgeVLAN3 et bridgeVLAN4 (dans cet ordre) ;
- dans la machine virtuelle, des conteneurs sont créés et rattachés aux commutateurs br0, br1
et br2, ces commutateurs sont initialisés avec comme interfaces participantes l’interface eth0 de la
machine virtuelle pour br0, l’interface eth1 de la machine virtuelle br1 et l’interface eth2
de la machine virtuelle pour br2.
Les réseaux IPv4 sont définis comme suit :
-
au réseau de serveurs Web VLAN2 est associé le réseau IPv4 10.187.0.0/16 ;
- au réseau de serveurs Web VLAN3 est associé le réseau IPv4 10.218.0.0/16 ;
- au réseau de serveurs Web VLAN4 est associé le réseau IPv4 10.53.0.0/16 ;
- au réseau des stations de tests VLAN10 est associé le réseau IPv4 192.168.51.0/24 ;
- enfin il est prévu d’interconnecter ce réseau avec Internet via VLAN42 associé au réseau IPv4 172.16.0.192/29.
8.2 Exercice de configuration du routeur
Donnez la configuration du routeur pour permettre une communication non restreinte entre les différents réseaux IPv4 et
avec internet. On suppose que le routeur d’accès à Internet a comme adresse IPv4 dans VLAN42 172.16.0.198.
Il est demandé d’affecter aux interfaces du routeur les premières adresses utilisables des réseaux IPv4.
Il est indiqué que ce type de routeur se configure avec la méthode des interfaces "vlan".
Il n’est pas demandé de configurer un mot de passe.
> enable
# configure terminal
(config)# interface gigabitEthernet0
(config-if)# switchport
(config-if)# switchport trunk encapsulation dot1q
(config-if)# switchport mode trunk
(config-if)# exit
(config)# interface vlan2
(config-if)# ip address 10.187.0.1 255.255.0.0
(config-if)# exit
(config)# interface vlan3
(config-if)# ip address 10.218.0.1 255.255.0.0
(config-if)# exit
(config)# interface vlan4
(config-if)# ip address 10.53.0.1 255.255.0.0
(config-if)# exit
(config)# interface vlan10
(config-if)# ip address 192.168.51.1 255.255.255.0
(config-if)# exit
(config)# interface vlan42
(config-if)# ip address 172.16.0.193 255.255.255.248
(config-if)# exit
(config)# ip route 0.0.0.0 0.0.0.0 172.16.0.198
(config)# exit
# write
8.3 Exercice de configuration du commutateur
Donnez la configuration du commutateur pour qu’il se comporte comme indiqué dans la présentation.
Il n’est pas demandé de configurer un mot de passe ni de configurer une adresse IPv4 de gestion.
> enable
# configure terminal
(config)# interface gigabitEthernet0/1
(config-if)# switchport
(config-if)# switchport trunk encapsulation dot1q
(config-if)# switchport mode trunk
(config-if)# exit
(config)# interface gigabitEthernet0/2
(config-if)# switchport
(config-if)# switchport mode access
(config-if)# switchport access vlan 10
(config-if)# exit
(config)# interface gigabitEthernet1/1
(config-if)# switchport
(config-if)# switchport mode access
(config-if)# switchport access vlan 2
(config-if)# exit
(config)# interface gigabitEthernet1/2
(config-if)# switchport
(config-if)# switchport mode access
(config-if)# switchport access vlan 3
(config-if)# exit
(config)# interface gigabitEthernet1/3
(config-if)# switchport
(config-if)# switchport mode access
(config-if)# switchport access vlan 4
(config-if)# exit
(config)# exit
# write
8.4 Exercice de configuration réseau de la station
Donnez une configuration réseau possible de la station de test. Vous devez effectuer
une configuration pérenne. Il n’existe pas de serveur DHCP utilisable sur le réseau.
# cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.51.42
netmask 255.255.255.0
gateway 192.168.51.1
8.5 Exercice sur la configuration du serveur de virtualisation
Deux aspects de la configuration du serveur de virtualisation sont abordés.
-
Le serveur dispose de deux disques de 5To accessibles via les fichiers
spéciaux /dev/sdu et /dev/sdb. Donnez les commandes permettant de créer
un groupe de volumes LVM avec ces deux disques et de créer une partition virtuelle
de 500Go pour la machine virtuelle.
# pvcreate /dev/sdu /dev/sdb
# vgcreate storage /dev/sdu /dev/sdb
# lvcreate -L500G -nweb storage
- Donnez l’extrait du fichier de configuration permettant de créer à chaque
démarrage du serveur le commutateur virtuel bridgeVLAN2.
# cat /etc/network/interfaces
...
auto eth0
iface eth0 inet manual
up ip link set $IFACE up
auto bridgeVLAN2
iface bridgeVLAN2 inet manual
bridge_ports eth0
...
8.6 Exercice sur la configuration de la machine virtuelle
Il vous est demandé d’intuiter des extraits du fichier de configuration
de la machine virtuelle suffixé .cfg .
-
Donnez la valeur du mot clef disk dans le fichier de configuration.
# grep "disk *= " web.cfg
disk = [ 'phy:/dev/storage/web,xvda1,w' ]
- Donnez la valeur du mot clef vif dans le fichier de configuration.
# grep "vif *= " web.cfg
vif = [
'mac=00:00:00:00:00:01, bridge=bridgeVLAN2', \
'mac=00:00:00:00:00:02, bridge=bridgeVLAN3', \
'mac=00:00:00:00:00:03, bridge=bridgeVLAN4' ]
8.7 Exercice sur la configuration d’un conteneur
Pour cet exercice vous supposerez les points suivants acquis :
Donnez le script shell permettant de réaliser les opérations suivantes :
-
monter le système de fichier du conteneur sur le répertoire
/var/lib/containers/web48 ;
- lancer en tâche de fond la commande de création du conteneur
par unshare avec exécution du script de démarrage, récupérer
le PID de la commande par l’instruction pid=$! ;
- créer une paire d’interfaces Ethernet virtuelles, déplacer une
interface dans le commutateur virtuel br1 et l’autre dans le
conteneur de sorte que le script de démarrage sorte de sa boucle.
# cat C_create.sh
#!/bin/sh
if [ $# != 2 ] ; then
echo "Usage: `basename $0` <container> <bridge>" >&2
exit
fi
dir=$1
br=$2
image=/usr/local/containers/$dir/disk.img
root=/var/lib/containers/$dir
test -f $image || ( echo "Cannot found image" >&2; exit )
mkdir -p $root || ( echo "Cannot create root" >&2; exit )
mount -o loop $image $root
if [ $? -ne 0 ] ; then echo "Bad image" >&2 ; exit ; fi
nohup unshare -p -f -m -n -u chroot $root /etc/rc.local &
pid=$!
ip link add vif type veth peer name eth0@vif1
ip link set vif master $br
if [ $? -ne 0 ] ; then kill $pid ; echo "Bad bridge" >&2 ; exit ; fi
ip link set eth0@vif netns /proc/$pid/ns/net name eth0
8.8 Exercice sur la copie d’un site Web
Pour cet exercice vous devez supposer que vous vous trouvez à travailler
physiquement sur le serveur de virtualisation. Vous voulez transférer les
fichiers d’un site Web qui se trouvent à la racine d’une clef USB dans le
répertoire adéquat de votre conteneur. Vous allez donc connecter la clef
USB sur le serveur de virtualisation. Donnez ensuite les commandes à taper
pour effectuer le transfert sachant que le conteneur est, à ce moment,
arrêté. Pour vous aider, voici le résultat de la commande lsusb
après insertion de la clef USB :
# lsblk -o NAME -i
NAME
sdu
sdb
sde
`-sde1
sr0
# mkdir -p /tmp/mnt1 /tmp/mnt2
# mount /dev/sde1 /tmp/mnt1
# mount -o loop /usr/local/containers/web48/disk.img /tmp/mnt2
# cp -ar /tmp/mnt1/* /tmp/mnt2/var/www/html
# umount /tmp/mnt[12]
9 DS réseau du 7 novembre 2018
Tous documents autorisés. Répondez directement sur l’énoncé.
Vous trouverez la correction sur le site web habituel.
9.1 Exercice sur l’isolation
Le but de cet exercice est d’automatiser la gestion des conteneurs à base de unshare.
Les conteneurs sont créés à partir d’une image, c’est à dire un système de fichiers contenu
dans un fichier. Un conteneur est créé connecté à un ou plusieurs commutateurs virtuels.
-
Lors de l’exécution de quelle commande le script de création d’un conteneur se rendra
compte qu’un commutateur virtuel n’existe pas ? En cas de non-existence d’un commutateur
virtuel quelles opérations de nettoyage le script doit-il entreprendre ? Comment ordonnancer
les opérations de création d’un conteneur pour réduire le nombre des opérations de nettoyage ?
- Quelles sont les informations à conserver de la création d’un conteneur pour pouvoir
en supprimer toute trace lors de son arrêt ? Dans quel objet Unix ces informations peuvent-elles
être stockées ? Donnez un format de sauvegarde permettant de simplifier l’opération d’arrêt
du conteneur.
- En vous basant sur le format présenté dans la question précédente écrivez le script
d’arrêt du conteneur. Il est supposé qu’un nom de conteneur est donné lors de la création d’un
conteneur. Le même nom est donné en paramètre du script d’arrêt.
- Quel utilitaire, évoqué en cours, peut-être utilisé pour lancer un shell dans un
conteneur démarré par le script de création de conteneur ? Ecrivez, pour notre système de conteneurs,
l’équivalent de la commande docker attach. Ce script prend en paramètre le nom du conteneur.
- Ecrivez l’équivalent de la commande docker ps pour notre système de conteneurs.
- Ecrivez le script, exécuté par un conteneur, permettant d’attendre la création des interfaces
réseaux du conteneur. Il est entendu que les noms des interfaces réseaux sont passés en paramètres
du script d’attente.
9.2 Exercice sur la virtualisation
Deux machines virtuelles Xen sont définies sur un serveur de virtualisation : bob et alice.
Les fichiers de configuration des deux machines sont donnés :
# cat alice.cfg
kernel = '/boot/vmlinuz-3.16.0-4-amd64'
extra = 'elevator=noop'
ramdisk = '/boot/initrd.img-3.16.0-4-amd64'
vcpus = '1'
memory = '1024'
root = '/dev/xvda2 ro'
disk = [
'file:/usr/local/xen/domains/alice/disk.img,xvda2,w',
'file:/usr/local/xen/domains/alice/swap.img,xvda1,w'
]
name = 'alice'
vif = [ 'mac=00:61:6c:69:63:65,bridge=wonderland' ]
# cat bob.cfg
kernel = '/boot/vmlinuz-3.16.0-4-amd64'
extra = 'elevator=noop'
ramdisk = '/boot/initrd.img-3.16.0-4-amd64'
vcpus = '2'
memory = '4096'
root = '/dev/xvda2 ro'
disk = [
'phy:/dev/big/bob,xvda2,w'
]
name = 'bob'
vif = [ 'mac=00:62:6f:62:20:20' ]
-
L’administrateur a oublié l’adresse IPv4 et le mot de passe de l’unique utilisateur root
d’alice. Cette adresse est définie de façon statique dans la machine. Indiquez à l’administrateur les
commandes UNIX à utiliser, sur le serveur de virtualisation, pour récupérer l’adresse.
- L’adresse IPv4 récupérée, l’administrateur tente de lancer un ping de la machine bob
vers alice. Le ping ne fonctionne pas. Au vu du fichier de configuration de bob, pouvez-vous
dire pourquoi ?
- L’administrateur s’aperçoit que le système de fichiers de bob est presque plein. Quelles
commandes pouvez-vous lui suggérer pour décongestionner bob ? Pour chaque commande, précisez sur
quelle machine il faut la lancer.
9.3 Exercice sur la configuration IP
Cet exercice consiste à vous faire diagnostiquer une panne réseau étape par étape. Les utilisateurs
de base se contentent de crier "le réseau ne fonctionne pas" dès qu’ils n’arrivent plus à naviguer
sur Internet. En tant qu’ingénieur informaticien, vous êtes forcément plus subtil.
Vous avez commencé par regarder si la machine avait encore une adresse IPv4 valide avec la commande
ip address show et vous constaté que non. Le serveur DHCP semble donc hors-service ou non
accessible. Répondez aux questions suivantes pour cerner le problème.
-
Comment faites-vous pour vérifier que le commutateur sur lequel est connecté votre PC est
bien alimenté électriquement (vous n’avez pas accès aux locaux techniques) ?
- Supposons que vous constatez que le commutateur est allumé, comment tester les commutateurs
fonctionnent réellement, au moins localement ? Considérez, par exemple, que vous êtes dans la salle E304.
- Supposons que vous constatez que les commutateurs fonctionnent parfaitement, comment tester
si vous avez accès au routeur du site ? Là encore, considérez que vous vous trouvez en E304, vous
connaissez bien la configuration IPv4 des machines de cette salle.
- Supposons que vous constatez avoir accès au commutateur, comment allez vous tester que vous
avez accès au serveur DNS du site ? Prenez encore l’exemple des machines de la salle E304.
- Supposons que vous constatez avoir accès au serveur DNS, comment allez vous tester que ce
serveur DNS fonctionne ? Prenez encore l’exemple des machines de la salle E304.
- Si le serveur DNS fonctionne comment pouvez trancher entre une panne du serveur DHCP
ou un accès Internet coupé à la sortie de votre site ?
10 Corrigé du DS du 7 novembre 2018
Tous documents autorisés. Répondez directement sur l’énoncé.
Vous trouverez la correction sur le site web habituel.
10.1 Exercice sur l’isolation
Le but de cet exercice est d’automatiser la gestion des conteneurs à base de unshare.
Les conteneurs sont créés à partir d’une image, c’est à dire un système de fichiers contenu
dans un fichier. Un conteneur est créé connecté à un ou plusieurs commutateurs virtuels.
-
Lors de l’exécution de quelle commande le script de création d’un conteneur se rendra
compte qu’un commutateur virtuel n’existe pas ? En cas de non-existence d’un commutateur
virtuel quelles opérations de nettoyage le script doit-il entreprendre ? Comment ordonnancer
les opérations de création d’un conteneur pour réduire le nombre des opérations de nettoyage ?
En cas de non-existence d’un commutateur virtuel c’est la commande permettant de
déplacer une extrémité de l’interface virtuelle dans le commutateur qui échouera.
# ip link set vif1 master bridge1
Il faut alors supprimer les interfaces virtuelles déjà créées, tuer le unshare,
démonter le système de fichier et effacer les informations déjà sauvegardées. Il est
donc intéressant de commencer par créer les interfaces virtuelles et déplacer leur
première extrémité dans les commutateurs virtuels avant lancer le unshare et
sauver les informations du conteneur.
- Quelles sont les informations à conserver de la création d’un conteneur pour pouvoir
en supprimer toute trace lors de son arrêt ? Dans quel objet Unix ces informations peuvent-elles
être stockées ? Donnez un format de sauvegarde permettant de simplifier l’opération d’arrêt
du conteneur.
Il faut stocker le PID du unshare, les noms des interfaces virtuelles et le
point de montage du système de fichiers. Ces informations peuvent être sauvées
dans un fichier texte sur trois lignes :
1234 # PID
vif1234_1 vif1234_2 # Noms des interfaces
/tmp/conteneur1/ # Point d'ancrage
Mettons que les informations soient sauvées dans le répertoire /var/lib/containers/
dans un fichier de nom le nom du conteneur (passé en paramètre au script de création).
- En vous basant sur le format présenté dans la question précédente écrivez le script
d’arrêt du conteneur. Il est supposé qu’un nom de conteneur est donné lors de la création d’un
conteneur. Le même nom est donné en paramètre du script d’arrêt.
Un script vaut mieux que de longues explications :
#!/bin/sh
infos=/var/lib/containers/$1
if [ $# != 1 ] ; then echo "Name missing !" ; exit 255 ; fi
(
read pid
kill $pid
read vifs
for vif in $vifs ; do ip link del dev $vif ; done
read mnt
umount $mnt
rm $infos
) < $infos
- Quel utilitaire, évoqué en cours, peut-être utilisé pour lancer un shell dans un
conteneur démarré par le script de création de conteneur ? Ecrivez, pour notre système de conteneurs,
l’équivalent de la commande docker attach. Ce script prend en paramètre le nom du conteneur.
Un script vaut mieux que de longues explications :
#!/bin/sh
infos=/var/lib/containers/$1
pid=`head -n 1 $infos`
nsenter -t $pid /bin/bash
- Ecrivez l’équivalent de la commande docker ps pour notre système de conteneurs.
Un script vaut mieux que de longues explications :
#!/bin/sh
dir=/var/lib/containers/
for infos in $dir/* ; do
base=`$infos`
pid=`head -n 1 $infos`
echo "$base -> $pid"
done
- Ecrivez le script, exécuté par un conteneur, permettant d’attendre la création des interfaces
réseaux du conteneur. Il est entendu que les noms des interfaces réseaux sont passés en paramètres
du script d’attente.
Script très simple, il convient simplement d’éviter une attente active.
#!/bin/sh
for interface in $* ; do
while ! ip link show dev $interface > /dev/null 2> /dev/null ; do
sleep 1
done
echo Interface $interface created
done
10.2 Exercice sur la virtualisation
Deux machines virtuelles Xen sont définies sur un serveur de virtualisation : bob et alice.
Les fichiers de configuration des deux machines sont donnés :
# cat alice.cfg
kernel = '/boot/vmlinuz-3.16.0-4-amd64'
extra = 'elevator=noop'
ramdisk = '/boot/initrd.img-3.16.0-4-amd64'
vcpus = '1'
memory = '1024'
root = '/dev/xvda2 ro'
disk = [
'file:/usr/local/xen/domains/alice/disk.img,xvda2,w',
'file:/usr/local/xen/domains/alice/swap.img,xvda1,w'
]
name = 'alice'
vif = [ 'mac=00:61:6c:69:63:65,bridge=wonderland' ]
# cat bob.cfg
kernel = '/boot/vmlinuz-3.16.0-4-amd64'
extra = 'elevator=noop'
ramdisk = '/boot/initrd.img-3.16.0-4-amd64'
vcpus = '2'
memory = '4096'
root = '/dev/xvda2 ro'
disk = [
'phy:/dev/big/bob,xvda2,w'
]
name = 'bob'
vif = [ 'mac=00:62:6f:62:20:20' ]
-
L’administrateur a oublié l’adresse IPv4 et le mot de passe de l’unique utilisateur root
d’alice. Cette adresse est définie de façon statique dans la machine. Indiquez à l’administrateur les
commandes UNIX à utiliser, sur le serveur de virtualisation, pour récupérer l’adresse.
Il suffit de monter le disque virtuel d’alice puis d’afficher le contenu du
fichier /etc/network/interfaces.
# mount -o loop /usr/local/xen/domains/alice/disk.img /mnt
# cat /mnt/etc/network/interfaces
- L’adresse IPv4 récupérée, l’administrateur tente de lancer un ping de la machine bob
vers alice. Le ping ne fonctionne pas. Au vu du fichier de configuration de bob, pouvez-vous
dire pourquoi ?
La machine bob n’est probablement pas dans le même commutateur virtuel qu’alice.
Il suffit de changer le fichier de configuration bob.cfg en ajoutant
,bridge=wonderland derrière l’adresse MAC dans la définition du vif.
- L’administrateur s’aperçoit que le système de fichiers de bob est presque plein. Quelles
commandes pouvez-vous lui suggérer pour décongestionner bob ? Pour chaque commande, précisez sur
quelle machine il faut la lancer.
Il faut étendre la partition virtuelle sur le serveur de virtualisation
puis redimenssionner le système de fichiers sur bob :
server# lvextend -L+10G /dev/big/bob
bob# resize2fs /dev/xvda2
10.3 Exercice sur la configuration IP
Cet exercice consiste à vous faire diagnostiquer une panne réseau étape par étape. Les utilisateurs
de base se contentent de crier "le réseau ne fonctionne pas" dès qu’ils n’arrivent plus à naviguer
sur Internet. En tant qu’ingénieur informaticien, vous êtes forcément plus subtil.
Vous avez commencé par regarder si la machine avait encore une adresse IPv4 valide avec la commande
ip address show et vous constaté que non. Le serveur DHCP semble donc hors-service ou non
accessible. Répondez aux questions suivantes pour cerner le problème.
-
Comment faites-vous pour vérifier que le commutateur sur lequel est connecté votre PC est
bien alimenté électriquement (vous n’avez pas accès aux locaux techniques) ?
Le plus simple est de regarder la prise RJ45 femelle de la carte Ethernet du PC.
Si les LEDs de ce connecteur sont allumées c’est que la carte détecte une porteuse
Ethernet. Le commutateur est alors forcément allumé. Vous pouvez aussi utiliser
un utilitaire comme ethtool pour afficher l’état de la carte Ethernet qui
indique si la dite porteuse est détectée. Vous aurez alors aussi la vitesse négociée
avec le commutateur.
- Supposons que vous constatez que le commutateur est allumé, comment tester les commutateurs
fonctionnent réellement, au moins localement ? Considérez, par exemple, que vous êtes dans la salle E304.
Configurez deux machines de la salle avec des adresses IPv4 dans le même réseau et
tentez un ping de l’une sur l’autre :
machine1# ip address add eth0 192.168.0.1/24 broadcast+
machine2# ip address add eth0 192.168.0.2/24 broadcast+
machine1# ping 192.168.0.2
- Supposons que vous constatez que les commutateurs fonctionnent parfaitement, comment tester
si vous avez accès au routeur du site ? Là encore, considérez que vous vous trouvez en E304, vous
connaissez bien la configuration IPv4 des machines de cette salle.
Donnez à votre machine une adresse IPv4 du réseau local dans lequel elle se trouve
et tentez un ping sur le routeur :
machine1# ip address add eth0 172.26.145.242/24
machine1# ping 172.26.145.254
- Supposons que vous constatez avoir accès au commutateur, comment allez vous tester que vous
avez accès au serveur DNS du site ? Prenez encore l’exemple des machines de la salle E304.
Après avoir configuré votre machine avec une adresse IPv4 du réseau local comme dans
la question précédente, ajoutez une route par défaut vers le routeur et tentez un
ping sur l’adresse du serveur DNS.
machine1# ip route add default via 172.26.145.254
machine1# ping 193.48.57.48
- Supposons que vous constatez avoir accès au serveur DNS, comment allez vous tester que ce
serveur DNS fonctionne ? Prenez encore l’exemple des machines de la salle E304.
Un simple test de résolution de nom suffit :
machine1# host www.polytech-lille.fr
- Si le serveur DNS fonctionne comment pouvez trancher entre une panne du serveur DHCP
ou un accès Internet coupé à la sortie de votre site ?
Si une requête DNS sur un nom non mis en cache au niveau du serveur DNS
fonctionne c’est que la connexion Internet se porte bien. Il faut trouver un
nom de site très peu fréquenté.
Ce document a été traduit de LATEX par HEVEA