TP sysres IMA5sc 2018/2019 G13
Sommaire
TP Systeme Reseau
Vous trouverez sur cette page Wiki tous les travaux relatifs au cours de Systeme Reseau réalisés par YANG Ji
TP Conteneur Reseau
Etapes de realisation des conteneurs
Obtenir le priorité.
su
Creation d'un fichier (utilisé en tant que partition) de debootstrap --include=vim,nano,apache2 stable /mnt/container1 10240 bloc de 1024k octets (Soit un fichier de 10Go)
dd if=/dev/zero of=disc.img1 bs=1024k count=10240
Creation d'un systeme d'un systeme de fichier linux(ext4) au sein du fichier precedemment créé
mkfs.ext4 disc.img1
Création d'un dossier /mnt/container1
mkdir /mnt/container1
Montage du systeme de fichier dans fs1
mount -t ext4 -o loop /home/pifou/PrA_Ji/disc.img1 /mnt/container1/
La commande df permet d'avoir la liste des partitions montés par le systeme
root@zabeth15:/home/pifou/PrA_Ji# df Filesystem 1K-blocks Used Available Use% Mounted on udev 16455512 0 16455512 0% /dev tmpfs 3293352 772 3292580 1% /run /dev/sda2 212427252 148635992 52930872 74% / tmpfs 5120 4 5116 1% /run/lock tmpfs 13293680 20944 13272736 1% /run/shm tmpfs 16466748 0 16466748 0% /sys/fs/cgroup tmpfs 3293348 12 3293336 1% /run/user/1000 /dev/loop0 10255636 36888 9678076 1% /mnt/container1
Télécharger debootstrap
apt-get install debootstrap
Télecharger les fichier de système du "container", with:
debootstrap --include=vim,nano,apache2 stable /mnt/container1
Je ne peux pas le téléchargé.
J'ai ajouté les proxy:
export http_proxy=http://proxy.polytech-lille.fr:3128 export https_proxy=https://proxy.polytech-lille.fr:3128
J'ai réussit à téléchargé.
Pour que le container peux montrer le proc automatiquement, j'ai ajouté une phrase au fichier "fstab"
echo "proc /proc proc defaults 0 0" >> /mnt/container1/etc/fstab
J'ai copié l'image
umount /mnt/container1/ root@zabeth15:/home/pifou/PrAmkdir /mnt/container2 /mnt/container3
_Ji# cp disc.img1 disc.img2
root@zabeth15:/home/pifou/PrA_Ji# cp disc.img1 disc.img3
J'ai créé les autres deux dossiers de container:
mkdir /mnt/container2 /mnt/container3
Configuration du réseau
J'ai ajouté un bridge
ip link add bridge_projet type bridge
J'ai ajouté 4 ethernet 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
J'ai connecter les interfaces à la bridge que j'ai crée.
root@zabeth15:/home/pifou/PrA_Ji# ip link set vif1 master bridge_projet root@zabeth15:/home/pifou/PrA_Ji# ip link set vif2 master bridge_projet root@zabeth15:/home/pifou/PrA_Ji# ip link set vif3 master bridge_projet root@zabeth15:/home/pifou/PrA_Ji# ip link set vif4 master bridge
Après:
J'ai ouvrir les interfaces:
root@zabeth15:/home/pifou/PrA_Ji# ip link set vif1 up root@zabeth15:/home/pifou/PrA_Ji# ip link set vif2 up root@zabeth15:/home/pifou/PrA_Ji# ip link set vif3 up root@zabeth15:/home/pifou/PrA_Ji# ip link set vif4 up
J'ai donné la bridge une adresse de IP: 192.168.1.1/24:
root@zabeth15:/home/pifou/PrA_Ji# ip a add dev bridge_projet 192.168.1.1/24
Rebooter la bridge:
root@zabeth15:/home/pifou/PrA_Ji# ip link set bridge_projet down; ip link set bridge_projet up
Configuration des 3 container
Entrer le container 1:
root@zabeth15:/home/pifou# mount -t ext4 -o loop /home/pifou/PrA_Ji/disc.img1 /mnt/container1/ root@zabeth15:/home/pifou# unshare -n -u -p -f -m chroot /mnt/container1 /bin/bash -c "mount /proc ; /bin/bash"
root@zabeth15:/home/pifou# mount -t ext4 -o loop /home/pifou/PrA_Ji/disc.img2 /mnt/container2/ root@zabeth15:/home/pifou# unshare -n -u -p -f -m chroot /mnt/container2 /bin/bash -c "mount /proc ; /bin/bash"
root@zabeth15:/home/pifou# mount -t ext4 -o loop /home/pifou/PrA_Ji/disc.img3 /mnt/container3/ root@zabeth15:/home/pifou# unshare -n -u -p -f -m chroot /mnt/container3 /bin/bash -c "mount /proc ; /bin/bash"
Après, je veux ajouté la bridge virtuelle aux containers, mais, premièrement, je dois obtenir les ID du processus:
root@zabeth15:/home/pifou/PrA_Ji# ps auxxx | grep unshare
Après, j'ai ajouté la bridge aux containers:
ip link set eth0@vif1 netns /proc/<PID_unshare_containner1>/ns/net name eth0 ip link set eth0@vif2 netns /proc/<PID_unshare_containner2>/ns/net name eth0 ip link set eth0@vif3 netns /proc/<PID_unshare_containner3>/ns/net name eth0 ip link set eth1@vif4 netns /proc/<PID_unshare_containner3>/ns/net name eth1
Heureusement, j'ai trouvé eth0,eth1 dans les containers.
Après, j'ai ajouté l'adresse de IP aux containers.
ip addr add 192.168.1.2/24 dev eth0 #container 1 ip addr add 192.168.1.3/24 dev eth0 #container 2 ip addr add 192.168.1.4/24 dev eth0 #container 3
Après, j'ai réussit à ping entre la machine physical et les containers.
J'ai essayé ping 172.26.145.4, et il n'y avait rien de réponse, donc, j'ai ajouté l'adresse de IP à eth1 de container 3.
root@zabeth15:/# ip addr add 172.26.145.4/24 dev eth1 # container 3
Après, j'ai ajouté le nom de domaine dans le site gandi.net, L'adresse de IP est 172.26.145.4, le nom est Ji,j'ai aussi ajouté deux autres noms, Ji2 et Ji3 pour les autres 2 containers.
Après, dans le container de proxy(troisième container), j'ai ajouté des configuration de proxy d'apache2(/etc/apache2/sites-available/000-default.conf):
< VirtualHost *:80> ServerName websinteun.plil.space ProxyPass "/web1" "<IP de container 1>" ProxyPassReverse "/web1" "<IP de container 1>/"
ProxyPass "/web2" "<IP de container 2>/" ProxyPassReverse "/web2" "<IP de container 2>/"
ProxyRequests Off </VirtualHost >,
Après, j'ai changé un peu les index.html de les deux apache2, et configuré le DNS à Gandi.
A la fin, je pouvais connecter à apache de container 1 par le site Ji.plil.space/web1, et connecter à apache de container 2 par le site Ji.plil.space/web2.
Docker
Premièrement, j'ai activité le table de IP de docker par commenter opts ="--iptables=false" dans /etc/default/docker,et après j'ai rebooté le docker et activé le iptables-save:
service docker restart iptables-save
Après, j'ai ajouté le proxy pour télécharger des logiciels:
export http_proxy=http://proxy.polytech-lille.fr:3128/ apt-get update apt-get install apache2 vim nano
Après, j'ai ouvert une autre fenêtre à saugarder le docker:
docker commit [IDduConteneur] docker_projet
Après, j'ai ouvert 3 autres fenêtre à lancer 3 dockers:
docker run -i -t --network mehcretnetwork --name c1 docker_projet #container 1 docker run -i -t --network mehcretnetwork --name c2 docker_projet #container 2 docker run -i -t --network mehcretnetwork --name c_proxy -p 80:80 docker_projet #container proxy
Après, j'ai changé le configuration de apache2 de container proxy comme avant:
< VirtualHost *:80> ServerName websinteun.plil.space ProxyPass "/web1" "<IP de container 1>" ProxyPassReverse "/web1" "<IP de container 1>/"
ProxyPass "/web2" "<IP de container 2>/" ProxyPassReverse "/web2" "<IP de container 2>/"
ProxyRequests Off </VirtualHost >
Après, dans chaque container, j'ai monter le module proxy et rebooter apache2:
a2enmod proxy service apache2 restart
Après, j'ai changé l'adresse de IP de DNS dans Gandi, le nouvelle adresse de IP est l'adresse de IP de l'odinateur physical.
A la fin, je pouvais connecter à apache de container 1 par le site Ji.plil.space/web1, et connecter à apache de container 2 par le site Ji.plil.space/web2.
16h30 => Serveurs Web docker OK
TP PRA Global
TP réalisé en binôme avec Matthieu DELOBELLE, page wiki disponible ICI