TP sysres IMA5sc 2018/2019 G5 : Différence entre versions
(→TP Conteneur Reseau) |
|||
Ligne 119 : | Ligne 119 : | ||
ip addr add 172.26.145.140/24 dev eth1 | ip addr add 172.26.145.140/24 dev eth1 | ||
ip link set eth1 up | ip link set eth1 up | ||
+ | |||
+ | |||
+ | ==== Mise en place des mandataires inverses ==== | ||
+ | |||
+ | ==TP Conteneur Reseau== | ||
+ | |||
+ | ====Etapes de realisation des conteneurs (a la main)==== | ||
+ | Creation d'un fichier (utilisé en tant que partition) de 10240 bloc de 1024k octets (Soit un fichier de 10Go) | ||
+ | dd if=/dev/zero of=disc.img bs=1024k count=10240 | ||
+ | |||
+ | Creation d'un systeme d'un systeme de fichier linux au sein du fichier precedemment créé | ||
+ | mkfs disc.img | ||
+ | |||
+ | Creation des dossiers temporaires dans lequel le systeme sera monté | ||
+ | mkdir /tmp/fs1 | ||
+ | mkdir /tmp/fs2 | ||
+ | mkdir /tmp/fs3 | ||
+ | |||
+ | Montage du systeme de fichier dans fs1 | ||
+ | mount -o loop disc.img /tmp/fs1 | ||
+ | |||
+ | La commande df -Ath permet d'avoir la liste des partitions montés par le systeme | ||
+ | |||
+ | [[Fichier:Df_ath.png]] | ||
+ | |||
+ | On voit bien que le /tmp/fs0 propose un emplacement memoire de 10Go | ||
+ | |||
+ | Bootstrap d'un systeme Debian au sein de la partition montée | ||
+ | debootstrap --include=apache2,vim,nano stable /tmp/fs1 | ||
+ | |||
+ | Preparation du montage du systeme | ||
+ | echo "proc /proc proc defaults 0 0" >> rootfs/etc/fstab | ||
+ | |||
+ | Unmount de la partition | ||
+ | umount /tmp/fs1 | ||
+ | |||
+ | (On remarque bien que la partition n'est plus montée via df -h) | ||
+ | |||
+ | Duplication de l'image deux fois, puis montage des trois systemes de fichier | ||
+ | cp disc.img disc2.img | ||
+ | cp disc.img disc3.img | ||
+ | |||
+ | mount -o loop disc.img /tmp/fs1 | ||
+ | mount -o loop disc2.img /tmp/fs2 | ||
+ | mount -o loop disc3.img /tmp/fs3 | ||
+ | |||
+ | On verifie le resultat avec un autre df -h | ||
+ | |||
+ | [[Fichier:Dfh2.png]] | ||
+ | |||
+ | Demarrage des conteneurs en chargeant les systemes de fichier. | ||
+ | unshare -n -u -p -f -m chroot /tmp/fs1 /bin/sh -c "mount /proc ; /bin/bash"; | ||
+ | # La commande unshare permet de couper la liaison d'un processus avec les differentes tables de nom | ||
+ | # -n : table de nom reseau | ||
+ | # -u : table des hostnames | ||
+ | |||
+ | Si la creation du conteneur fonctionne bien : on ne peut pas revenir dans le dossier parent en faisant la commande 'cd ..', et de plus la commande ps ne retourne le resultat suivant : | ||
+ | |||
+ | [[Fichier:Ps.png]] | ||
+ | |||
+ | On voit bien qu'il n'y a pas d'autre processus lancé, on se trouve donc bien dans le conteneur | ||
+ | |||
+ | En lancant donc les trois conteneurs, chacun est alors independant de l'autre, et l'on peut lancer la commande suivante pour voir "l'existence" des trois conteneurs | ||
+ | ps aux | grep unshare | ||
+ | |||
+ | [[Fichier:Psaux.png]] | ||
+ | |||
+ | ==== Mise en réseau des conteneurs ==== | ||
+ | Creation du bridge (commutateur virtuel) sur la machine hote | ||
+ | ip link add bridge2 type bridge | ||
+ | |||
+ | Sur la machine hote, on crée également les différentes interfaces réseaux (une par conteneur + une pour le mandataire) | ||
+ | ip link add vif1 type veth peer name eth0@vif1 #conteneur 1 | ||
+ | ip link add vif2 type veth peer name eth0@vif2 #conteneur 2 | ||
+ | ip link add vif3 type veth peer name eth0@vif3 #conteneur 3 | ||
+ | ip link add vif4 type veth peer name eth1@vif4 #mandataire | ||
+ | |||
+ | Ajout puis activation des differentes interfaces reseaux dans leur bridge respectif. | ||
+ | ip link set vif1 master bridge2 | ||
+ | ip link set vif2 master bridge2 | ||
+ | ip link set vif3 master bridge2 | ||
+ | ip link set vif4 master bridge | ||
+ | |||
+ | ip link set vif1 up | ||
+ | ip link set vif2 up | ||
+ | ip link set vif3 up | ||
+ | ip link set vif4 up | ||
+ | |||
+ | On recupere les PID des differents conteneurs | ||
+ | ps aux | grep unshare | ||
+ | [[Fichier:Grepunshare.png]] | ||
+ | |||
+ | |||
+ | Il est necessaire "d'envoyer" les differentes interfaces reseaux a leur conteneur respectif | ||
+ | ip link set eth0@vif1 netns /proc/[PID CONTENEUR 1]/ns/net name eth0 #conteneur 1 | ||
+ | ip link set eth0@vif2 netns /proc/[PID CONTENEUR 2]/ns/net name eth0 #conteneur 2 | ||
+ | ip link set eth0@vif3 netns /proc/[PID CONTENEUR 3]/ns/net name eth0 #conteneur 3 | ||
+ | |||
+ | On ajoute ensuite les adresses IP a chaque conteneur | ||
+ | |||
+ | Dans le conteneur 1 | ||
+ | ip addr add 192.168.1.11/24 dev eth0 | ||
+ | ip link set eth0 up | ||
+ | ip link set lo up | ||
+ | |||
+ | Dans le conteneur 2 | ||
+ | ip addr add 192.168.1.12/24 dev eth0 | ||
+ | ip link set eth0 up | ||
+ | ip link set lo up | ||
+ | |||
+ | Dans le conteneur 3 | ||
+ | ip addr add 192.168.1.13/24 dev eth0 | ||
+ | ip link set eth0 up | ||
+ | ip link set lo up | ||
+ | |||
+ | On peut donc alors parfaitement pinger les conteneurs entre eux ainsi qu'avec la machine hote | ||
+ | |||
+ | On ajoute egalement l'interface eth1 au conteneur 3 qui servira de mandataire | ||
+ | |||
+ | ip link set eth1@vif4 netns /proc/[PID CONTENEUR 3]/ns/net name eth1 | ||
+ | ip addr add 172.26.145.140/24 dev eth1 | ||
+ | ip link set eth1 up | ||
+ | |||
+ | |||
+ | ==== Mise en place des mandataires inverses ==== | ||
+ | |||
+ | Configuration du fichier sites-enables/000-default.conf du mandataire inverse (conteneur 3) | ||
+ | |||
+ | <VirtualHost -:80> | ||
+ | ServerName azeroth.plil.space | ||
+ | ServerAdmin webmaster@mdelobel.plil.space | ||
+ | ProxyPass / http://192.168.1.11 | ||
+ | ProxyPassRever / http://192.168.1.11 | ||
+ | ProxyRequests Off | ||
+ | |||
+ | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
+ | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
+ | </VirtualHost> | ||
+ | |||
+ | |||
+ | <VirtualHost -:80> | ||
+ | ServerName argus.plil.space | ||
+ | ServerAdmin webmaster@mdelobel.plil.space | ||
+ | ProxyPass / http://192.168.1.12 | ||
+ | ProxyPassRever / http://192.168.1.12 | ||
+ | ProxyRequests Off | ||
+ | |||
+ | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
+ | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
+ | </VirtualHost> |
Version du 19 novembre 2018 à 10:41
TP Systeme Reseau
Vous trouverez sur cette page Wiki tous les travaux relatifs au cours de Systeme Reseau réalisés par Delobelle Matthieu
TP Conteneur Reseau
Etapes de realisation des conteneurs (a la main)
Creation d'un fichier (utilisé en tant que partition) de 10240 bloc de 1024k octets (Soit un fichier de 10Go)
dd if=/dev/zero of=disc.img bs=1024k count=10240
Creation d'un systeme d'un systeme de fichier linux au sein du fichier precedemment créé
mkfs disc.img
Creation des dossiers temporaires dans lequel le systeme sera monté
mkdir /tmp/fs1 mkdir /tmp/fs2 mkdir /tmp/fs3
Montage du systeme de fichier dans fs1
mount -o loop disc.img /tmp/fs1
La commande df -Ath permet d'avoir la liste des partitions montés par le systeme
On voit bien que le /tmp/fs0 propose un emplacement memoire de 10Go
Bootstrap d'un systeme Debian au sein de la partition montée
debootstrap --include=apache2,vim,nano stable /tmp/fs1
Preparation du montage du systeme
echo "proc /proc proc defaults 0 0" >> rootfs/etc/fstab
Unmount de la partition
umount /tmp/fs1
(On remarque bien que la partition n'est plus montée via df -h)
Duplication de l'image deux fois, puis montage des trois systemes de fichier
cp disc.img disc2.img cp disc.img disc3.img
mount -o loop disc.img /tmp/fs1 mount -o loop disc2.img /tmp/fs2 mount -o loop disc3.img /tmp/fs3
On verifie le resultat avec un autre df -h
Demarrage des conteneurs en chargeant les systemes de fichier.
unshare -n -u -p -f -m chroot /tmp/fs1 /bin/sh -c "mount /proc ; /bin/bash"; # La commande unshare permet de couper la liaison d'un processus avec les differentes tables de nom # -n : table de nom reseau # -u : table des hostnames
Si la creation du conteneur fonctionne bien : on ne peut pas revenir dans le dossier parent en faisant la commande 'cd ..', et de plus la commande ps ne retourne le resultat suivant :
On voit bien qu'il n'y a pas d'autre processus lancé, on se trouve donc bien dans le conteneur
En lancant donc les trois conteneurs, chacun est alors independant de l'autre, et l'on peut lancer la commande suivante pour voir "l'existence" des trois conteneurs
ps aux | grep unshare
Mise en réseau des conteneurs
Creation du bridge (commutateur virtuel) sur la machine hote
ip link add bridge2 type bridge
Sur la machine hote, on crée également les différentes interfaces réseaux (une par conteneur + une pour le mandataire)
ip link add vif1 type veth peer name eth0@vif1 #conteneur 1 ip link add vif2 type veth peer name eth0@vif2 #conteneur 2 ip link add vif3 type veth peer name eth0@vif3 #conteneur 3 ip link add vif4 type veth peer name eth1@vif4 #mandataire
Ajout puis activation des differentes interfaces reseaux dans leur bridge respectif.
ip link set vif1 master bridge2 ip link set vif2 master bridge2 ip link set vif3 master bridge2 ip link set vif4 master bridge
ip link set vif1 up ip link set vif2 up ip link set vif3 up ip link set vif4 up
On recupere les PID des differents conteneurs
ps aux | grep unshare
Il est necessaire "d'envoyer" les differentes interfaces reseaux a leur conteneur respectif
ip link set eth0@vif1 netns /proc/[PID CONTENEUR 1]/ns/net name eth0 #conteneur 1 ip link set eth0@vif2 netns /proc/[PID CONTENEUR 2]/ns/net name eth0 #conteneur 2 ip link set eth0@vif3 netns /proc/[PID CONTENEUR 3]/ns/net name eth0 #conteneur 3
On ajoute ensuite les adresses IP a chaque conteneur
Dans le conteneur 1
ip addr add 192.168.1.11/24 dev eth0 ip link set eth0 up ip link set lo up
Dans le conteneur 2
ip addr add 192.168.1.12/24 dev eth0 ip link set eth0 up ip link set lo up
Dans le conteneur 3
ip addr add 192.168.1.13/24 dev eth0 ip link set eth0 up ip link set lo up
On peut donc alors parfaitement pinger les conteneurs entre eux ainsi qu'avec la machine hote
On ajoute egalement l'interface eth1 au conteneur 3 qui servira de mandataire
ip link set eth1@vif4 netns /proc/[PID CONTENEUR 3]/ns/net name eth1 ip addr add 172.26.145.140/24 dev eth1 ip link set eth1 up
Mise en place des mandataires inverses
TP Conteneur Reseau
Etapes de realisation des conteneurs (a la main)
Creation d'un fichier (utilisé en tant que partition) de 10240 bloc de 1024k octets (Soit un fichier de 10Go)
dd if=/dev/zero of=disc.img bs=1024k count=10240
Creation d'un systeme d'un systeme de fichier linux au sein du fichier precedemment créé
mkfs disc.img
Creation des dossiers temporaires dans lequel le systeme sera monté
mkdir /tmp/fs1 mkdir /tmp/fs2 mkdir /tmp/fs3
Montage du systeme de fichier dans fs1
mount -o loop disc.img /tmp/fs1
La commande df -Ath permet d'avoir la liste des partitions montés par le systeme
On voit bien que le /tmp/fs0 propose un emplacement memoire de 10Go
Bootstrap d'un systeme Debian au sein de la partition montée
debootstrap --include=apache2,vim,nano stable /tmp/fs1
Preparation du montage du systeme
echo "proc /proc proc defaults 0 0" >> rootfs/etc/fstab
Unmount de la partition
umount /tmp/fs1
(On remarque bien que la partition n'est plus montée via df -h)
Duplication de l'image deux fois, puis montage des trois systemes de fichier
cp disc.img disc2.img cp disc.img disc3.img
mount -o loop disc.img /tmp/fs1 mount -o loop disc2.img /tmp/fs2 mount -o loop disc3.img /tmp/fs3
On verifie le resultat avec un autre df -h
Demarrage des conteneurs en chargeant les systemes de fichier.
unshare -n -u -p -f -m chroot /tmp/fs1 /bin/sh -c "mount /proc ; /bin/bash"; # La commande unshare permet de couper la liaison d'un processus avec les differentes tables de nom # -n : table de nom reseau # -u : table des hostnames
Si la creation du conteneur fonctionne bien : on ne peut pas revenir dans le dossier parent en faisant la commande 'cd ..', et de plus la commande ps ne retourne le resultat suivant :
On voit bien qu'il n'y a pas d'autre processus lancé, on se trouve donc bien dans le conteneur
En lancant donc les trois conteneurs, chacun est alors independant de l'autre, et l'on peut lancer la commande suivante pour voir "l'existence" des trois conteneurs
ps aux | grep unshare
Mise en réseau des conteneurs
Creation du bridge (commutateur virtuel) sur la machine hote
ip link add bridge2 type bridge
Sur la machine hote, on crée également les différentes interfaces réseaux (une par conteneur + une pour le mandataire)
ip link add vif1 type veth peer name eth0@vif1 #conteneur 1 ip link add vif2 type veth peer name eth0@vif2 #conteneur 2 ip link add vif3 type veth peer name eth0@vif3 #conteneur 3 ip link add vif4 type veth peer name eth1@vif4 #mandataire
Ajout puis activation des differentes interfaces reseaux dans leur bridge respectif.
ip link set vif1 master bridge2 ip link set vif2 master bridge2 ip link set vif3 master bridge2 ip link set vif4 master bridge
ip link set vif1 up ip link set vif2 up ip link set vif3 up ip link set vif4 up
On recupere les PID des differents conteneurs
ps aux | grep unshare
Il est necessaire "d'envoyer" les differentes interfaces reseaux a leur conteneur respectif
ip link set eth0@vif1 netns /proc/[PID CONTENEUR 1]/ns/net name eth0 #conteneur 1 ip link set eth0@vif2 netns /proc/[PID CONTENEUR 2]/ns/net name eth0 #conteneur 2 ip link set eth0@vif3 netns /proc/[PID CONTENEUR 3]/ns/net name eth0 #conteneur 3
On ajoute ensuite les adresses IP a chaque conteneur
Dans le conteneur 1
ip addr add 192.168.1.11/24 dev eth0 ip link set eth0 up ip link set lo up
Dans le conteneur 2
ip addr add 192.168.1.12/24 dev eth0 ip link set eth0 up ip link set lo up
Dans le conteneur 3
ip addr add 192.168.1.13/24 dev eth0 ip link set eth0 up ip link set lo up
On peut donc alors parfaitement pinger les conteneurs entre eux ainsi qu'avec la machine hote
On ajoute egalement l'interface eth1 au conteneur 3 qui servira de mandataire
ip link set eth1@vif4 netns /proc/[PID CONTENEUR 3]/ns/net name eth1 ip addr add 172.26.145.140/24 dev eth1 ip link set eth1 up
Mise en place des mandataires inverses
Configuration du fichier sites-enables/000-default.conf du mandataire inverse (conteneur 3)
<VirtualHost -:80> ServerName azeroth.plil.space ServerAdmin webmaster@mdelobel.plil.space ProxyPass / http://192.168.1.11 ProxyPassRever / http://192.168.1.11 ProxyRequests Off
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
<VirtualHost -:80> ServerName argus.plil.space ServerAdmin webmaster@mdelobel.plil.space ProxyPass / http://192.168.1.12 ProxyPassRever / http://192.168.1.12 ProxyRequests Off
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>