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 :
Les réseaux IPv4 sont définis comme suit :
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
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
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
Deux aspects de la configuration du serveur de virtualisation sont abordés.
# pvcreate /dev/sdu /dev/sdb # vgcreate storage /dev/sdu /dev/sdb # lvcreate -L500G -nweb storage
# 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 ...
Il vous est demandé d’intuiter des extraits du fichier de configuration de la machine virtuelle suffixé .cfg .
# grep "disk *= " web.cfg disk = [ 'phy:/dev/storage/web,xvda1,w' ]
# 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' ]
Pour cet exercice vous supposerez les points suivants acquis :
/usr/local/containers/web48/disk.img
Donnez le script shell permettant de réaliser les opérations suivantes :
# 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
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]