TP sysres IMA5sc 2018/2019 G9

De Wiki d'activités IMA
Révision datée du 19 novembre 2018 à 11:31 par Tcattela (discussion | contributions) (Page créée avec « =Séance 1= Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer. ==Création d'un container== ===Créatio... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Séance 1

Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.

Création d'un container

Création de l'image disque

dd if=/dev/zero of=disc1.img bs=1024K count=10240

Mise en place du file system

mkfs disc1.img

Création du point de montage et montage de l'image

mkdir /tmp/rootfs1 mount -o loop disc1.img /tmp/rootfs1

Installation du debian dans le point de montage

Afin de pouvoir installer debian, il faut que la machine accède à internet :

export http_proxy=http://proxy.polytech-lille.fr:3128/

debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :

debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1

Simplification de l'accès

echo "proc /proc proc defaults 0 0" >> /tmp/rootfs1/etc/fstab

Clonage des images

L'image est maintenant prête, nous pouvons maintenant la cloner afin d'en avoir 3 identiques. Pour cela on démonte l'image 1 :

umount /tmp/rootfs1

On copie l'image :

cp disc1.img disc2.img cp disc1.img disc3.img

On monte les 3 images :

mount -o loop disc1.img /tmp/rootfs1 mount -o loop disc2.img /tmp/rootfs2 mount -o loop disc3.img /tmp/rootfs3

Lancement des trois containers

unshare nous permet de lancer les trois images précédemment montées :

unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c "mount /proc ; /bin/bash" unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c "mount /proc ; /bin/bash" unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c "mount /proc ; /bin/bash"

Les trois containers sont maintenant lancés, nous pouvons travailler dessus.

Mise en place du réseau

Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.

Création de 4 interfaces virtuelles

ip link add vif1 type veth peer name eth0@vif1 ip link add vif2 type veth peer name eth0@vif2 ip link add vif3 type veth peer name eth0@vif3 ip link add vif4 type veth peer name eth1@vif4

Connexion de chaque interface à une interface eth0 sur les containers

ip link set eth0@vif1 netns /proc/<pid1>/ns/net name eth0 ip link set eth0@vif2 netns /proc/<pid2>/ns/net name eth0 ip link set eth0@vif3 netns /proc/<pid3>/ns/net name eth0

pid1, pid2, pid3 peuvent être déterminés via la commande : ps aux | grep unshare

Connexion à eth1 sur le premier container

ip link set eth1@vif1 netns /proc/<pid1>/ns/net name eth1

Création d'un bridge

ip link add interne type bridge

Ajout de vif4 à bridge

L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge

ip link set vif4 master bridge

Ajout de vif1, vif2, vif3 à interne

ip link set vif1 master interne ip link set vif2 master interne ip link set vif3 master interne

Activation de toutes les interfaces

ip link set vif1 up ip link set vif2 up ip link set vif3 up ip link set bridge up ip link set interne up

Attribution des adresses ip

On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :

nsenter -t <PID1> -n ip address add dev eth0 192.168.4.1/24

nsenter -t <PID2> -n ip address add dev eth0 192.168.4.2/24

nsenter -t <PID3> -n ip address add dev eth0 192.168.4.3/24

On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :

nsenter -t <PID1> -n ip address add dev eth1 172.26.145.234/24

Activation des interfaces sur les containers>

Sur chaque containers, lancer :

ip link set dev eth0 up ip link set dev lo up

Ainsi que sur le container 1 :

ip link set dev eth1 up

Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :

bridge : eth0 eth1 vif4

interne : vif1 vif2 vif3

Séance 2

Lors de cette séance, nous allons configurer apache2 afin de pouvoir accéder à deux sites web différents hébergés sur les containers 2 et 3, et ce depuis des noms de domaine choisis.

Attribution des noms de domaine

Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net