TP sysres IMA5sc 2018/2019 G11 : Différence entre versions

De Wiki d'activités IMA
m (Séance 1 : 12/11/2018)
Ligne 91 : Ligne 91 :
 
  ip link set eth0@vif2 netns /proc/27880/ns/net name eth0 // pour vif 1  
 
  ip link set eth0@vif2 netns /proc/27880/ns/net name eth0 // pour vif 1  
 
  ip link set eth0@vif2 netns /proc/27879/ns/net name eth0 // pour vif 2
 
  ip link set eth0@vif2 netns /proc/27879/ns/net name eth0 // pour vif 2
  ip link set eth0@vif2 netns /proc/27881/ns/net name eth0 // pour vif 3
+
  ip link set eth0@vif2 netns /Bcanuproc/27881/ns/net name eth0 // pour vif 3
 
  ip link set eth0@vif2 netns /proc/27882/ns/net name eth0 // pour vif 4
 
  ip link set eth0@vif2 netns /proc/27882/ns/net name eth0 // pour vif 4
 
   
 
   
Ligne 111 : Ligne 111 :
 
Nous pouvons à présent pinger les 3 machines entre elles et depuis la machine physique.
 
Nous pouvons à présent pinger les 3 machines entre elles et depuis la machine physique.
 
Paramétrage du mandataire inverse :  
 
Paramétrage du mandataire inverse :  
On inscrit sur gandi.net 2 sites : websiteun et websitedeux.
+
On inscrit sur gandi.net 2 sitBcanues : websiteun et websitedeux.
  
 
Dans etc/apache2/sites-available/000-default.conf de notre conteneur C1 qui fait office de mandataire inverse:  
 
Dans etc/apache2/sites-available/000-default.conf de notre conteneur C1 qui fait office de mandataire inverse:  
Ligne 128 : Ligne 128 :
 
  ip route add default via 172.26.145.254
 
  ip route add default via 172.26.145.254
  
Il faut démarrer le serveur appache sur les deux conteneurs de base.
+
Il faut démarrer le serveur apBcanupache sur les deux conteneurs de base.
  
  
Ligne 136 : Ligne 136 :
 
  websitedeux.plil.space/ --> accès sur le conteneur C3
 
  websitedeux.plil.space/ --> accès sur le conteneur C3
  
 +
11h25 => Serveurs Web OK (unshare)
 
= Docker=
 
= Docker=
 
==Séance 2 : 19/11/2018==
 
==Séance 2 : 19/11/2018==

Version du 19 novembre 2018 à 11:17

Présentation générale

Lors de ce TP nous allons apprendre à utiliser docker. Dans un premier temps nous réaliserons à la main 3 dockers interconnectés à l'aide d'un commutateur virtuel puis nous utiliserons directement la solution Docker.

Déroulé du TP

Conteneur à la main

Séance 1 : 12/11/2018

Etapes réalisées : création de 3 systèmes de fichiers c1,c2,c3

On peut vérifier l'isolation de nos conteneurs en faisant df -h ou une fois le unshare réalisé en tapant le ps aux

création du commutateur virtuel : monpont.

On peut vérifier sa bonne activation avec la commande  : brctl show

création des interfaces virtuel

Pour chacun des conteneurs on va créer une interface virtuel vifX qui relieront chacune "monpont" à un conteneur. Un des conteneurs sera relié au bridge de la zabeth afin de nous relier au monde extérieur, ce sera lui le mandataire inverse. Pour nous il s'agit de C1. On peut vérifier la bonne liaison entre le conteneur et le commutateur logiciel en tapant ip l dans chacun des conteneurs et en regardant les interfaces reliées à brctl show.

Attention, parfois Docker est source de problèmes pour nos manipulations, pour s'en débarrasser on tape les commandes suivantes :

iptables -F
iptables -F -t nat
iptables -P FORWARD ACCEPT


On va maintenant ajouter une IP à chaque interface virtuel pour être capable réaliser un ping depuis le réseau. Pour cela on se sert de ip address add et de ip route add.

sur chaque conteneur : ip address add dev eth0 192.168.0.x ip l set eth0 up

on vérifie en faisant ip r et on peut pinger nos machines entres elles !


Attention : tout les ip add seront supprimées au prochain reboot. Probablement de même pour les interfaces virtuels.

Séance 2 : 19/11/2018

Objectif de la séance : installer reverse proxy sur un conteneur et 2 serveurs web sur les autres.

Lors du démarrage de la séance pour ressusciter ce que l'on avait fait la dernière fois:

mkdir c1,c2,c3

copie base fichiers

export https_proxy="https://proxy.polytech-lille.fr:3128"
export http_proxy="http://proxy.polytech-lille.fr:3128"
debootstrap --include=apache2,vim stable /tmp/c1 // de même pour c2 et c3

Montage media

mount -o loop /home/pifou/firstconteneur /tmp/c1 // de même pour c2 et c3
mount -o loop /home/pifou/firstconteneur2 /tmp/c2
mount -o loop /home/pifou/firstconteneur3 /tmp/c3

Création machine

unshare -p -f -m -n -u chroot /tmp/c1 /bin/sh -c "mount /proc ; /bin/bash"
unshare -p -f -m -n -u chroot /tmp/c2 /bin/sh -c "mount /proc ; /bin/bash"
unshare -p -f -m -n -u chroot /tmp/c3 /bin/sh -c "mount /proc ; /bin/bash"


Création du commutateurs virtuels et des interfaces virtuels

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 eth0@vif4
ip link set vif1 master monpont
ip link set vif2 master monpont
ip link set vif3 master monpont
ip link set vif4 master monpont

Activation de monpont et des vifs

ip link set dev monpont up
ip link set dev vif1 up
ip link set dev vif2 up
ip link set dev vif3 up
ip link set dev vif4 up

Connection: (numero de PID arbitraire)

ip link set eth0@vif2 netns /proc/27880/ns/net name eth0 // pour vif 1 
ip link set eth0@vif2 netns /proc/27879/ns/net name eth0 // pour vif 2
ip link set eth0@vif2 netns /Bcanuproc/27881/ns/net name eth0 // pour vif 3
ip link set eth0@vif2 netns /proc/27882/ns/net name eth0 // pour vif 4


(numéro de PID arbitraire)
nsenter -t 27879 -n ip address add dev eth0 192.168.0.2/24 //pour C1 
nsenter -t 27880 -n ip address add dev eth0 192.168.0.3/24 //pour C2 
nsenter -t 27881 -n ip address add dev eth0 192.168.0.4/24 //pour C3

pour eth1, on cherche une IP valable dans le réseau du bridge, soit une IP qui ne donne rien quand on la ping puis :

nsenter -t 27879 -n ip address add dev eth1 172.26.145.45/24 // pour que c1 soit le mandataire inverse 
ip link set eth1 up // dans le conteneur c1

Dans chaque conteneur :

ip link set eth0 up
ip link set dev lo up


Nous pouvons à présent pinger les 3 machines entre elles et depuis la machine physique. Paramétrage du mandataire inverse : On inscrit sur gandi.net 2 sitBcanues : websiteun et websitedeux.

Dans etc/apache2/sites-available/000-default.conf de notre conteneur C1 qui fait office de mandataire inverse:

< VirtualHost *:80> 
ServerName websinteun.plil.space
ProxyPass "/web1" "http://192.1680.3/"
ProxyPassReverse "/web1" "http://192.168.0.3/"
ProxyPass "/web2" "http://192.1680.4/"
ProxyPassReverse "/web2" "http://192.168.0.4/"
ProxyRequests Off
</VirtualHost > 
ip route add default via 172.26.145.254

Il faut démarrer le serveur apBcanupache sur les deux conteneurs de base.


Au final nous pouvons accéder à nos deux conteneurs selon l'URL rentrée :

websiteun.plil.space/ --> accès sur le conteneur C2
websitedeux.plil.space/ --> accès sur le conteneur C3

11h25 => Serveurs Web OK (unshare)

Docker

Séance 2 : 19/11/2018