<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feed.geekfault.org/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Geekfault</title>
	
	<link>http://geekfault.org</link>
	<description>If it doesn't segfault, you're doing it wrong.</description>
	<lastBuildDate>Sun, 16 Oct 2011 00:54:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feed.geekfault.org/Geekfault" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="geekfault" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Lancer votre dual-booting Windows dans une VirtualBox</title>
		<link>http://geekfault.org/2011/10/14/lancer-votre-dual-booting-windows-dans-une-virtualbox/</link>
		<comments>http://geekfault.org/2011/10/14/lancer-votre-dual-booting-windows-dans-une-virtualbox/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 17:48:32 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[raw]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualisation]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=6053</guid>
		<description><![CDATA[Mes études me forcent à utiliser des logiciels disponibles uniquement sous Microsoft Windows. Sur ma nouvelle machine j&#8217;ai donc décidé de laisser le Windows en dual-boot. Mais je souhaite aussi pouvoir le lancer virtualisé dans mon environnement Linux ! Avec un peu d&#8217;astuce c&#8217;est tout à fait possible, grâce au mode d&#8217;accès disque &#8220;raw&#8221;. Voici [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/' rel='bookmark' title='Faille critique dans tous les noyaux Linux'>Faille critique dans tous les noyaux Linux</a></li>
<li><a href='http://geekfault.org/2009/03/27/keymap-linux-sous-windows/' rel='bookmark' title='Keymap Linux sous Windows'>Keymap Linux sous Windows</a></li>
<li><a href='http://geekfault.org/2010/03/09/openvz-virtualisation-legere-performante-et-amusante/' rel='bookmark' title='OpenVZ : virtualisation légère, performante et amusante'>OpenVZ : virtualisation légère, performante et amusante</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2011/10/Windows-in-VirtualBox.png" title="Windows-in-VirtualBox" rel="lightbox.6053"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2011/10/Windows-in-VirtualBox-300x168.png" alt="" title="Windows-in-VirtualBox" width="300" height="168" class="alignleft size-medium wp-image-6057" /></a>Mes études me forcent à utiliser des logiciels disponibles uniquement sous Microsoft Windows. Sur ma nouvelle machine j&#8217;ai donc décidé de laisser le Windows en dual-boot. Mais je souhaite aussi pouvoir le lancer <strong>virtualisé</strong> dans mon environnement Linux !</p>
<p>Avec un peu d&#8217;astuce c&#8217;est tout à fait possible, grâce au mode d&#8217;accès disque &#8220;raw&#8221;. Voici comment j&#8217;ai réussi à lancer mon Windows physique à l&#8217;intérieur d&#8217;une VirtualBox.<br />
<!--more--></p>
<h3>Préparation</h3>
<p>Je présuppose que vous avez déjà une installation dual-boot fonctionnelle. Dans votre environnement Linux, installez VirtualBox ainsi que l&#8217;utilitaire mbr :<br />
<code># apt-get install virtualbox mbr</code><br />
Si vous souhaitez lancer cette machine virtuelle en tant qu&#8217;utilisateur, nous devons ajouter l&#8217;user aux groupes nécessaires :<br />
<code># gpasswd -a tito vboxusers<br />
# gpasswd -a tito disk</code><br />
Finalement, essayez de retrouver votre CD d&#8217;installation de Windows.</p>
<h3>Création du disque virtuel</h3>
<p>Pour permettre à VirtualBox de lancer Windows, nous devons créer un disque virtuel bootable. Pour cela on crée un Master Boot Record. Il faut d&#8217;abord identifier où se trouve votre Windows. Le mien, comme beaucoup d&#8217;installations constructeur de nos jours, tient en deux partitions : la boot sur /dev/sda1 et le système sur /dev/sda2. Je suppose que vous saurez aisément situer le vôtre.<br />
<code>$ mkdir Virtual7 &#038;&#038; cd Virtual7<br />
$ install-mbr -e12 --force ./vm.mbr</code><br />
Remarquez l&#8217;option -e12 qui signifie &#8220;partitions 1 et 2&#8243;, modifiez selon votre système!</p>
<p>Nous créons maintenant le disque virtuel :<br />
<code>$ VBoxManage internalcommands createrawvmdk -filename ./win7.vmdk -rawdisk /dev/sda -partitions 1,2 -mbr ./vm.mbr -relative</code><br />
À nouveau, modifiez les arguments rawdisk et partitions selon votre système.</p>
<h3>Création de la VirtualBox</h3>
<p>Vous pouvez maintenant lancer l&#8217;interface graphique de VirtualBox et créer une nouvelle machine virtuelle. Lorsque l&#8217;assistant demande le disque dur virtuel, allez chercher le fichier Virtual7/win7.vmdk.<br />
<a href="http://geekfault.org/wp-content/uploads/2011/10/Capture-Créer-une-nouvelle-machine-virtuelle.png"><img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   src="http://geekfault.org/wp-content/uploads/2011/10/Capture-Créer-une-nouvelle-machine-virtuelle-580x365.png" alt="" title="Créer une nouvelle machine virtuelle" width="580" height="365" class="aligncenter size-large wp-image-6054" /></a></p>
<h3>Réparer Windows</h3>
<p>Si vous essayez de lancer la machine virtuelle maintenant, Windows vous gratifiera d&#8217;une jolie erreur vous demandant de démarrer sur le CD d&#8217;installation pour réparation. <strong>C&#8217;est tout à fait normal!</strong></p>
<p>Après avoir monté votre CD d&#8217;installation Windows dans VirtualBox, bootez à partir de celui-ci. Choisissez vos options linguistiques et cliquez sur &#8220;Réparer l&#8217;installation&#8221;. La machine virtuelle va redémarrer sous votre Windows!</p>
<h3>Problèmes divers</h3>
<ul>
<li>Dans certains cas, la configuration par défaut de VirtualBox ne permet pas de démarrer Windows 7, ni même son CD de réparation! (Erreur 0xc0000225) Pour régler le problème, dans la configuration de la machine virtuelle cochez &#8220;<strong>Activer les IO-APIC</strong>&#8221; sous l&#8217;onglet Système.</li>
<li>Étrangement, la réparation du démarrage de Windows a modifié le comportement vis-à-vis de GRUB. J&#8217;ai donc modifié mon /boot/grub/grub.conf pour que Windows démarre depuis (hd0,1) plutôt que (hd0,0).</li>
<li>Même s&#8217;il sont bien pratique en milieu virtualisé, les additions client (guest addons) de VirtualBox font planter Windows lorsqu&#8217;il est lancé physiquement. Ne les installez donc pas.</li>
</ul>
<h3>En savoir plus</h3>
<ul>
<li><a href="http://www.rajatarya.com/website/taming-windows-virtualbox-vm">Taming Windows 7 in a VM</a></li>
<li><a href="http://www.virtualbox.org/manual/ch09.html#rawdisk">VirtualBox raw host hard disk from a guest</a></li>
<li><a href="http://bbesnard.over-blog.com/article-virtualisation-erreur-0xc0000225-virtual-box-win2008-server-r2-59594322.html">Erreur 0xc0000225</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/' rel='bookmark' title='Faille critique dans tous les noyaux Linux'>Faille critique dans tous les noyaux Linux</a></li>
<li><a href='http://geekfault.org/2009/03/27/keymap-linux-sous-windows/' rel='bookmark' title='Keymap Linux sous Windows'>Keymap Linux sous Windows</a></li>
<li><a href='http://geekfault.org/2010/03/09/openvz-virtualisation-legere-performante-et-amusante/' rel='bookmark' title='OpenVZ : virtualisation légère, performante et amusante'>OpenVZ : virtualisation légère, performante et amusante</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/CFjZbM_AjJE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2011/10/14/lancer-votre-dual-booting-windows-dans-une-virtualbox/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Prolongez la vie de vos batteries au lithium</title>
		<link>http://geekfault.org/2011/08/02/prolongez-la-vie-batteries-au-lithium/</link>
		<comments>http://geekfault.org/2011/08/02/prolongez-la-vie-batteries-au-lithium/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 14:04:40 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Geeklife]]></category>
		<category><![CDATA[Matériel]]></category>
		<category><![CDATA[accumulateur]]></category>
		<category><![CDATA[batterie]]></category>
		<category><![CDATA[entretien]]></category>
		<category><![CDATA[lithium]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=6019</guid>
		<description><![CDATA[À chaque fois qu&#8217;un ami achète un nouvel ordinateur il me demande comment faire pour que sa batterie au lithium ait une vie longue et prospère. Quand et comment les recharger pour qu&#8217;elles durent plus longtemps? Faut-il attendre qu&#8217;elles soient vides? Faut-il les enlever lorsqu&#8217;on n&#8217;a qu&#8217;une utilisation sédentaire? Voici donc un petit survol technique [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/' rel='bookmark' title='Linux &#8211; Laptop &#8211; Ultimate Powersaving !'>Linux &#8211; Laptop &#8211; Ultimate Powersaving !</a></li>
<li><a href='http://geekfault.org/2009/06/30/geek-en-avion/' rel='bookmark' title='Un geek en vacances'>Un geek en vacances</a></li>
<li><a href='http://geekfault.org/2009/05/07/mosquito/' rel='bookmark' title='Mosquito, l&#8217;hélicoptère d&#8217;intérieur trois voies'>Mosquito, l&#8217;hélicoptère d&#8217;intérieur trois voies</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2011/08/battery.jpg" title="battery" rel="lightbox.6019"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2011/08/battery-300x225.jpg" alt="" title="battery" width="300" height="225" class="alignleft size-medium wp-image-6031 noborder" /></a>À chaque fois qu&#8217;un ami achète un nouvel ordinateur il me demande comment faire pour que sa batterie au lithium ait une vie longue et prospère. Quand et comment les recharger pour qu&#8217;elles durent plus longtemps? Faut-il attendre qu&#8217;elles soient vides? Faut-il les enlever lorsqu&#8217;on n&#8217;a qu&#8217;une utilisation sédentaire?</p>
<p>Voici donc un petit survol technique sur la vie et la mort des batteries au lithium qui, je l&#8217;espère, vous permettra de comprendre comment prolonger la durée de vie de vos batteries.<br />
<!--more--></p>
<h3>Principe de fonctionnement</h3>
<p>La base du fonctionnement d&#8217;une batterie au lithium peut être résumée à un échange (revérsible lors de la recharge) d&#8217;<a href="http://fr.wikipedia.org/wiki/Ion">ions</a> de lithium entre les électrodes de la batterie.</p>
<p>Vous avez sans doute déjà entendu plusieurs termes techniques obscurs tels que lithium-ion (Li-Io), lithium-polymère (Li-Po), lithium-air, etc. Celles-ci désignent des batteries au fonctionnement similaire mais utilisant des matériaux différents comme électrodes ou électrolyte. Cependant ces variations sont plus rares que le lithium-ion et l&#8217;entretien est relativement similaire.</p>
<h3>Capacité d&#8217;une batterie</h3>
<p>La principale caractéristique d&#8217;une batterie est sa capacité (à pleine charge) exprimée en Watt-heures (noté Wh). Une batterie de 1Wh peut fournir une puissance de 1 watt pendant 1 heure. Une batterie typique de laptop ayant une capacité de 50Wh (pouvant donc en théorie fournir 50W pendant 1h), tiendra en fait 5 heures si l&#8217;ordinateur consomme 10W.<a href="http://geekfault.org/wp-content/uploads/2011/08/Capacity.jpg" title="11,1V * 4,4Ah = 49Wh" rel="lightbox.6019"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2011/08/Capacity-300x225.jpg" alt="" title="11,1V * 4,4Ah = 49Wh" width="300" height="225" class="alignright size-medium wp-image-6034" /></a></p>
<p>D&#8217;autres batteries voient leur capacité affichées en ampère-heure (Ah) dans ce cas-là elles précisent aussi leur tension nominale. Puisque A×V = W, multiplier la tension par la capacité en Ah vous donnera la capacité en Wh.</p>
<p>Au fil de la vie d&#8217;une batterie, c&#8217;est cette capacité à pleine charge qui va décroître. Si vous êtes sous Linux, ACPI permet d&#8217;accéder à ces informations vitales sur l&#8217;état de votre batterie :</p>
<div style="clear:both;">
<code>$ cat /proc/acpi/battery/BAT*/info<br />
design capacity:         3800 mAh<br />
last full capacity:      3347 mAh</code></div>
<p>On voit ici que ma batterie de plus de 3 ans est en très bon état pour son âge puisqu&#8217;elle a une capacité apparente de 3347/3800 = 88% !</p>
<h3>Principal avantage du lithium : pas d&#8217;effet mémoire</h3>
<p>L&#8217;effet mémoire, principalement observé sur les batteries utilisant des alliages au nickel, est une perte de capacité observée lorsqu&#8217;on recharge la batterie avant qu&#8217;elle soit vide ou qu&#8217;on ne la recharge pas jusqu&#8217;au bout.</p>
<p>En plus de leur poids et volume plus faible, le principal avantage des batteries au lithium est <strong>l&#8217;absence totale d&#8217;effet mémoire</strong> ! Il est donc <strong>inutile</strong> (et même contreproductif, voir section suivante) <strong>de les déchager complètement avant de les recharger</strong>.</p>
<h3>Mort d&#8217;une cellule</h3>
<p>Une cellule au lithium chargée fournit 3,6 à 3,7 Volts. Cependant elles ne doivent jamais dépasser cette valeur (sous peine d&#8217;explosion) ni tomber sous 2,4V sous peine de mort pure et simple de la cellule. Pour cette raison les batteries au lithium incluent un circuit de contrôle qui les éteint avant d&#8217;atteindre ce seuil critique.</p>
<p>Il n&#8217;est donc pas dangereux de vider une batterie au lithium jusqu&#8217;à extinction de l&#8217;appareil, mais <strong>il est dangereux de les laisser dans cet état déchargé</strong>! En effet, les batteries n&#8217;étant pas parfaites, elles présentent un phénomène d&#8217;auto-décharge qui pourrait les faire passer sous ce seuil critique de 2,4V.</p>
<p>De plus, à l&#8217;intérieur d&#8217;une cellule déchargée, des cristaux peuvent se former sur les électrodes et nuire à la capacité de la batterie. Il ne faut donc <strong>jamais laisser une batterie déchargée</strong>. Rechargez-la dès que possible.</p>
<p>Pour les mêmes raison, si vous pensez ne plus utiliser votre batterie durant plusieurs semaines, <strong>stockez-la chargée à environ 40%</strong>, une valeur limitant l&#8217;auto-décharge.</p>
<h3>Cycles de décharge/recharge</h3>
<p><a href="http://geekfault.org/wp-content/uploads/2011/08/Capacity-over-cycles.jpg" title="Capacity-over-cycles" rel="lightbox.6019"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2011/08/Capacity-over-cycles-300x216.jpg" alt="" title="Capacity-over-cycles" width="300" height="216" class="alignright size-medium wp-image-6030" /></a>Après ce cas extrême, parlons de l&#8217;utilisation normale de la batterie : des cycles de décharge et recharge. Ces cycles entraînent l&#8217;usure normale de la batterie. Selon la qualité des éléments utilisés par votre constructeur, <strong>votre batterie pourra survivre de 300 à 1500 cycles</strong> avant de présenter une perte importante de capacité.</p>
<p>On compte un cycle à chaque fois que vous utilisez entièrement la capacité de votre batterie. Ainsi, décharger à 50% et recharger une batterie compte pour un demi cycle; deux fois cela fera un cycle.</p>
<p>Pour prolonger la durée de votre batterie il faut donc faire le moins de cycles possibles et le conseil sera donc de <strong>brancher votre laptop sur secteur dès que possible</strong>. N&#8217;oubliez pas qu&#8217;il n&#8217;y aucun effet mémoire et donc aucune raison d&#8217;hésiter!</p>
<h3>Utilisation sédentaire d&#8217;un appareil à batterie</h3>
<p>On entend souvent dire que lorsqu&#8217;on est toujours branché sur secteur il vaut mieux retirer la batterie de son laptop. Cette idée reçue est essentiellement fausse car le circuit de contrôle de la batterie évitera toute surcharge.</p>
<p>Débranchée, la batterie risquerait de s&#8217;auto-décharger sous le seuil critique de 2,4V alors que branchée elle se remettra à charger dès qu&#8217;elle tombera sous les 95%. Remarquons qu&#8217;il est toutefois vrai que la chaleur peut altérer une batterie mais dans un ordinateur bien conçu elle ne chauffera pas à ce point.</p>
<h3>Les conseils de Tito</h3>
<ul>
<li><strong>Première utilisation: </strong> Commencez par décharger votre nouvelle batterie et mettez-la à charger dès qu&#8217;elle est vide. Faites deux ou trois cycles complets (décharge jusqu&#8217;à 0%, recharge jusqu&#8217;à 100%) pour étalonner la puce de contrôle et de mesure.</li>
<li><strong>Branchez-vous sur secteur dès que possible.</strong> Cela évitera des cycles d&#8217;utilisation inutiles.</li>
<li><strong>Ne laissez jamais votre batterie déchargée!</strong> Une batterie vide s’abîme rapidement.</li>
<li><strong>Si vous devez stocker votre batterie, chargez-la à environ 40%</strong>, un bon compromis face au risque d&#8217;auto-décharge.</li>
<li><strong>Il est inutile de retirer votre batterie de votre laptop si vous êtes toujours sur secteur.</strong> En plus, ça vous immunisera contre les pannes électriques <img src='http://geekfault.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
</ul>
<h3>Plus d&#8217;informations</h3>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Lithium-ion_battery">WikiPedia : Lithium-ion battery</a></li>
<li><a href="http://www.electronics-lab.com/articles/Li_Ion_reconstruct/index.html">Electronics Lab : How to rebuild a Li-Ion battery pack</a></li>
<li><a href="http://electronics.howstuffworks.com/everyday-tech/lithium-ion-battery1.htm">How Stuff Works : Lithium-ion battery</a></li>
<li><a href="http://batteryuniversity.com/learn/article/how_to_prolong_lithium_based_batteries">What Causes Lithium-ion to Age?</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/' rel='bookmark' title='Linux &#8211; Laptop &#8211; Ultimate Powersaving !'>Linux &#8211; Laptop &#8211; Ultimate Powersaving !</a></li>
<li><a href='http://geekfault.org/2009/06/30/geek-en-avion/' rel='bookmark' title='Un geek en vacances'>Un geek en vacances</a></li>
<li><a href='http://geekfault.org/2009/05/07/mosquito/' rel='bookmark' title='Mosquito, l&#8217;hélicoptère d&#8217;intérieur trois voies'>Mosquito, l&#8217;hélicoptère d&#8217;intérieur trois voies</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/FDK7DY6Zurs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2011/08/02/prolongez-la-vie-batteries-au-lithium/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Yubikey : la petite clé qui assure</title>
		<link>http://geekfault.org/2011/04/14/yubikey-la-petite-cle-qui-assure/</link>
		<comments>http://geekfault.org/2011/04/14/yubikey-la-petite-cle-qui-assure/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 10:30:54 +0000</pubDate>
		<dc:creator>LeCoyote</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[aes]]></category>
		<category><![CDATA[auth]]></category>
		<category><![CDATA[otp]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5735</guid>
		<description><![CDATA[Yubikey, c&#8217;est une petite clé USB un peu spéciale. Une petite pastille tactile sur le dessus permet de générer un mot de passe à usage unique, qu&#8217;un service distant saura utiliser pour vous identifier ou non. C&#8217;est pratique, c&#8217;est sûr (si c&#8217;est bien utilisé), et c&#8217;est assez geek pour qu&#8217;on en parle. Le problème Les [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/06/14/guerre-du-warez/' rel='bookmark' title='La petite guerre du Warez'>La petite guerre du Warez</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2011/03/yubikey.jpg" alt="" title="yubikey" width="250" height="167" class="alignleft size-full wp-image-5747" />Yubikey, c&#8217;est une petite clé USB un peu spéciale. Une petite pastille tactile sur le dessus permet de générer un <strong>mot de passe à usage unique</strong>, qu&#8217;un service distant saura utiliser pour vous identifier ou non. C&#8217;est pratique, c&#8217;est sûr (si c&#8217;est bien utilisé), et c&#8217;est assez geek pour qu&#8217;on en parle.</p>
<p><!--more--><br />
<!--pagetitle:Introduction--></p>
<h3>Le problème</h3>
<p>Les mots de passe se multiplient comme des petits pains, surtout chez les geeks. Comme il est impensable de tous les noter dans un petit calepin ou d&#8217;utiliser le même partout (on est d&#8217;accord ?), il faut sans cesse en inventer de nouveaux et les retenir.</p>
<p>Par ailleurs, si on veut être un peu sérieux, il <strong>faut</strong> se méfier du terminal que l&#8217;on utilise, surtout s&#8217;il appartient à un tiers. Qui vous dit que le vilain admin du cyber-café n&#8217;a pas un vilain keylogger sur toutes ses machines ? Plus fourbe, qui vous dit qu&#8217;il n&#8217;y a pas un vilain keylogger malware installé sur le laptop de votre [maman|grand-père|hamster] que vous utilisez en ce moment, &#8220;pour dépanner&#8221; ? Sans parler d&#8217;attaques type MitM et autres joyeusetés &#8230;</p>
<p>Arrive la Yubikey. Sans être une solution miracle à tous les problèmes de mot de passe, c&#8217;est une façon élégante de se simplifier la vie.</p>
<h3>La Yubikey, en bref</h3>
<div id="attachment_5747" class="wp-caption alignright" style="width: 310px"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2011/03/Yubico-Yubikey-USB-Key-300x157.jpg" alt="" title="Yubico-Yubikey-USB-Key" width="300" height="157" class="alignright size-medium wp-image-5742" /><p class="wp-caption-text">Yubikey 2.0, by Yubico</p></div>
<p>Plutôt que de vous pointer vers le manuel de la Yubikey, je vais en synthétiser quelques passage pour commencer.</p>
<p>La Yubikey fonctionne sur n&#8217;importe quel matériel équipé d&#8217;un port USB hôte et tournant sous à peu près n&#8217;importe quel système d&#8217;exploitation supportant un clavier USB (sous Linux, le support HID suffit) : en effet, elle fonctionne en émulant des frappes clavier, sans avoir recours à un driver particulier.</p>
<p>À chaque utilisation, la clé génère une chaîne de caractères unique (appelée <strong>OTP</strong> pour One Time Password), basée entre autres choses sur une identité propre à la clé, un compteur non-volatile, une horloge et un nombre aléatoire. Cette chaîne est ensuite chiffrée à l&#8217;aide d&#8217;une clé AES de 128 bits et envoyée à l&#8217;hôte. Exemples :</p>
<p>[cc]fifjgjgkhchbirdrfdnlnghhfgrtnnlgedjlftrbdeut<br />
fifjgjgkhchbgefdkbbditfjrlniggevfhenublfnrev<br />
fifjgjgkhchblechfkfhiiuunbtnvgihdfiktncvlhck[/cc]</p>
<p><em>(on constate que les 12 premiers caractères sont toujours les mêmes : il s&#8217;agit là de l&#8217;identité de la Yubikey)</em></p>
<p>De l&#8217;autre côté, elle sera déchiffrée à l&#8217;aide de la même clé AES. De par l&#8217;usage d&#8217;un chiffrement symétrique, la sûreté de l&#8217;ensemble repose sur une bonne protection de la clé AES. Celle-ci est stockée dans une mémoire non volatile intégrée au microcontrolleur et n&#8217;est pas accessible, la configuration de la Yubikey se faisant en <strong>écriture seule</strong>. Pour récupérer la clé, il faudrait éventuellement sonder physiquement la puce ou analyser son comportement, ce qui implique de casser physiquement la Yubikey et de disposer de matériel de pointe. En d&#8217;autres termes, si ce n&#8217;est pas complètement adapté aux agents secrets, c&#8217;est probablement suffisamment sûr pour le geek moyen que je suis.</p>
<p>Le résultat est enfin vérifié par un serveur de validation : soit celui de Yubico, soit un serveur fait maison. La validation tient compte de plusieurs critères, au-delà de la simple identité. Notamment, la valeur du compteur est examinée : si elle est inférieure ou égale à la dernière valeur reçue, l&#8217;OTP est rejeté comme étant un &#8220;rejeu&#8221; d&#8217;un OTP plus ancien.</p>
<p> L&#8217;ensemble se résume au schéma suivant (cliquer pour agrandir) :<br />
<div id="attachment_5921" class="wp-caption aligncenter" style="width: 310px"><a href="http://geekfault.org/wp-content/uploads/2011/03/YUBIKEY-23.png" title="Yubikey_Principe" rel="lightbox.5735"><img src="http://geekfault.org/wp-content/uploads/2011/03/YUBIKEY-23-300x222.png" alt="" title="Yubikey_Principe" width="300" height="222" class="size-medium wp-image-5921" /></a><p class="wp-caption-text">Fonctionnement de base de la Yubikey</p></div></p>
<p>Une application doit donc être configurée (ou modifiée) afin d&#8217;accepter un login Yubikey. Comme nous utilisons du logiciel libre, ça se fait en général assez facilement. Nous allons donc voir comment utiliser la Yubikey sous Linux de façon basique, puis nous verrons la configuration dune clé pour une utilisation &#8220;indépendante&#8221; avec serveur de validation maison.</p>
<p><!--nextpage--><!--pagetitle:Utilisation simple --></p>
<h3>Utilisation simple</h3>
<p>De base, nous utiliserons les services de validation de Yubico. Il s&#8217;agit ici de configurer simplement Linux pour identifier un utilisateur en utilisant sa clé.</p>
<h4>Application n°1 : login Linux</h4>
<p>Tout bon Linux moderne utilise en général <a href="http://www.kernel.org/pub/linux/libs/pam/">Linux-PAM</a> pour tout ce qui touche à l&#8217;identification utilisateur. Et comme Yubico a la bonne idée de proposer un module PAM, c&#8217;est ce que nous allons utiliser.</p>
<p>Il y a trois dépôts à aller chercher pour construire notre module PAM : celui de la bibliothèque <a href="https://github.com/Yubico/yubico-c-client">yubico-c-client</a>, celui de l&#8217;outil de configuration<a href="https://github.com/Yubico/yubikey-personalization/">yubikey-personalization</a>, et enfin <a href="https://github.com/Yubico/yubico-pam">yubico-pam</a> lui-même. Pour la suite, je suppose que vous avez déjà git d&#8217;installé, en sus des outils habituels (automake, gcc &#8230;), et que vous savez aller installer une dépendance manquante (comme curl) au besoin.</p>
<h5>Compilations</h5>
<p>On commence par compiler la bilbiothèque client.<br />
[cc][smokey@moira yubi]$ git clone https://github.com/Yubico/yubico-c-client<br />
Cloning into yubico-c-client&#8230;<br />
remote: Counting objects: 397, done.<br />
remote: Compressing objects: 100% (194/194), done.<br />
remote: Total 397 (delta 233), reused 319 (delta 201)<br />
Receiving objects: 100% (397/397), 94.17 KiB, done.<br />
Resolving deltas: 100% (233/233), done.<br />
[smokey@moira yubi]$ cd yubico-c-client/<br />
[smokey@moira yubico-c-client]$ autoreconf &#8211;install<br />
[smokey@moira yubico-c-client]$ ./configure<br />
[smokey@moira yubico-c-client]$ sudo make install<br />
[smokey@moira yubico-c-client]$<br />
[/cc]<br />
Rien que du très classique. La bibliothèque est installée comme il se doit dans /usr/local/lib. Je vous laisse d&#8217;ailleurs faire exactement la même chose avec yubikey-personalization dans un répertoire à côté, vous êtes grands après tout.</p>
<p>On peut maintenant répéter l&#8217;opération avec yubico-pam, à une astuce près : la dépendance ykpers-1 (yubikey-personalization) a été ajoutée très récemment et se vérifie via pkg-config. Il faut donc indiquer à ce dernier où trouver le fichier .pc qui va bien via la variable d&#8217;environnement PKG_CONFIG_PATH. Ce qui donne :<br />
[ccW][smokey@moira yubico-pam]$ cd ..<br />
[smokey@moira yubi]$ git clone https://github.com/Yubico/yubico-pam<br />
[smokey@moira yubi]$ cd yubico-pam/<br />
[smokey@moira yubico-pam]$ autoreconf &#8211;install<br />
[smokey@moira yubico-pam]$ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig ./configure<br />
[smokey@moira yubico-pam]$ sudo make install<br />
[smokey@moira yubico-pam]$[/ccW]</p>
<p>Le module est installé dans /usr/local/lib/security. Pour que PAM puisse l&#8217;utiliser, il faut le mettre au bon endroit (et donc être root) :<br />
[cc]# mv /usr/local/lib/security/pam_yubico.so /lib/security/[/cc]</p>
<h5>Configuration de PAM</h5>
<p>Il faut maintenant indiquer à PAM que l&#8217;on veut pouvoir utiliser l&#8217;OTP de la Yubikey. Pour ce faire, on modifie <strong>/etc/pam.d/login</strong> pour y faire ajouter la ligne suivante :<br />
[cc]auth            sufficient      pam_yubico.so id=16[/cc]<br />
<strong>Attention :</strong> si vous n&#8217;êtes pas très familiers avec PAM, sachez qu&#8217;il faut ajouter cette ligne au bon endroit. Je vous recommande de la mettre juste au-dessus de celle du module <strong>pam_unix.so</strong>. Si vous la placez trop haut, étant donné que le module est ici <strong>sufficient</strong> (suffisant), il shuntera les modules auth suivants, même s&#8217;ils sont <strong>required</strong> (requis) : pam_securetty ou pam_nologin seraient par exemple rendus inefficaces, ce qui PEUT être grave OU PAS. À vous de voir <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Variantes possibles :</p>
<ul>
<li> avec debug (conseillé en cas de souci)<br />
[cc]auth  sufficient  pam_yubico.so id=16 debug[/cc]</li>
<li> avec gestion centralisée des identités<br />
[cc]auth  sufficient  pam_yubico.so id=16 authfile=<chemin absolu>[/cc]</li>
</ul>
<p><strong>Note :</strong> pour observer les messages de debug, il suffit de créer le fichier <strong>/var/run/pam-debug.log</strong> et de le rendre inscriptible à tous.</p>
<p>Pour finir, il faut renseigner le système sur l&#8217;identité des yubikeys des utilisateurs. Il y a deux façons de le faire :</p>
<ul>
<li> individuellement : il faut alors créer <strong>~/.yubico/authorized_yubikeys</strong> pour chaque utilisateur ;</li>
<li> globalement : le fichier peut se trouver n&#8217;importe où, du moment que le chemin correspond à celui passé à <strong>authfile=</strong> ci-dessus évidemment.</li>
</ul>
<p>Dans les deux cas, le format du fichier est :<br />
[cc]<login>:<yubi ID1>:<yubi ID2>&#8230;[/cc]<br />
Pour le fichier global, ayez soin d&#8217;utiliser une ligne par enregistrement utilisateur. L&#8217;ID de chaque Yubikey peut facilement être récupéré en prenant les 12 premiers caractères de n&#8217;importe quel OTP généré.</p>
<p>Si tout s&#8217;est bien passé, au prochain login, vous devriez voir quelque chose dans ce genre :<br />
<div id="attachment_5857" class="wp-caption aligncenter" style="width: 332px"><img src="http://geekfault.org/wp-content/uploads/2011/03/yubikey-login1.jpg" alt="yubikey login" title="yubikey login" width="322" height="87" class="size-full wp-image-5857" /><p class="wp-caption-text">Login console avec la Yubikey<br />
On effleure la clé, et c'est gagné <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p></div></p>
<h4>Application n°2 : authentification à 2 facteurs avec SSH</h4>
<p>L&#8217;authentification à 2 facteurs est basée, comme son nom l&#8217;indique, sur deux moyens d&#8217;authentification différents. Ici, nous sommes dans le cas typique de &#8220;ce que l&#8217;on connaît&#8221; (un mot de passe classique) combiné avec &#8220;ce que l&#8217;on détient&#8221; (la Yubikey). Les deux seront combinés pour former un mot de passe hybride, que l&#8217;on va charger pam_yupico de valider. En image, ça donne ça :<br />
<div id="attachment_5929" class="wp-caption aligncenter" style="width: 310px"><a href="http://geekfault.org/wp-content/uploads/2011/03/YUBIKEY-2factorbis1.png" title="YUBIKEY-2factorbis" rel="lightbox.5735"><img src="http://geekfault.org/wp-content/uploads/2011/03/YUBIKEY-2factorbis1-300x249.png" alt="Yubikey 2 Factor" title="YUBIKEY-2factorbis" width="300" height="249" class="size-medium wp-image-5929" /></a><p class="wp-caption-text">Fonctionnement de l&#039;authentification à 2 facteurs avec SHS et PAM</p></div></p>
<p>La marche à suivre est sensiblement la même que précédemment, sauf bien entendu pour ce qui est de la configuration de PAM. Ici, on va s&#8217;intéresser logiquement à <strong>/etc/pam.d/sshd</strong>. Tout d&#8217;abord, on y ajoute la ligne suivante :<br />
[cc]auth       required     pam_yubico.so id=16[/cc]<br />
Par rapport à tout-à-l&#8217;heure, l&#8217;utilisation de la Yubikey est ici requise au lieu d&#8217;être suffisante. Du coup, on ne risque plus de shunter d&#8217;autre modules, mais il faut tout de même placer cette ligne AVANT celle de <strong>pam_unix.so</strong>.</p>
<p>Ensuite, il faut modifier les paramètres du module <strong>pam_unix.so</strong>. Celui-ci peut être configuré directement dans <strong>/etc/pam.d/sshd</strong> (ex. Archlinux), ou être appelé par un <strong>@include</strong> pointant sur <strong>/etc/pam.d/system-auth</strong> (ex. Gentoo) ou <strong>/etc/pam.d/common-auth</strong> (ex. Debian) : à vous d&#8217;adapter en fonction de ce que vous avez sous les yeux. L&#8217;important est d&#8217;ajouter l&#8217;option <strong>try_first_pass</strong>, de façon à ce que la ligne ressemble à ceci :<br />
[cc]auth       required     pam_unix.so try_first_pass nullok[/cc]</p>
<p>Une fois ces modifications faites, il ne reste plus qu&#8217;à vous connecter à la machine distante comme d&#8217;habitude ; mais au lieu de taper simplement <strong>Entrée</strong> pour valider le mot de passe, on va rajouter l&#8217;OTP de la Yubikey. En d&#8217;autres termes, au lieu de faire <strong>mot_de_passe+Entrée</strong>, on fait <strong>mot_de_passe+toucher_la_yubikey</strong>.</p>
<p>Et ça marche ! Sauf si bien sûr vous avez oublié de préciser <strong>PasswordAuthentication yes</strong> dans votre <strong>/etc/ssh/sshd_config</strong> &#8230; c&#8217;était pour voir si vous suiviez <img src='http://geekfault.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
<div id="attachment_5870" class="wp-caption aligncenter" style="width: 351px"><img src="http://geekfault.org/wp-content/uploads/2011/03/yubikey_ssh.jpeg" alt="yubikey en ssh" title="yubikey_ssh" width="341" height="70" class="size-full wp-image-5870" /><p class="wp-caption-text">Login SSH. Par défaut, SSH propose d&#039;utiliser la clé publique s&#039;il en trouve une : taper entrée pour passer à l&#039;étape suivante.</p></div></p>
<p><!--nextpage--><!--pagetitle:Utilisation avancée --></p>
<h3>Utilisation avancée</h3>
<p>Dans cette partie, un peu plus technique, nous allons aborder la configuration d&#8217;une Yubikey et le montage d&#8217;un serveur de validation. Mais avant tout &#8230;</p>
<h4>ATTENTION</h4>
<p>La Yubikey est “write-only”. Ceci signifie que lors d&#8217;une opération de configuration, les réglages précédents sont irrémédiablement perdus. Notamment, si vous écrasez la configuration par défaut, votre clé ne pourra plus vous identifier auprès de Yubico.<br />
Par ailleurs, si vous décidez de protéger la clé par un code d&#8217;accès, et que vous oubliez ce code, vous aurez gagné un joli bout de plastique très décoratif &#8230;</p>
<p>Ceci dit, passons aux choses sérieuses.</p>
<h4>Configuration de la clé</h4>
<p>Sous Linux, le seul outil disponible pour l&#8217;instant est en ligne de commande. Si ça vous fait peur, il y a des équivalent pour clicodrome Windows ou Mac OS. <a href="http://www.yubico.com/personalization-tool">Choisissez ici</a> celui qui vous convient le mieux <img src='http://geekfault.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Le dépôt de l&#8217;outil de configuration (ou personalization en anglais) est ici : <a href="https://github.com/Yubico/yubikey-personalization.git">https://github.com/Yubico/yubikey-personalization.git</a>. Je ne reviens pas sur la procédure d&#8217;installation, elle est identique aux précédentes et détaillée <a href="https://github.com/Yubico/yubikey-personalization/wiki/Read-Me">sur le wiki du projet</a>. D&#8217;ailleurs, si vous avez suivi la partie sur la configuration de PAM, vous l&#8217;avez déjà installé <img src='http://geekfault.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Une fois compilé, je vous engage vivement à jeter un oeil à l&#8217;aide en ligne : [cci]ykpersonalize -h [/cci]</p>
<p>L&#8217;option la plus importante à mes yeux est <strong>-1</strong> ou <strong>-2</strong> : c&#8217;est ainsi que l&#8217;on choisit la configuration que l&#8217;on souhaite modifier. En effet, les Yubikeys version 2.0 et plus possèdent deux “emplacements” différents, contre un seul dans la première version. Par défaut sur une clé 2.0 par exemple, l&#8217;emplacement 1 est paramétré pour une identification OTP auprès des serveurs de Yubico, et l&#8217;emplacement 2 est vide.</p>
<p>Le paramétrage le plus fréquemment rencontré est d&#8217;assigner un <strong>mot de passe statique</strong> à la configuraion 2, mot de passe qui sera accessible par un contact long (≃ 2s). La manipulation est ici très simple :<br />
[cc lines="16"]smokey@moira:~$ sudo ykpersonalize -2<br />
Password:<br />
Firmware version 2.0.2 Touch level 1792 Program sequence 6</p>
<p>Passphrase to create AES key: crévindiou<br />
Configuration data to be written to key configuration 2:</p>
<p>fixed: m:<br />
uid: h:000000000000<br />
key: h:459b2b6c6f4c511d543919efbad3051a<br />
acc_code: h:000000000000<br />
ticket_flags: APPEND_CR<br />
config_flags: STATIC_TICKET|STRONG_PW1|STRONG_PW2|MAN_UPDATE<br />
extended_flags: </p>
<p>Commit? (y/n) [n]:[/cc]<br />
Il ne reste plus qu&#8217;à valider par un &#8220;<strong>y</strong>&#8221; pour sauvegarder la configuration.<br />
Notez que vous n&#8217;êtes pas obligés de taper des bêtises (comme mon &#8220;crévindiou&#8221;) pour créer la clé AES. Le résultat sera ici un mot de passe statique du style :<br />
[cci]è(IFejhdkkjnvrtbdeggeffvbknvbulg[/cci].</p>
<p><strong>Note :</strong> Pourquoi sudo ? tout simplement parce que les permissions de /dev/bus/usb/xxx/yyy n&#8217;autorisent en général pas l&#8217;utilisateur lambda à écrire sur un port USB.</p>
<p>Il est également possible de créer une configuration &#8220;<strong>OTP Yubikey</strong>&#8221; similaire à la configuration par défaut. Je fais ici le choix d&#8217;utiliser l&#8217;emplacement 2, afin de conserver la configuration d&#8217;origine dans l&#8217;emplacement 1. Or, l&#8217;outil ykpersonalize considère par défaut que l&#8217;option -2 va de pair avec une configuration statique ; il faut donc désactiver les options liées au mot de passe statique pour écrire une configuration OTP dans l&#8217;emplacement 2 (d&#8217;où les 4 options -o-xxx). Si ce n&#8217;est pas clair, faites tourner “à vide” (sans écrire) ykpersonalize avec -1 et -2, et observez les différents config_flags. Ici, ça nous donne :<br />
[ccW lines="16"]smokey@moira:~/tmp/yubiserve$ sudo ykpersonalize -2 -o-static-ticket -o-strong-pw1 -o-strong-pw2  -o-man-update -ofixed=cccccccccccc<br />
Firmware version 2.0.2 Touch level 1792 Program sequence 6</p>
<p>Passphrase to create AES key:<br />
Configuration data to be written to key configuration 2:</p>
<p>fixed: m:cccccccccccc<br />
uid: h:000000000000<br />
key: h:8ebfe5cd3dad48f2c5008d686ea5b384<br />
acc_code: h:000000000000<br />
ticket_flags: APPEND_CR<br />
config_flags:<br />
extended_flags: </p>
<p>Commit? (y/n) [n]: y<br />
smokey@moira:~/tmp/yubiserve$<br />
[/ccW]</p>
<p>La configuration 2 de la clé est donc faite pour l&#8217;identité <strong>cccccccccccc</strong> et avec la clé AES <strong>8ebfe5cd3dad48f2c5008d686ea5b384</strong>. Nous allons voir maintenant comment utiliser cette configuration avec un serveur de validation maison.</p>
<h4>Serveur de validation “maison”</h4>
<p>Comme me le faisait remarquer un certain <a href="http://blog.spyou.org/">Spyou</a>, confier à un tiers la vérification du droit d&#8217;accès à son infrastructure n&#8217;est probablement pas l&#8217;idée du siècle. Mon infrastructure se limite à peu de choses, mais tant qu&#8217;à faire, autant garder la vérification en interne. Il s&#8217;agit donc maintenant de monter son propre serveur de vérification. Yubico en référence <a href="http://www.yubico.com/validation-server">quelques-uns</a>, je vais ici détailler l&#8217;installation et la configuration du plus simple, <a href="http://code.google.com/p/yubico-yubiserve/">YubiServe</a>. Et quand je dis simple, je pèse mes mots : le tout tient en 2 scripts Python <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Avant tout, je vous recommande d&#8217;éviter la version 3.1, qui (chez moi en tout cas) contient des &#8220;?&#8221; partout là où on attend des tabulations. Je vais donc partir du trunk svn :<br />
[cc]svn checkout http://yubico-yubiserve.googlecode.com/svn/trunk/ yubiserve[/cc]</p>
<p>Ceci fait, suivons les instructions du README.<br />
Tout d&#8217;abord, on crée un certificat SSL :<br />
[ccW]openssl req -new -x509 -keyout yubiserve.pem -out yubiserve.pem -days 365 -nodes[/ccW]</p>
<p>Ensuite, si vous avez installé Python 2 et 3 sur votre système, il vous faudra peut-être modifier un peu les scripts <strong>dbconf.py</strong> et <strong>yubiserve.py</strong> : soit pour faire pointer l&#8217;interpréteur vers python2, soit pour modifier l&#8217;appel au module sqlite en sqlite3. Par défaut, YubiServe utilisera une base sqlite (déjà présente d&#8217;origine), mais il suffit de modifier le fichier de configuration (yubiserve.cfg) pour utiliser une base MySQL à la place.</p>
<p>Il est temps maintenant d&#8217;ajouter une clé au serveur. Utilisons donc <strong>dbconf.py</strong>, qui prend en arguments un “nickname” permettant d&#8217;identifier facilement la clé, ainsi que l&#8217;uid et la clé AES utilisés lors du paramétrage (cf. plus haut).<br />
[ccW]smokey@moira:~/tmp/yubiserve$ ./dbconf.py -ya smokey cccccccccccc 000000000000 8ebfe5cd3dad48f2c5008d686ea5b384<br />
Key &#8216;smokey&#8217; added to database.<br />
smokey@moira:~/tmp/yubiserve$[/ccW]<br />
On en profite pour ajouter aussi l&#8217;identité <strong>cccccccccccc</strong> dans le /home/utilisateur/.yubico/authorized_yubikeys qui va bien.</p>
<p>Lançons le serveur :<br />
[cc]smokey@moira:~/tmp/yubiserve$ ./yubiserve.py<br />
HTTP Server is running.<br />
[/cc]</p>
<p>Il ne reste plus qu&#8217;à essayer le tout, en faisant pointer un navigateur sur <a href="http://127.0.0.1:8000/">http://127.0.0.1:8000/</a>, ce qui donne normalement ceci :<br />
<a href="http://geekfault.org/wp-content/uploads/2011/04/yubikey_valid1.png" title="yubikey_valid1" rel="lightbox.5735"><img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   src="http://geekfault.org/wp-content/uploads/2011/04/yubikey_valid1.png" alt="YubiServe" title="yubikey_valid1" width="520" height="273" class="aligncenter size-medium wp-image-5964" /></a></p>
<p>Il suffit alors d&#8217;envoyer l&#8217;OTP dans le champ prévu à cet effet pour obtenir le résultat :<br />
<a href="http://geekfault.org/wp-content/uploads/2011/04/yubikey_valid2.png" title="yubikey_valid2" rel="lightbox.5735"><img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   src="http://geekfault.org/wp-content/uploads/2011/04/yubikey_valid2.png" alt="" title="yubikey_valid2" width="520" height="273" class="aligncenter size-medium wp-image-5966" /></a></p>
<p>Ça fonctionne ! Mais comment faire en sorte d&#8217;interroger ce serveur ? Nous allons voir le cas du module PAM, configuré dans la partie précédente.</p>
<h4>PAM + Serveur de validation maison</h4>
<p>Rappelez-vous, la configuration ressemblait à ça :<br />
[cc]auth       required     pam_yubico.so id=16[/cc]<br />
Nous allons la transformer en ça :<br />
[ccW]auth       required     pam_yubico.so id=1 debug url=http://127.0.0.1:8000/wsapi/2.0/verify?id=%d&#038;otp=%s[/ccW]</p>
<p>Par ailleurs, vous aurez remarqué que l&#8217;on a précisé un <strong>id</strong> en argument à pam_yubico. Cet id numérique sera passé via l&#8217;URL au serveur de validation : il faut donc qu&#8217;il soit défini côté serveur. Nous allons donc ajouter une clé d&#8217;API :<br />
[cc]smokey@moira:~/tmp/yubiserve$ ./dbconf.py -aa test-ssh<br />
New API Key for &#8216;test2&#8242;: &#8216;WGZydWozbHQyVW9BM092cy9nMTk=&#8217;<br />
Your API Key ID is: 1[/cc]<br />
Bien entendu, notre &#8220;API Key ID&#8221; est 1 seulement si c&#8217;est le premier à être créé ; l&#8217;important est qu&#8217;il existe.</p>
<p>C&#8217;est fini ! On peut maintenant s&#8217;identifier auprès de PAM avec la clé re-configurée par nos soins.</p>
<p><!--nextpage--><!--pagetitle:Conclusion--></p>
<h3>N&#8217;oublions pas &#8230;</h3>
<p>Il serait imprudent de penser que la Yubikey est la réponse à tout. Elle n&#8217;est qu&#8217;un élément de plus dans une stratégie de sûreté qui se doit d&#8217;être solide par ailleurs (c&#8217;est toujours le maillon le plus faible qui compte). Si votre login est connu et que vous n&#8217;utilisez *que* la Yubikey pour vous connecter, c&#8217;est déjà beaucoup moins sûr qu&#8217;un schéma à 2 facteurs.</p>
<p>Par ailleurs, comme la Yubikey fonctionne en émulant une saisie clavier, son comportement dépendra du type de clavier utilisé sur le terminal ; si la plupart des dispositions classiques (azerty/qwerty) ne devraient pas poser problème, il en est tout autrement pour les dispositions plus &#8220;exotiques&#8221; (comme bepo) ou utilisant des caractères non-latins (cyrilliques par exemple). Ce n&#8217;est pas un point bloquant en soi, vu qu&#8217;il suffit de changer temporairement la configuration du clavier, mais je me devais de le souligner, vu qu&#8217;on m&#8217;avait posé la question.</p>
<h3>Conclusion et informations additionnelles</h3>
<p>Tout comme une clé SSH avec un user-agent, une Yubikey permet d&#8217;éviter de taper des mots de passe à chaque login. C&#8217;est un gain de temps et de tranquillité d&#8217;esprit. C&#8217;est aussi une sécurité supplémentaire car les mots de passe générés ne sont pas réutilisables, ce qui invalide toute forme d&#8217;attaque par rejeu. Cerise sur le gâteau, on trouve déjà pas mal de solutions logicielles libres, venant de Yubico ou d&#8217;ailleurs, permettant de tirer le maximum de sa clé. Que demander de plus ? <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Liens</h3>
<ul>
<li>Le site de Yubico, le fabricant : <a href="http://www.yubico.com/">http://www.yubico.com/</a></li>
<li>Le lien direct Yubikey du site : <a href="http://www.yubico.com/yubikey">http://www.yubico.com/yubikey</a></li>
<li>La bibliothèque Yubico-C : <a href="https://github.com/Yubico/yubico-c-client">https://github.com/Yubico/yubico-c-client</a></li>
<li>L&#8217;outil de configuration : <a href="https://github.com/Yubico/yubikey-personalization">https://github.com/Yubico/yubikey-personalization</a></li>
<li>Le module Yubico-PAM : <a href="https://github.com/Yubico/yubico-pam">https://github.com/Yubico/yubico-pam</a></li>
<li>Le HOWTO pour SSH : <a href="https://github.com/Yubico/yubico-pam/wiki/YubikeyAndSSHViaPAM">https://github.com/Yubico/yubico-pam/wiki/YubikeyAndSSHViaPAM</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/06/14/guerre-du-warez/' rel='bookmark' title='La petite guerre du Warez'>La petite guerre du Warez</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/Oj8jFw4qiZU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2011/04/14/yubikey-la-petite-cle-qui-assure/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Devbox KVM+Libvirt perfect setup.</title>
		<link>http://geekfault.org/2011/03/24/devbox-kvmlibvirt-perfect-setup/</link>
		<comments>http://geekfault.org/2011/03/24/devbox-kvmlibvirt-perfect-setup/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 17:55:56 +0000</pubDate>
		<dc:creator>jfp</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[dhcpd]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[libvirt]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5533</guid>
		<description><![CDATA[Dans le cadre de mon boulot chez Euro-Web j&#8217;ai été amené à monter une plate forme un peu particulière pour mon client Zenexity. Leur principale activité est le développement d&#8217;applications web basées sur une technologie maison open source ( framework Play! ). J&#8217;ai donc demandé l&#8217;autorisation de faire une documentation publique sur cette installation, car je [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/03/01/nginx-et-python-le-perfect-setup/' rel='bookmark' title='nginx et python &#8211; le perfect setup'>nginx et python &#8211; le perfect setup</a></li>
<li><a href='http://geekfault.org/2009/10/04/allocation-dipv6-over-openvpn/' rel='bookmark' title='Allocation d&#8217;IPv6 over OpenVPN'>Allocation d&#8217;IPv6 over OpenVPN</a></li>
<li><a href='http://geekfault.org/2010/05/15/pxe-ya-til-un-bootloader-sur-lreseau/' rel='bookmark' title='PXE : Y a-t-il un bootloader sur l&#8217;réseau ?'>PXE : Y a-t-il un bootloader sur l&#8217;réseau ?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2011/02/libvirtlogo.png" title="libvirtlogo" rel="lightbox.5533"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft size-medium wp-image-5542 noborder" title="libvirtlogo" src="http://geekfault.org/wp-content/uploads/2011/02/libvirtlogo-300x240.png" alt="" width="300" height="240" /></a>Dans le cadre de mon boulot chez <a href="http://fr.euroweb.com">Euro-Web</a> j&#8217;ai été amené à monter une plate forme un peu particulière pour mon client <a href="http://www.zenexity.com">Zenexity</a>. Leur principale activité est le développement d&#8217;applications web basées sur une technologie maison open source ( <a href="http://www.playframework.org/">framework Play!</a> ).</p>
<p>J&#8217;ai donc demandé l&#8217;autorisation de faire une documentation publique sur cette installation, car je la trouve intéressante, et je n&#8217;ai rien trouvé de similaire pour le moment sur la toile.</p>
<p>Le setup part d&#8217;un gros besoin en machines virtuelles :</p>
<ul>
<li>Les développeurs ont besoin de tester leurs applications sous toutes les coutures et sont plus plutôt allergiques à certains systèmes d&#8217;exploitation, même sous forme de machines virtuelles.</li>
<li>Certaines plates formes déjà en production ont besoin d&#8217;environnement de préproduction facilement ré-initialisables. Les développeurs ont besoin d&#8217;images/VM &#8220;template&#8221; afin de pouvoir réaliser leurs tests facilement.</li>
<li>Les architectes ont besoin de valider des setups en mode pré-production sur des technologies émergentes</li>
</ul>
<div style="background: #FFFABF; padding: 4px;"><strong>Avertissement :</strong> Cet article a pour but de partager des connaissances avec un public avisé.</div>
<p><!--more--></p>
<h3>Préambule</h3>
<ul>
<li>Le setup d&#8217;origine ayant été réalisé sous Debian 6.0 la documentation présenté tel qu&#8217;elle est ici, est bien sur basé sur la machine de production Debian 6.0. Il est à noter que j&#8217;ai réalisé très facilement un clone de cette machine sous gentoo, je vous donnerai en annexe les options de compilation des différents programmes utilisés.</li>
<li>L&#8217;installation + la configuration du serveur OpenVPN ne fait pas l&#8217;objet de cet article, vous pouvez donc pour cela vous reporter aux <a href="http://geekfault.org/tag/openvpn/">autres articles de Geekfault traitant du VPN</a>.</li>
<li>En fait, réaliser ce setup, est chose plutôt aisé pour tout adminsys chevronné, (chose qui vous vous en doutez je suis :p), le plus compliqué a été de trouver des contournements pour les multitudes de soucis rencontrés.</li>
</ul>
<h3>Cahier des charges</h3>
<p>Comme expliqué plus haut le système de VM est un système très utilisé chez mon client. J&#8217;avais dans le passé monté un serveur XEN pour eux, mais la flexibilité ne convenait plus, notamment pour les grid de test Windows.</p>
<p>Il fallait donc un nouveau serveur de VM. By design, les guest Windows ne seront pas accessible depuis l&#8217;internet, et n&#8217;auront donc pas d&#8217;IP publique. En outre, les développeurs devront pouvoir accéder de façon transparente à leur Windows de test, si possible de manière sécurisée.</p>
<p>Les guests GNU/Linux, quand à eux,  pourront être accessibles via une IP publique, via VPN ou les deux à la fois.</p>
<p>La création / les duplications / la maintenance / le démarrage / l&#8217;arrêt des VM devra être très simple. (Le client souhaite  garder la main sur cela, et être maitre de la situation en matière de création de VM).</p>
<h3>Choix de la technologie</h3>
<p>Nous avons finalement retenu l&#8217;idée d&#8217;un serveur étant capable de faire cela :</p>
<ul>
<li>N&#8217;importe qui doit  pouvoir ré-amorcer un système clean : toutes les VM tourneront sur des fichiers .img stockés dans /var</li>
<li>Les gestion des ressources réseau est automatisée au maximum : les VM devront obtenir leurs IP privées ou publiques automatiquement, par DHCP.</li>
<li>La technologie de virtualisation sera Qemu/Kvm, épaulée par Libvirt.</li>
<li>Certaines VM ne seront accessible que au travers d&#8217;un VPN, alors que d&#8217;autres devront pouvoir faire office de serveur de préproduction et devront avoir des IP publiques.</li>
<li>Ce serveur devra donc être &#8220;hub&#8221; VPN et permettre la communication entre les clients du VPN, et les VM.</li>
<li>Chaque VM qui ne sera que dans le LAN VPN, devra quand même pouvoir accéder à l&#8217;internet. Nous pensons donc utiliser un bridge ethernet sur eth0 ainsi que sur l&#8217;interface VPN.</li>
<li>Chaque VM devra donc être clonable et les developpeurs pourront s&#8217;y connecter à travers le VPN,  à l&#8217;aide de ssh, ou VNC / rdesktop pour les systèmes d&#8217;exploitation de seconde zone.</li>
<li>Ce serveur devra pouvoir faire tourner des VM : Gentoo / Debian 5.0 / Debian 6.0 / CentOS / Windows (avec différentes version d&#8217;Internet Explorer, nerf de la guerre des tests d&#8217;applications web sous plate-forme windows).</li>
</ul>
<h3>Prérequis Kernel</h3>
<p>Nous avons finalement utilisé le noyau 2.6.32.27. En effet les noyaux 2.6.36 présentent <a href="http://kerneltrap.org/mailarchive/linux-kernel/2010/8/29/4612871">un bug dans le support KVM</a> qui <a href="http://comments.gmane.org/gmane.comp.emulators.kvm.devel/65852">fait freezer la machine à la coupure des VM</a>. (Nous sommes à priori victimes d&#8217;une régression dans le kernel Linux).</p>
<p>http://comments.gmane.org/gmane.comp.emulators.kvm.devel/65852</p>
<p>Nous avons donc upgradé sur le 2.6.37 mais, nous nous sommes heurtés à un nouveau bug kernel.</p>
<h4>Bug kernel avec le 2.6.37</h4>
<p><code>[76529.274129] rmap_remove: ffff88017deb37f8 1-&gt;BUG<br />
[76529.274162] ------------[ cut here ]------------<br />
[76529.274189] kernel BUG at arch/x86/kvm/mmu.c:700!<br />
[76529.274217] invalid opcode: 0000 [#1] SMP<br />
[76529.274247] last sysfs file: /sys/devices/virtual/net/lo/operstate<br />
[76529.274276] CPU 2<br />
[76529.274302] Pid: 27193, comm: kvm Not tainted 2.6.37 #1 01V648/PowerEdge R410<br />
[76529.274333] RIP: 0010:[] [] drop_spte+0xb8/0x179<br />
[76529.274389] RSP: 0018:ffff88080d987b28 EFLAGS: 00010296<br />
[76529.274417] RAX: 000000000000003b RBX: ffff88017deb37f8 RCX: ffff8800000bc380<br />
[76529.274449] RDX: 000000000000c3c3 RSI: 0000000000000046 RDI: ffffffff81918a88<br />
[76529.274480] RBP: ffff88080d987b38 R08: 0000000000000000 R09: 000000000000000a<br />
[76529.274512] R10: ffff88102f819400 R11: ffff88102f819400 R12: ffff880fe7cb0000<br />
[76529.274544] R13: ffff88080d987b98 R14: 0000000000000000 R15: ffff88017deb37f8<br />
[76529.274576] FS: 0000000000000000(0000) GS:ffff88102fc20000(0000) knlGS:0000000000000000<br />
[76529.274623] CS: 0010 DS: 002b ES: 002b CR0: 000000008005003b<br />
[76529.274652] CR2: 00007fb91807f000 CR3: 000000100aa0d000 CR4: 00000000000026e0<br />
[76529.274684] DR0: 0000000000000090 DR1: 00000000000000a4 DR2: 00000000000000ff<br />
[76529.274715] DR3: 000000000000000f DR6: 00000000ffff0ff0 DR7: 0000000000000400<br />
[76529.274747] Process kvm (pid: 27193, threadinfo ffff88080d986000, task ffff8805a1d82630)<br />
[76529.274794] Stack:<br />
[76529.274815] ffff88080da10090 ffff880fe7cb0000 ffff88080d987b88 ffffffff8100ef8f<br />
[76529.274870] ffff8805a1d82630 000000ff8109702a ffff88080d987c08 ffff880fe7cb0000<br />
[76529.274925] ffff88080da10950 ffff88080d987b98 ffff880fe7cb2320 0000000000020d93<br />
[76529.274981] Call Trace:<br />
[76529.275006] [] kvm_mmu_prepare_zap_page+0x74/0x23c<br />
[76529.275038] [] kvm_mmu_zap_all+0x41/0x6b<br />
[76529.275069] [] kvm_arch_flush_shadow+0x11/0x1e<br />
[76529.275101] [] kvm_mmu_notifier_release+0x2c/0x3f<br />
[76529.275134] [] __mmu_notifier_release+0x49/0x74<br />
[76529.275166] [] exit_mmap+0x27/0x147<br />
[76529.275198] [] mmput+0x28/0xb4<br />
[76529.275226] [] exit_mm+0x124/0x131<br />
[76529.275254] [] do_exit+0x20f/0x6a7<br />
[76529.275283] [] do_group_exit+0x71/0x99<br />
[76529.275313] [] get_signal_to_deliver+0x2fa/0x315<br />
[76529.275346] [] do_signal+0x6d/0x673<br />
[76529.275375] [] ? kill_pid_info+0x3a/0x47<br />
[76529.275404] [] ? sys_kill+0x82/0x161<br />
[76529.275433] [] do_notify_resume+0x27/0x51<br />
[76529.275464] [] int_signal+0x12/0x17<br />
[76529.275491] Code: 48 d9 71 81 31 c0 e8 2b 7f 5c 00 0f 0b eb fe 40 f6 c6 01 75 26 48 39 f3 74 15 48 89 de 48 c7 c7 63 d9 71 81 31 c0 e8 0b 7f 5c 00 &lt;0f&gt; 0b eb fe 48 c7 00 00 00 00 00 e9 ac 00 00 00 48 83 e6 fe 31<br />
[76529.275720] RIP [] drop_spte+0xb8/0x179<br />
[76529.275752] RSP<br />
[76529.276109] ---[ end trace 2d814c5436296e34 ]---<br />
[76529.276177] Fixing recursive fault but reboot is needed!</code></p>
<p>Je vous renvoie à <a href="http://www.mail-archive.com/kvm@vger.kernel.org/msg47630.html">la mailing list de kernel.org à ce sujet</a>. Ça ressemble beaucoup, le gars a le même problème sur un 2.6.36. Le mainteneur des kernel 2.4.x a posté un patch pour 2.6.36 sur le thread.</p>
<h4>Voici ce qu&#8217;il faut activer dans le noyau pour que notre setup fonctionne :</h4>
<p><code>- Networking support<br />
-- Networking options<br />
--- 802.1d Ethernet Bridging<br />
--- Network Packet Filtering framework (netfilter)<br />
---- Core Netfilter configuration (les options dont vous aurez besoin pour vos propres régles de firewalling)<br />
---- IP: Netfilter Configuration<br />
----- IP tables support<br />
----- IPv4 Connection tracking support (required for NAT)<br />
----- Full NAT<br />
----- MASQUERADE target support</code><br />
(à compléter, j&#8217;ai certainement du oublier un truc).</p>
<h3>Installation des composants indispensables</h3>
<p>Voici la liste des composants indispensables à installer avec votre package manager (apt-get sous Debian; emerge sous Gentoo) :</p>
<ul>
<li>libvirt-bin</li>
<li>libvirt0</li>
<li>virt-top</li>
<li>virtinst</li>
<li>isc-dhcp-server</li>
<li>openvpn</li>
<li>iproute</li>
<li>iptables</li>
<li>ifupdown</li>
<li>kvm</li>
<li>build-essential + libncurses5-dev</li>
<li>qemu-kvm</li>
<li>rsync</li>
<li>munin-libvirt-plugins</li>
</ul>
<h4>Use flags sous Gentoo</h4>
<p><code>/etc/portage/package.use</code><br />
<code><br />
app-emulation/libvirt libvirtd qemu lvm network nfs virt-network<br />
</code></p>
<h3>Configuration du bridge (debian ways)</h3>
<p><code>/etc/network/interfaces</code><br />
<code><br />
auto lo<br />
iface lo inet loopback<br />
# The primary network interface</code></p>
<p><code>auto eth0<br />
iface eth0 inet static<br />
address 91.x.x.x<br />
netmask 255.255.255.0<br />
network 91.x.x.0<br />
broadcast 91.x.x.255<br />
gateway 91.x.x.1</code></p>
<p><code>auto br0<br />
iface br0 inet static<br />
address 91.x.x.x<br />
netmask 255.255.255.0<br />
network 91.x.x.0<br />
broadcast 91.x.x.255<br />
gateway 91.x.x.1<br />
bridge_ports eth0<br />
bridge_stp off<br />
bridge_maxwait 5</code></p>
<p><code>auto br1<br />
iface br1 inet static<br />
address 172.16.20.1<br />
netmask 255.255.255.0<br />
network 172.16.20.0<br />
broadcast 172.16.20.255<br />
bridge_ports tap0<br />
bridge_stp off<br />
bridge_maxwait 5</code></p>
<p><code>pre-up iptables-restore -c /etc/network/iptables</code></p>
<p><code>auto eth1<br />
iface eth1 inet static<br />
address 10.191.78.4<br />
netmask 255.255.0.0<br />
network 10.191.0.0<br />
broadcast 10.191.0.255</code></p>
<h3>libvirt setup</h3>
<p><code>/etc/default/libvirt-bin</code><br />
<code>start_libvirtd="yes"<br />
libvirtd_opts="-d"</code></p>
<p>Creation du fichier de l&#8217;image :<br />
<code># qemu-img create /var/VM/gentoo-x86_64.img 10G</code></p>
<p><code>/etc/sysctl.conf</code><br />
<code>net.bridge.bridge-nf-call-ip6tables = 0<br />
net.bridge.bridge-nf-call-iptables = 1<br />
net.bridge.bridge-nf-call-arptables = 0<br />
net.ipv4.conf.all.bootp_relay = 1</code></p>
<p>Attention à l&#8217;isolation reseau des VM : <a href="https://bugzilla.redhat.com/show_bug.cgi?id=512206">https://bugzilla.redhat.com/show_bug.cgi?id=512206</a></p>
<p>Le DHCP ne doit pas envoyer de requêtes sur le reseau :<br />
<code># iptables -t filter -A FORWARD -p udp --sport 68 --dport 67 -j DROP </code></p>
<h4>Sécuriser le VNC de qemu/kvm en le forçant sur l&#8217;interface sécurisée</h4>
<p><code>/etc/libvirt/qemu.conf</code><br />
<code>vnc_listen '172.16.20.1' </code></p>
<h4>Problème de keymap bug libvirt</h4>
<p><a href="http://www.arnebrodowski.de/blog/keymap-problems-with-virt-manager.html">http://www.arnebrodowski.de/blog/keymap-problems-with-virt-manager.html</a></p>
<h4>Iptables avec le bridge et la libvirt</h4>
<p><a href="http://ddevnet.net/wiki/index.php/How_KVM_or_libVirt_IPtables_work">http://ddevnet.net/wiki/index.php/How_KVM_or_libVirt_IPtables_work</a></p>
<h4>Mise en place du dhcpd</h4>
<p><code>/etc/dhcp/dhcpd.conf</code><br />
<code>ddns-update-style none;<br />
option domain-name "zenexity.fr";<br />
option domain-name-servers 81.93.xxx.xxx, 81.93.xx.xx;<br />
default-lease-time 3600;<br />
max-lease-time 7200;</code></p>
<p><code>log-facility local7;</code></p>
<p><code>subnet 91.xxx.xx.0 netmask 255.255.255.0 {<br />
range 91.xxx.xx.20 91.xxx.xx.50;<br />
option routers 91.xxx.xx.1;<br />
}</code></p>
<p><code>subnet 172.16.20.0 netmask 255.255.255.0 {<br />
range 172.16.20.128 172.16.20.254;<br />
option routers 172.16.20.1<br />
}</code></p>
<h4>Exemple de création de VM</h4>
<ul>
<li>Une machine virtuelle gentoo n&#8217;ayant qu&#8217;une seule interface réseau sur le VPN only<br />
<code># virt-install -n gentoo -r 512 -vcpus=1 -f /var/VM/gentoo-x86_64.img -b br1 --vnc --accelerate -v -c /var/iso/gentoo.iso --os-type=linux</code></li>
<li>Une machine virtuelle debian, ayant une interface reseau publique et une interface VPN<br />
<code># virt-install -n debian -r 512 -vcpus=1 -f /var/VM/debian-x86_64.img -b br0 -b br1 --vnc --accelerate -v -c /var/iso/debian-5.iso --os-type=linux</code></li>
</ul>
<p>libvirt stocke ses fichiers de description de VM dans /etc/libvirt/qemu. Voici un exemple de fichier xml généré par libvirt :<br />
<code>/etc/libvirt/qemu/debian-50.xml</code><br />
<code><br />
<domain type='kvm'><br />
  <name>debian-50</name><br />
  <uuid>ce5fe35a-703b-8291-9508-8a83f74eb110</uuid><br />
  <memory>524288</memory><br />
  <currentMemory>524288</currentMemory><br />
  <vcpu>1</vcpu><br />
  <os><br />
    <type arch='x86_64' machine='pc-0.12'>hvm</type><br />
    <boot dev='hd'/><br />
  </os><br />
  <features><br />
    <acpi/><br />
    <apic/></p>
<pae/>
  </features><br />
  <clock offset='utc'/><br />
  <on_poweroff>destroy</on_poweroff><br />
  <on_reboot>restart</on_reboot><br />
  <on_crash>restart</on_crash><br />
  <devices><br />
    <emulator>/usr/bin/kvm</emulator><br />
    <disk type='file' device='disk'><br />
      <driver name='qemu' type='raw'/><br />
      <source file='/var/VM/debian-50.img'/><br />
      <target dev='vda' bus='virtio'/></p>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk><br />
    <disk type='block' device='cdrom'><br />
      <driver name='qemu' type='raw'/><br />
      <target dev='hdc' bus='ide'/><br />
      <readonly/></p>
<address type='drive' controller='0' bus='1' unit='0'/>
    </disk><br />
    <controller type='ide' index='0'></p>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller><br />
    <interface type='bridge'><br />
      <mac address='22:54:01:03:93:38'/><br />
      <source bridge='br0'/><br />
      <model type='virtio'/></p>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface><br />
    <serial type='pty'><br />
      <target port='0'/><br />
    </serial><br />
    <console type='pty'><br />
      <target type='serial' port='0'/><br />
    </console></p>
<input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' keymap='fr'/><br />
    <video><br />
      <model type='cirrus' vram='9216' heads='1'/></p>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video><br />
    <memballoon model='virtio'></p>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </memballoon><br />
  </devices><br />
</domain><br />
</code></p>
<p>Attention, si vous changez à la main un fichier domain.xml vous devez lancer la commande ;<br />
<code># virsh define domain.xml</code></p>
<h4>Internet pour les VM n&#8217;ayant été bind que sur le bridge du VPN</h4>
<p><code># iptables -t filter -A FORWARD -i br1 -j MARK --set-mark 1<br />
# iptables -t nat -A POSTROUTING -m mark ! --mark 1 -o br0 -j MASQUERADE</code></p>
<p>Ou, moins fin :<br />
<code># iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE</code></p>
<h3>Commandes libvirt qui vous serviront avec KVM</h3>
<ul>
<li><strong>virsh start domain :</strong> Start le domaine spécifié</li>
<li><strong>virsh shutdown domain :</strong> Shutdown le domaine spécifié</li>
<li><strong>virsh reboot domain :</strong> just reboot a domain</li>
<li><strong>virsh destroy domain :</strong> Terminate a domain</li>
<li><strong>virsh autostart domain :</strong> Autostart a domain</li>
<li><strong>virsh list :</strong> List domains</li>
</ul>
<h3>Ordre de boot des services</h3>
<p>Cette partie est la pierre angulaire de ce setup :</p>
<ol>
<li>Il faut que dhcpd soit demarré après openvpn ! en effet sinon vous ne serai pas capable de diffuser des adresses ip sur votre interface br1 (bridgé avec l&#8217;interface tap0 du vpn) si le dhcpd ne demarre pas après openvpn.</li>
<li>Il faut que la libvirt soit demarré après dhcpd, sinon vous ne serez pas capable de donner des ip à vos VM si celles-ci sont en auto start.<code>/etc/init.d/.depend.start</code><br />
<code>TARGETS = rsyslog qemu-kvm killprocs openvpn apache2 isc-dhcp-server cron acpid ssh rsync dbus exim4 libvirt-bin bootlogs munin-node single rc.local stop-bootlogd rmnologin<br />
INTERACTIVE = openvpn apache2<br />
openvpn: rsyslog<br />
apache2: rsyslog<br />
isc-dhcp-server: rsyslog<br />
cron: rsyslog<br />
acpid: rsyslog<br />
ssh: rsyslog<br />
rsync: rsyslog<br />
dbus: rsyslog<br />
exim4: rsyslog<br />
libvirt-bin: rsyslog openvpn<br />
munin-node: rsyslog isc-dhcp-server qemu-kvm openvpn libvirt-bin apache2 bootlogs cron acpid ssh rsync dbus exim4<br />
single: killprocs bootlogs<br />
rc.local: rsyslog isc-dhcp-server qemu-kvm openvpn libvirt-bin apache2 bootlogs cron acpid ssh rsync dbus exim4<br />
stop-bootlogd: rsyslog isc-dhcp-server qemu-kvm openvpn libvirt-bin apache2 bootlogs cron acpid ssh rsync dbus exim4<br />
rmnologin: rsyslog isc-dhcp-server qemu-kvm openvpn libvirt-bin apache2 bootlogs cron acpid ssh rsync dbus exim4</code></li>
<li>/etc/network/interfaces sur Debian aura toujours tendance à se lancer AVANT la création de tap0 par le service openvpn, or votre interface br1 doit être bridge sur tap0, il est donc nécéssaire de lancer ce petit script  (J&#8217;ai rajouté ce script au script d&#8217;init de openvpn, ainsi celui est lancé juste après que le vpn soit lancé, ainsi le bridge entre br1 et tap0 est fonctionnel lorsque la libvirt se lancera) :<br />
<code>/etc/zenexity/fixebr1</code><br />
<code>sleep 10<br />
ifdown br1 &#038;&#038; echo 'bridge down' >> /var/tmp/bridge<br />
sleep 1<br />
ifup br1 &#038;&#038; echo 'bridge up' >> /var/tmp/bridge<br />
sleep 1<br />
/etc/init.d/isc-dhcp-server restart<br />
</code></li>
<h3>Plugin munin pour libvirt + KVM</h3>
<p><img src="http://honk.sigxcpu.org/projects/libvirt/monitor/screenshots/cputime.png" alt="virt-cpu" /><br />
<img src="http://honk.sigxcpu.org/projects/libvirt/monitor/screenshots/memory.png" alt="virt-memory" /></p>
<p>Je vous renvoie au <a href="http://honk.sigxcpu.org/projects/libvirt/">site du plugin LibVirt pour Munin</a>.</ol>
<h3>Schema de l&#8217;infrastructure</h3>
<p><a rel="attachment wp-att-5789" href="http://geekfault.org/2011/03/24/devbox-kvmlibvirt-perfect-setup/torrylin911-setup/"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft size-full wp-image-5789" title="torrylin911-setup" src="http://geekfault.org/wp-content/uploads/2011/03/torrylin911-setup.png" alt="" width="960" height="720" /></a></p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/03/01/nginx-et-python-le-perfect-setup/' rel='bookmark' title='nginx et python &#8211; le perfect setup'>nginx et python &#8211; le perfect setup</a></li>
<li><a href='http://geekfault.org/2009/10/04/allocation-dipv6-over-openvpn/' rel='bookmark' title='Allocation d&#8217;IPv6 over OpenVPN'>Allocation d&#8217;IPv6 over OpenVPN</a></li>
<li><a href='http://geekfault.org/2010/05/15/pxe-ya-til-un-bootloader-sur-lreseau/' rel='bookmark' title='PXE : Y a-t-il un bootloader sur l&#8217;réseau ?'>PXE : Y a-t-il un bootloader sur l&#8217;réseau ?</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/LKUQ4mymzI0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2011/03/24/devbox-kvmlibvirt-perfect-setup/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Reverse SSH : accéder à un serveur derrière un NAT/Firewall</title>
		<link>http://geekfault.org/2011/02/19/reverse-ssh-acceder-a-un-serveur-derriere-un-natfirewall/</link>
		<comments>http://geekfault.org/2011/02/19/reverse-ssh-acceder-a-un-serveur-derriere-un-natfirewall/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 14:30:35 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tunnel]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5530</guid>
		<description><![CDATA[Le SSH tout le monde le sait, c&#8217;est magique. Mais malheureusement ça ne marche pas OOTB. On a tous en tête plusieurs situations où on s&#8217;est dit &#8220;Damn, si seulement j&#8217;avais un accès SSH sur cette machine&#8221;, la machine étant inaccessible parce que derrière un firewall ou routeur NAT que vous ne contrôlez pas. Imaginez [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/27/lighttpd-php-iphone/' rel='bookmark' title='Serveur Lighttpd avec PHP sur iPhone'>Serveur Lighttpd avec PHP sur iPhone</a></li>
<li><a href='http://geekfault.org/2009/12/14/facebook-lancer-son-serveur-xmpp/' rel='bookmark' title='Facebook s&#8217;apprêterait à lancer son serveur XMPP'>Facebook s&#8217;apprêterait à lancer son serveur XMPP</a></li>
<li><a href='http://geekfault.org/2009/05/14/tunnel-ssh/' rel='bookmark' title='Le tunnel SSH facile'>Le tunnel SSH facile</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2011/02/ssh.jpg" title="ssh" rel="lightbox.5530"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2011/02/ssh-300x196.jpg" alt="" title="ssh" width="300" height="196" class="alignleft size-medium wp-image-5699" /></a>Le SSH tout le monde le sait, c&#8217;est magique. Mais malheureusement ça ne marche pas OOTB. On a tous en tête plusieurs situations où on s&#8217;est dit &#8220;Damn, si seulement j&#8217;avais un accès SSH sur cette machine&#8221;, la machine étant inaccessible parce que derrière un firewall ou routeur NAT que vous ne contrôlez pas.</p>
<p>Imaginez avoir accès en SSH à la machine de ce noob qui ne sait pas configurer son NAT. Ou bien vous assurer que votre laptop soit toujours joignable en SSH peu importe la connexion sur laquelle il est&#8230;</p>
<p><a href="http://www.youtube.com/watch?v=U4oB28ksiIo&#038;t=3m12s">Cette conférence du DEF-Con</a> m&#8217;a interloqué : comment le mec a repris la main sur une machine qui était probablement derrière un NAT? Peut-être grâce au reverse SSH !<br />
<!--more--></p>
<h3>Principe de fonctionnement</h3>
<p>Le principe est assez simple : c&#8217;est l&#8217;ordinateur derrière le NAT (nous l&#8217;appellerons <strong><em>distant</em></strong>) qui doit établir la première connexion. Il établit en fait un <a href="http://geekfault.org/2009/05/14/tunnel-ssh/">tunnel SSH</a> vers vous (nous l&#8217;appellerons <strong><em>local</em></strong>) et ainsi en remontant le tunnel dans l&#8217;autre sens on accède très facilement à la destination.</p>
<div style="text-align:center;"><img src="http://geekfault.org/wp-content/uploads/2011/02/reverse-ssh.png" alt="" title="reverse-ssh" width="580" height="154" class="alignnone size-full wp-image-5702" /></div>
<p>On suppose donc que la connexion SSH vers l&#8217;ordinateur <strong>local</strong> est aisée (serveur dédié ou NAT bien configuré).</p>
<h3>Avantages</h3>
<p><a href="http://geekfault.org/wp-content/uploads/2011/02/reverse-ssh-firewall.jpg" title="reverse-ssh-firewall" rel="lightbox.5530"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2011/02/reverse-ssh-firewall-300x189.jpg" alt="" title="reverse-ssh-firewall" width="300" height="189" class="alignright size-medium wp-image-5705" /></a>
<ul>
<li>Plus besoin de connaître ou de modifier la configuration du réseau sur lequel est branché distant pour pouvoir y établir une connexion SSH. Tant que le port 22 est ouvert en outgoing ça fonctionnera (on peut même envisager de déplacer le serveur de local sur un port moins restreint tel que le 80 ou 443)</li>
<li>Plus besoin de connaître l&#8217;IP où se trouve distant, c&#8217;est lui qui établit le contact vers local</li>
</ul>
<h3>Vérifiez la configuration du serveur SSH local</h3>
<p>Il faut que le serveur sur local autorise les tunnels (<strong>/etc/ssh/sshd_config</strong>) :<br />
<code>AllowTcpForwarding yes</code></p>
<h3>Let&#8217;s go!</h3>
<p>Sur <strong>distant</strong> (la machine inaccessible), créez le tunnel :<br />
<code>distant$ ssh -NR 22222:localhost:22 user@local</code><br />
Bien entendu local est l&#8217;IP de votre machine et user est un utilisateur qui y a accès.</p>
<p>Une fois le tunnel établi, il ne vous reste plus qu&#8217;à remonter le tunnel pour établir la connexion SSH depuis <strong>local</strong> :<br />
<code>local$ ssh -p 22222 user@127.0.0.1</code></p>
<h3>Service au démarrage</h3>
<p>Avec <strong>autossh</strong> (disponible dans le package manager de votre distro préférée) et une <a href="http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/">connexion SSH sans mot de passe</a>, vous pouvez très facilement créer un script de démarrage sur distant pour que le tunnel soit toujours récréé sans intervention humaine :<br />
<code># autossh -i /path/to/privateKey.rsa -NR 22222:localhost:22 user@local</code></p>
<p>Il vous suffit d&#8217;ajouter cette commande dans vos scripts de boot (/etc/rc.local par exemple).</p>
<h3>Aller plus loin</h3>
<p>Ici nous utilisons du SSH pour ouvrir l&#8217;accès à un serveur SSH, mais on pourrait envisager d&#8217;ouvrir l&#8217;accès à n&#8217;importe quel serveur qui tournerait sur distant, par exemple un serveur web pour du <a href="http://geekfault.org/2010/02/20/monitoring-munin/">monitoring Munin</a> :<br />
<code>distant$ ssh -NR 22280:localhost:80 user@local<br />
local$ firefox "http://127.0.0.1:22280"</code></p>
<p>Vous l&#8217;aurez compris, vous pouvez aussi centraliser sur votre serveur (&#8220;local&#8221;) des tunnels venant de tous les n00bs que vous aidez régulièrement, l&#8217;astuce est de remplacer 22222 dans les diverses commandes citées sur cette page par un autre code de port compris entre 1024 et 65535. Et de maintenir une liste exhaustive de ceux-ci !</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/27/lighttpd-php-iphone/' rel='bookmark' title='Serveur Lighttpd avec PHP sur iPhone'>Serveur Lighttpd avec PHP sur iPhone</a></li>
<li><a href='http://geekfault.org/2009/12/14/facebook-lancer-son-serveur-xmpp/' rel='bookmark' title='Facebook s&#8217;apprêterait à lancer son serveur XMPP'>Facebook s&#8217;apprêterait à lancer son serveur XMPP</a></li>
<li><a href='http://geekfault.org/2009/05/14/tunnel-ssh/' rel='bookmark' title='Le tunnel SSH facile'>Le tunnel SSH facile</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/g44ZE90uhgc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2011/02/19/reverse-ssh-acceder-a-un-serveur-derriere-un-natfirewall/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>La nouvelle mode Geek : avoir son domaine .42</title>
		<link>http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/</link>
		<comments>http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/#comments</comments>
		<pubDate>Sun, 19 Dec 2010 18:16:50 +0000</pubDate>
		<dc:creator>bragon</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[42registry]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[djbdns]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[named]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5508</guid>
		<description><![CDATA[Ça claque à mort non d&#8217;avoir un nom de domaine en .42 ? Vous l&#8217;avez rêvé ! Ils l&#8217;ont fait ! En clin d’œil à H2G2, pour épater un peu Marvin, et parce que la réponse universelle doit bien être ré-solvable quelque part sur le net Pour le moment pure expérimentation de la 42registry de [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/06/30/geek-en-avion/' rel='bookmark' title='Un geek en vacances'>Un geek en vacances</a></li>
<li><a href='http://geekfault.org/2010/05/11/maintenir-son-dns-menteur-avec-adblock/' rel='bookmark' title='maintenir son DNS menteur avec Adblock'>maintenir son DNS menteur avec Adblock</a></li>
<li><a href='http://geekfault.org/2010/08/12/ifconfig-me-connaitre-son-ip-publique-en-un-rien-de-temps/' rel='bookmark' title='Ifconfig.me, connaitre son IP publique en un rien de temps'>Ifconfig.me, connaitre son IP publique en un rien de temps</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/42big/" rel="attachment wp-att-5511"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/12/42big-283x300.png" alt="" title="42big" width="283" height="300" class="alignleft size-medium wp-image-5511" /></a></p>
<p>Ça claque à mort non d&#8217;avoir un nom de domaine en .42 ?<br />
Vous l&#8217;avez rêvé ! Ils l&#8217;ont fait !<br />
En clin d’œil à H2G2, pour épater un peu Marvin, et parce que la réponse universelle doit bien être ré-solvable quelque part sur le net <img src='http://geekfault.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Pour le moment pure expérimentation de la 42registry de ce .42, juste avant de peut être conquérir le monde ! (L&#8217;univers et le reste !)</p>
<p><!--more--></p>
<h3> Pourquoi on vous parle de ça ? </h3>
<p>Bah parce que la <a href="http://42registry.org">42registry.org</a> ils sont cool, on les aimes bien, et on a envie de les aider.<br />
C&#8217;est des fous, et nous chez GeekFault on aime bien les fous.</p>
<p>Vous pouvez d&#8217;ailleurs remarquer que si vous savez résoudre les domaines en .42 <a href="http://geekfault.42">http://geekfault.42</a> est disponible.</p>
<p>Vous pouvez d&#8217;ailleurs remarquer que vous pouvez venir nous parler de geekfault ou de 42registry sur Geeknode : 4.irc.42 / salon #geekfault / et salon : #42</p>
<p>Votre humble serviteur est également lisible sur son .42 : <a href="http://bragon.42">http://bragon.42</a></p>
<h3> Erf, je sais pas résoudre les domaines en .42, comment je fais ? </h3>
<p>3 méthodes pour le moment :<br />
- Je possède mon propre serveur DNS bind9<br />
- Je possède mon propre serveur DNScache DJBDNS.<br />
- Je veux utiliser des serveurs DNS open qui savent résoudre .42</p>
<h4> Je possède Bind </h4>
<p>Et bah je rajoute à mon named.conf (ou named.conf.local selon les distribs): </p>
<p><code><br />
zone “42″ IN {<br />
type forward;<br />
forwarders {81.93.248.69; 81.93.248.68; 91.194.60.196; 193.17.192.53; };<br />
};<br />
</code></p>
<p>Je reload bind, et roulz.<br />
<code><br />
/etc/init.d/bind9 reload<br />
</code><br />
ou<br />
<code><br />
/etc/init.d/named reload<br />
</code></p>
<h4> J&#8217;ai DJB &#8230; Oui Je sais &#8230;. </h4>
<p><code><br />
cd /services/dnscache<br />
echo 91.191.147.246 > root/servers/42<br />
echo 91.191.147.243 >> root/servers/42<br />
svc -t /services/dnscache<br />
</code></p>
<h4> Je suis un pauvre pommé, j&#8217;ai pas de serveur de nom </h4>
<p>Et  bien j&#8217;utilise les openDNS de GeekNode.org :</p>
<p>On édite /etc/resolv.conf<br />
<code><br />
nameserver 81.93.248.69<br />
nameserver 81.93.248.68<br />
</code></p>
<h3> Hey mec ? Comment je réserve mon .42 ? </h3>
<p>Gros poulet ! t&#8217;es pas déjà sur : <a href="http://42registry.org">http://42registry.org</a>, tout est expliqué en long en large et en travers !<br />
Alors va vite réserver ton .42 et faire passer le message.</p>
<p><strong>Merci à la team 42registry pour tout l&#8217;poisson !</strong></p>
<p>(Et surtout à Colin qui se reconnaîtra ;D)</p>
<h3> Liste des domaines enregistrés </h3>
<p>Ils sont disponible ici : <a href="http://bragon.42/42.txt">http://bragon.42/42.txt</a></p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/06/30/geek-en-avion/' rel='bookmark' title='Un geek en vacances'>Un geek en vacances</a></li>
<li><a href='http://geekfault.org/2010/05/11/maintenir-son-dns-menteur-avec-adblock/' rel='bookmark' title='maintenir son DNS menteur avec Adblock'>maintenir son DNS menteur avec Adblock</a></li>
<li><a href='http://geekfault.org/2010/08/12/ifconfig-me-connaitre-son-ip-publique-en-un-rien-de-temps/' rel='bookmark' title='Ifconfig.me, connaitre son IP publique en un rien de temps'>Ifconfig.me, connaitre son IP publique en un rien de temps</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/6YO3ML6yxLY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Devenez miroir de Wikileaks sans risque (corrigé)</title>
		<link>http://geekfault.org/2010/12/05/devenez-miroir-de-wikileaks-sans-risque/</link>
		<comments>http://geekfault.org/2010/12/05/devenez-miroir-de-wikileaks-sans-risque/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 23:14:55 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[wikileaks]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5476</guid>
		<description><![CDATA[Bon, d&#8217;habitude on se refuse de parler politique sur Geekfault&#8230; Mais on ne peut pas se taire plus longtemps sur ce qui se passe du côté de Wikileaks. En tant que geeks nous devons nous lever et protester contre ces atteintes à la liberté d&#8217;expression sur Internet. Wikileaks a aujourd&#8217;hui publié sa solution à la [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
<li><a href='http://geekfault.org/2010/05/09/choisir-son-keymap-x-org-1-8-sans-xorg-conf-ni-hack/' rel='bookmark' title='Choisir son keymap X.org 1.8 sans xorg.conf ni hack'>Choisir son keymap X.org 1.8 sans xorg.conf ni hack</a></li>
<li><a href='http://geekfault.org/2010/07/15/zeroconf-reseaux-ip-sans-configuration/' rel='bookmark' title='Zeroconf : Réseaux IP sans configuration'>Zeroconf : Réseaux IP sans configuration</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2010/12/wikileaks.png" title="wikileaks" rel="lightbox.5476"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/12/wikileaks-130x300.png" alt="" title="wikileaks" width="130" height="300" class="alignleft size-medium wp-image-5479 noborder" /></a>Bon, d&#8217;habitude on se refuse de parler politique sur Geekfault&#8230; Mais on ne peut pas se taire plus longtemps sur ce qui se passe du côté de Wikileaks. En tant que geeks nous devons nous lever et protester contre ces atteintes à la liberté d&#8217;expression sur Internet.</p>
<p>Wikileaks a aujourd&#8217;hui publié sa solution à la censure : le mirroring. Si Wikileaks est consultable sur des centaines de noms de domaine et des centaines d&#8217;IPs, il sera d&#8217;autant plus difficile de tous les faire taire.</p>
<p>A noter que cet article, bien qu&#8217;entièrement orienté autour de ce sujet, s&#8217;applique aussi si vous souhaitez offrir à quelqu&#8217;un <strong>un accès SSH chrooté et aux commandes limitées</strong>.</p>
<p><em><strong>Mise à jour :</strong> Mes mesures de sécurité étaient trop optimistes : Rsync n&#8217;utilise pas du SFTP mais doit pouvoir lancer un serveur Rsync sur sa destination en SSH. Voici donc une nouvelle version de cet article, testé et approuvé.</em><br />
<!--more--></p>
<h3>Le problème</h3>
<p>Pour décentraliser la chose, les administrateurs de Wikileaks demande à tous les volontaires de leur offrir un accès en SSH à leur serveur pour pouvoir y pousser un miroir de Wikileaks et le garder à jour grâce à Rsync.</p>
<p>Ca qui m&#8217;a dérangé c&#8217;est le fait de donner un accès SSH à des inconnus sur mon serveur. Mais la solution existe : <strong>CHROOTER</strong> ce compte à un endroit où il ne peut faire aucun mal au système. Voici comment faire.</p>
<p><strong>Attention : cet article ne porte bien évidemment pas sur la sécurisation de votre serveur. Il présente juste une manière d&#8217;éviter que les administrateurs de Wikileaks (que vous ne connaissez pas) aient trop de libertés sur votre serveur (et, oui, je suis paranoïaque sur le coup).</strong></p>
<p><em>NB : Si vous souhaitez devenir très simplement un miroir Wikileaks et que vous leur faites entièrement confiance, les étapes &#8220;<a href="#creerutilisateur">Créer l’utilisateur</a>&#8220;, &#8220;<a href="#virtualhost">Configurer un nom de domaine et un VirtualHost</a>&#8221; et &#8220;<a href="#soumettre">Soumettre votre miroir à Wikileaks</a>&#8221; sont suffisantes.</em></p>
<h3>Sécuriser OpenSSH</h3>
<p>On va donner à Wikileaks (ou toute personne ayant leur clé RSA privée) un accès SSH sur notre serveur. Mais on ne veut prendre aucun risque : cet accès n&#8217;aura aucune autre possibilité que de déposer des fichiers là où on l&#8217;y autorise, c&#8217;est-à-dire dans sa <em>home</em>.</p>
<p>Pour cela, modifiez votre fichier <strong>/etc/ssh/sshd_config</strong>. Vérifiez d&#8217;abord que vous avez ces trois lignes qui autorisent la <a href="http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/">connexion avec une clé publique RSA</a>.<br />
<code>RSAAuthentication yes<br />
PubkeyAuthentication yes<br />
AuthorizedKeysFile      %h/.ssh/authorized_keys</code></p>
<p>Dernièrement, à la fin du fichier créez une nouvelle règle d&#8217;override telle que celle-ci :<br />
<code>Match user wikileaks<br />
         ChrootDirectory /home/wikileaks<br />
         X11Forwarding no<br />
         AllowTcpForwarding no</code><br />
Cette règle est assez explicite et fait simplement en sorte que l&#8217;utilisateur <strong>wikileaks</strong> soit Chrooté dans sa home. Redémarrez SSHd.</p>
<h3 id="creerutilisateur">Créer l&#8217;utilisateur</h3>
<p>Rien de bien sorcier :<br />
<code># mkdir /home/wikileaks<br />
# useradd -d /home/wikileaks -s /bin/bash wikileaks<br />
# chown wikileaks:wikileaks /home/wikileaks</code></p>
<p>Ensuite autorisons la connexion des administrateurs de Wikileaks :<br />
<code># su - wikileaks<br />
$ mkdir ~/.ssh<br />
$ wget http://wikileaks.ch/id_rsa.pub -O ~/.ssh/authorized_keys<br />
$ chmod 600 ~/.ssh/authorized_keys</code></p>
<p>Pour finir, n&#8217;oublions pas de créer le répertoire où sera hébergé le miroir :<br />
<code>$ mkdir ~/www</code></p>
<h3>Créer l&#8217;environnement chroot</h3>
<p>Pour qu&#8217;un chroot fonctionne correctement, il faut que sa racine appartienne à root. Nous créons aussi les deux répertoires indipensables à l&#8217;exécution d&#8217;un rsync : <strong>/bin</strong> et <strong>/lib</strong>.<br />
<code># chown root:root /home/wikileaks<br />
# mkdir /home/wikileaks/bin<br />
# mkdir /home/wikileaks/lib</code></p>
<p>Ensuite copions les binaires nécessaires pour faire un Rsync :<br />
<code># cp `which bash` /home/wikileaks/bin/bash<br />
# cp `which rsync` /home/wikileaks/bin/rsync</code></p>
<p>Pour que ces binaires fonctionnent, il faut aussi copier les librairies nécessaires. Pour lister ces librairies vous pouvez exécuter un <strong>ldd</strong> puis copiez une à une ces libraires<br />
<code># ldd `which bash` `which rsync`<br />
# cp /lib/libncurses.so.5 /home/wikileaks/lib/<br />
...</code><br />
Attention : si votre serveur est un système <strong>64bits</strong> il faudra créer le dossier <strong>/home/wikileaks/lib64/</strong> et le peupler avec les librairies venant de <strong>/lib64</strong>.</p>
<p>Au final vous devriez arriver à une structure proche de celle-ci :<br />
<code>bin<br />
 |- bash<br />
 |- rsync<br />
lib<br />
 |- ld-linux.so.2<br />
 |- libacl.so.1<br />
 |- libattr.so.1<br />
 |- libc.so.6<br />
 |- libdl.so.2<br />
 |- libncurses.so.5<br />
 |- libpopt.so.0</code><br />
Dès maintenant, si on se chroote dans /home/wikileaks on n&#8217;aura que très très peu de possibilités : les commandes internes à bash et rsync.</p>
<h3>Un dummyshell</h3>
<p>Oui, je suis d&#8217;accord, les commandes internes de bash c&#8217;est encore trop! Nous permettons un accès SSH qui pourrait potentiellement lancer une fork bomb par exemple. Nous allons donc créer un shell stupide qui ne permet que de lancer un serveur Rsync. Créez le fichier <strong>/home/wikileaks/bin/dummyshell</strong> :<br />
<code lang="bash">#!/bin/bash<br />
if (( $# == 0 )); then<br />
        printf "%s\n" "shell access is disabled. sorry."<br />
        exit 1<br />
elif (( $# == 2 )) &#038;&#038; [[ $1 == "-c" &#038;&#038; $2 == "rsync --server"* ]]; then<br />
        exec $2<br />
fi</code></p>
<p>Il faut ensuite le rendre exécutable et utilisé comme shell par défaut de l&#8217;utilisateur :<br />
<code># chmod +x /home/wikileaks/bin/dummyshell<br />
# ln -s /home/wikileaks/bin/dummyshell /bin/dummyshell<br />
# usermod -s /bin/dummyshell wikileaks</code><br />
C&#8217;est maintenant officiel, <strong>l&#8217;utilisateur wikileaks ne peut rien faire de plus que lancer un serveur Rsync</strong> ! Et il y a aussi la sécurité du Chroot.</p>
<h3>Test</h3>
<p>Je vous recommande de tester le tout, pour être sûr que Wikileaks pourra uploader son site sur votre serveur. Pour cela ajoutez votre propre clé RSA dans une nouvelle ligne de /home/wikileaks/.ssh/authorized_keys et tentez d&#8217;envoyer un fichier :<br />
<code>$ rsync -ave ssh test.html wikileaks@votreServeur:/www</code></p>
<p>Vous pouvez également éprouver la sécurité en tentant de vous connecter en SSH ou d&#8217;exécuter une commande en SSH -t.</p>
<h3 id="virtualhost">Configurer un nom de domaine et un VirtualHost</h3>
<p>Je suppose que vous vous en sortirez sur ce point-là : créez un nom de domaine (ou un sous-domaine) pour votre miroir et configurez votre serveur web en conséquence.</p>
<p>Le DocumentRoot à spécifier est bien <strong>/home/wikileaks/www</strong></p>
<p>Profitez-en pour empêcher l&#8217;exécution de scripts sur le répertoire :<br />
<code lang="xml"><Directory "/home/wikileaks/www"><br />
        AllowOverride None<br />
        Options -ExecCGI<br />
</Directory></code></p>
<h3 id="soumettre">Soumettre votre miroir à Wikileaks</h3>
<p>Rendez-vous sur <a href="http://46.59.1.2/mass-mirror.html">http://46.59.1.2/mass-mirror.html</a> et soumettez votre miroir !</p>
<p>Sous &#8220;<em>absolute path where we should upload the html data</em>&#8221; mettez simplement <strong>&#8220;/www/&#8221;</strong>.<br />
<a href="http://geekfault.org/wp-content/uploads/2010/12/wikileaks-submit.png" title="wikileaks-submit" rel="lightbox.5476"><img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   src="http://geekfault.org/wp-content/uploads/2010/12/wikileaks-submit-580x225.png" alt="" title="wikileaks-submit" width="580" height="225" class="aligncenter size-large wp-image-5480" /></a></p>
<p>Normalement Wikileaks pushera l&#8217;entièreté du site sur votre serveur. Félicitations, vous défendez la liberté d&#8217;expression sans risque majeur pour votre serveur !</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
<li><a href='http://geekfault.org/2010/05/09/choisir-son-keymap-x-org-1-8-sans-xorg-conf-ni-hack/' rel='bookmark' title='Choisir son keymap X.org 1.8 sans xorg.conf ni hack'>Choisir son keymap X.org 1.8 sans xorg.conf ni hack</a></li>
<li><a href='http://geekfault.org/2010/07/15/zeroconf-reseaux-ip-sans-configuration/' rel='bookmark' title='Zeroconf : Réseaux IP sans configuration'>Zeroconf : Réseaux IP sans configuration</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/ynWPItOt2ZY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/12/05/devenez-miroir-de-wikileaks-sans-risque/feed/</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
		<item>
		<title>Sikuli : programmez avec des screenshots</title>
		<link>http://geekfault.org/2010/10/31/sikuli-automatisation-graphique/</link>
		<comments>http://geekfault.org/2010/10/31/sikuli-automatisation-graphique/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 16:53:56 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[automatisation]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sikuli]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5441</guid>
		<description><![CDATA[Il nous arrive souvent de devoir refaire la même chose encore et encore sur nos ordinateurs. Et pourtant, ce sont eux les machines! Évidemment les plus érudits ont déjà tout un tas de scripts bash (ou un autre langage obscur) pour leur simplifier la vie. Mais il reste toujours certaines interactions qu&#8217;on n&#8217;arrive pas à [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2010/02/21/liberez-votre-esprit-avec-freemind/' rel='bookmark' title='Libérez votre esprit avec Freemind'>Libérez votre esprit avec Freemind</a></li>
<li><a href='http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/' rel='bookmark' title='S&#8217;authentifier avec une clé USB'>S&#8217;authentifier avec une clé USB</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2010/10/Sikuli-Exemple4.png" title="Sikuli-Exemple4" rel="lightbox.5441"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/10/Sikuli-Exemple4-300x171.png" alt="" title="Sikuli-Exemple4" width="300" height="171" class="alignleft size-medium wp-image-5466" /></a>Il nous arrive souvent de devoir refaire la même chose encore et encore sur nos ordinateurs. Et pourtant, ce sont eux les machines! Évidemment les plus érudits ont déjà tout un tas de <strong>scripts bash</strong> (ou un autre langage obscur) <strong>pour leur simplifier la vie</strong>.</p>
<p>Mais il reste toujours certaines interactions qu&#8217;<strong>on n&#8217;arrive pas à automatiser</strong> : celles qui touchent aux <strong>interfaces graphiques</strong> (lorsqu&#8217;aucune API n&#8217;est présente/utile). Je vous présente donc <strong>Sikuli</strong>, le moyen d&#8217;automatiser simplement ce qu&#8217;on voit à l&#8217;écran à partir de screenshots.<br />
<!--more--></p>
<h3>Installation</h3>
<p>Sikuli est un programme open-source en Jython (un interpréteur Python en Java, silence dans le fond de la salle~) et dispose de versions compatibles avec Windows, MacOS et évidemment Linux (32 ou 64bits). Je vous renvoie donc sur <a href="http://groups.csail.mit.edu/uid/sikuli/download.shtml"><strong>la page de téléchargements du projet</strong></a> pour télécharger la dernière version.</p>
<p>Assurez-vous d&#8217;avoir toutes les dépendances:<br />
<code>sudo apt-get install sun-java6-jre libcv4 libcvaux4 libhighgui4</code></p>
<p>Rien à compiler, décompressez le tout et lancez <strong>sikuli-ide.sh</strong></p>
<h3>Scripts simples</h3>
<p>Je ne pense pas que tout vous expliquer soit réellement utile ici, l&#8217;application est très intuitive. Les instructions principales sont évidemment <strong>click(&#8230;)</strong>, <strong>rightClick(&#8230;)</strong> ou <strong>type(&#8220;&#8230;&#8221;)</strong>. Tout est renseigné dans la colonne de gauche.</p>
<p>Pour insérer un screenshot je vous recommande le raccourci clavier <strong>Ctrl+Maj+2</strong> ou, s&#8217;il ne fonctionne pas à l&#8217;endroit où vous souhaitez le faire, utilisez le bouton de screenshot de Sikuli qui a un <strong>délai</strong> configurable dans les préférences.</p>
<p>Voici par exemple <strong>un script qui change la résolution de mon écran</strong> (oui, je sais, je pourrais le faire avec xrandr mais ici c&#8217;est vraiment à la portée de n&#8217;importe qui) :<br />
<div id="attachment_5449" class="wp-caption aligncenter" style="width: 352px"><img src="http://geekfault.org/wp-content/uploads/2010/10/Sikuli-Exemple1.png" alt="" title="Sikuli-Exemple1" width="342" height="284" class="size-full wp-image-5449" /><p class="wp-caption-text">Remarquez que sur certains des screenshots il y a <strong>un point rouge</strong>. Il correspond à l'endroit précis qui sera cliqué, appelé <strong>Target Offset</strong> dans Sikuli et programmable en cliquant sur le bouton représentant le screenshot.</p></div></p>
<h3>Scripts un peu plus intelligents</h3>
<p>Bien sûr Sikuli est proche d&#8217;un vrai langage de programmation et permet donc <strong>des scripts plus puissants, plus intelligents</strong>. On peut faire des boucles, des conditions, des wait, etc.</p>
<p>Voici quelques exemples simples qui parlent d&#8217;eux-même.</p>
<p><code>value = input("Entre la bonne valeur : ")<br />
type(value + "\n")</code><br />
<img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/10/Sikuli-Exemple2.png" alt="" title="Sikuli-Exemple2" width="252" height="272" class="alignleft size-full wp-image-5450" /> <img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/10/Sikuli-Exemple3.png" alt="" title="Sikuli-Exemple3" width="273" height="127" class="alignleft size-full wp-image-5452" /></p>
<p>Beaucoup d&#8217;autres exemples sont consultables dans <a href="http://groups.csail.mit.edu/uid/sikuli/documentation.shtml"><strong>la documentation de Sikuli</strong></a>.</p>
<h3>C&#8217;est bien beau pour les n00bs, mais pour les geeks comme moi?</h3>
<p>Bon j&#8217;ai du me détruire le cerveau à trouver une utilité à Sikuli pour les geeks durs de dur qui savent tout faire en bash&#8230; Et j&#8217;ai trouvé!</p>
<p>Si vous développez des interfaces graphiques, Sikuli peut <a href="http://sikuli.org/documentation.shtml#/trac/wiki/UnitTesting"><strong>faire des unitTests sur celles-ci</strong></a> ! On peut aussi utiliser les possibilités de Sikuli <a href="http://sikuli.org/documentation.shtml#/trac/wiki/How%20to%20use%20Sikuli%20Script%20in%20your%20JAVA%20programs?">dans ses propres logiciels Java</a>.</p>
<p>On peut aussi interagir avec des grosses méchantes applications web en AJAX&#8230; Si vous trouvez d&#8217;autres utilités, laissez-les en commentaire <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Lancer un script</h3>
<p>On peut évidemment lancer un script depuis l&#8217;interface graphique de Sikuli mais le plus intéressant est de le faire depuis un terminal ou un raccourci. Rien de plus simple, il suffit d&#8217;appeler Sikuli avec le paramètre <strong>&#8211;run</strong> :<br />
<code>/chemin/vers/sikuli/sikuli-ide.sh --run /chemin/vers/script.sikuli</code></p>
<p>J&#8217;en ai même un assigné à un raccourcis clavier (Google est votre ami, les raccourcis clavier dépendent de votre environnement graphique)</p>
<h3>En savoir plus</h3>
<ul>
<li><a href="http://sikuli.org/index.shtml">Le site du projet</a></li>
<li><a href="http://groups.csail.mit.edu/uid/sikuli/documentation.shtml">Documentation par l&#8217;exemple</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2010/02/21/liberez-votre-esprit-avec-freemind/' rel='bookmark' title='Libérez votre esprit avec Freemind'>Libérez votre esprit avec Freemind</a></li>
<li><a href='http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/' rel='bookmark' title='S&#8217;authentifier avec une clé USB'>S&#8217;authentifier avec une clé USB</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/mNCv3AY8xMU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/10/31/sikuli-automatisation-graphique/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>wgetpaste, de la console au pastebin</title>
		<link>http://geekfault.org/2010/09/18/wgetpaste-de-la-console-au-pastebin/</link>
		<comments>http://geekfault.org/2010/09/18/wgetpaste-de-la-console-au-pastebin/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 12:20:53 +0000</pubDate>
		<dc:creator>roidelapluie</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[pastebin]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5400</guid>
		<description><![CDATA[Utilisés pour le partage de logs, l&#8217;échange de patch, la diffusion de quotes, et des dizaines d&#8217;autres choses, les pastebin sont sans conteste des outils très important dans le monde des logiciels libres. Or, la plupart d&#8217;entre nous effectuent des démarches assez fastidieuses pour mettre du contenu sur ces fameux pastebin: copier le texte, ouvrir [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/02/21/liberez-votre-esprit-avec-freemind/' rel='bookmark' title='Libérez votre esprit avec Freemind'>Libérez votre esprit avec Freemind</a></li>
<li><a href='http://geekfault.org/2009/08/26/plowshare-megaupload-rapidshare-en-cli/' rel='bookmark' title='Plowshare : MegaUpload, RapidShare et autres en CLI'>Plowshare : MegaUpload, RapidShare et autres en CLI</a></li>
<li><a href='http://geekfault.org/2010/07/15/zeroconf-reseaux-ip-sans-configuration/' rel='bookmark' title='Zeroconf : Réseaux IP sans configuration'>Zeroconf : Réseaux IP sans configuration</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2010/09/wgetpaste3.png" title="wgetpaste3" rel="lightbox.5400"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/09/wgetpaste3-150x150.png" alt="" title="wgetpaste3" width="150" height="150" class="alignleft size-thumbnail wp-image-5431" /></a>Utilisés pour le partage de logs, l&#8217;échange de patch, la diffusion de quotes, et des dizaines d&#8217;autres choses, les pastebin sont sans conteste des outils très important dans le monde des logiciels libres.</p>
<p>Or, la plupart d&#8217;entre nous effectuent des démarches assez fastidieuses pour mettre du contenu sur ces fameux pastebin: copier le texte, ouvrir un navigateur, aller sur le pastebin, coller le texte, récupérer l&#8217;url. Ceci est long et peu pratique. Heureusement, un logiciel libre existe pour simplifier les choses: <a href="http://wgetpaste.zlin.dk/">wgetpaste</a>.<br />
<!--more--><br />
<a href="http://wgetpaste.zlin.dk/">Wgetpaste</a>, dont le site n&#8217;est pas vraiment explicite, va vous permettre, via un pipe &#8220;|&#8221;, d&#8217;envoyer aisément le résultat d&#8217;une commande vers un pastebin, et de récupérer l&#8217;URL de destination.</p>
<p>En voici quelques exemples d&#8217;utilisation, qui vous parleront surement plus:</p>
<h3>Le comportement par défault, utilisant paste.pocoo.org</h3>
<p>Le plus simple pour émettre sur un pastebin est d&#8217;utiliser &#8220;wgetpaste&#8221;, sans options. Le service par défaut est <a href="http://paste.pocoo.org">paste.pocoo.org</a>.<br />
<code>$ cat geekfault.txt | wgetpaste<br />
Your paste can be seen here: http://paste.pocoo.org/show/263519/</code><br />
De cette manière, nous avons l&#8217;URL directe où a été posté notre fichier.</p>
<p>Pour aller plus loin, nous pouvons donner l&#8217;option -r (&#8220;raw&#8221;) afin de recevoir l&#8217;URL du texte sans formatage ni fioriture:<br />
<code>$ cat geekfault.txt | wgetpaste -r<br />
Your raw paste can be seen here: http://paste.pocoo.org/raw/263520/</code></p>
<h3>Choisir un autre service de pastebin</h3>
<p>Vous pouvez obtenir la liste des services en utilisant l&#8217;option -S<br />
<code>$ wgetpaste -S<br />
Services supported: (case sensitive):<br />
   Name:    | Url:<br />
   =========|=================<br />
    ca      | http://pastebin.ca/<br />
    codepad | http://codepad.org/<br />
    dpaste  | http://dpaste.com/<br />
    osl     | http://pastebin.osuosl.org/<br />
   *pocoo   | http://paste.pocoo.org/</code></p>
<p>Ensuite, vous pouvez sélectionner le service avec l&#8217;option -s<br />
<code>$ cat geekfault.txt | wgetpaste -s ca<br />
Your paste can be seen here: http://pastebin.ca/1943411</code></p>
<h3>La coloration syntaxique</h3>
<p>La liste des syntaxes est disponible avec l&#8217;option -L (combinable avec l&#8217;option -s).</p>
<p>Voici un exemple de post d&#8217;un fichier python:<br />
<code>$ cat geekfault.py | wgetpaste -l Python<br />
Your paste can be seen here: http://paste.pocoo.org/show/263529/</code></p>
<h3>Aller plus loin</h3>
<p>Bien d&#8217;autres choses sont disponibles. La liste est disponible avec l&#8217;option -h&#8230; Je vous laisse découvrir tout cela!<br />
<code>$ wgetpaste -h<br />
Usage: /usr/bin/wgetpaste [options] [file[s]]</p>
<p>Options:<br />
    -l, --language LANG           set language (defaults to "Plain Text")<br />
    -d, --description DESCRIPTION set description (defaults to "stdin" or filename)<br />
    -n, --nick NICK               set nick (defaults to your username)<br />
    -s, --service SERVICE         set service to use (defaults to "pocoo")<br />
    -e, --expiration EXPIRATION   set when it should expire (defaults to "1 month")</p>
<p>    -S, --list-services           list supported pastebin services<br />
    -L, --list-languages          list languages supported by the specified service<br />
    -E, --list-expiration         list expiration setting supported by the specified service</p>
<p>    -u, --tinyurl URL             convert input url to tinyurl</p>
<p>    -c, --command COMMAND         paste COMMAND and the output of COMMAND<br />
    -i, --info                    append the output of `emerge --info`<br />
    -I, --info-only               paste the output of `emerge --info` only<br />
    -x, --xcut                    read input from clipboard (requires x11-misc/xclip)<br />
    -X, --xpaste                  write resulting url to the X primary selection buffer (requires x11-misc/xclip)<br />
    -C, --xclippaste              write resulting url to the X clipboard selection buffer (requires x11-misc/xclip)</p>
<p>    -r, --raw                     show url for the raw paste (no syntax highlighting or html)<br />
    -t, --tee                     use tee to show what is being pasted<br />
    -v, --verbose                 show wget stderr output if no url is received<br />
        --completions             emit output suitable for shell completions (only affects --list-*)<br />
        --debug                   be *very* verbose (implies -v)</p>
<p>    -h, --help                    show this help<br />
    -g, --ignore-configs          ignore /etc/wgetpaste.conf, ~/.wgetpaste.conf etc.<br />
        --version                 show version information</p>
<p>Defaults (DEFAULT_{NICK,LANGUAGE,EXPIRATION}[_${SERVICE}] and DEFAULT_SERVICE)<br />
can be overridden globally in /etc/wgetpaste.conf or /etc/wgetpaste.d/*.conf or<br />
per user in any of ~/.wgetpaste.conf or ~/.wgetpaste.d/*.conf.</code></p>
<p>Bon amusement!</p>
<p>Dans c&#8217;est article, nous n&#8217;avons utilisé que la commande &#8220;cat&#8221;. Mais ceci fonctionne avec n&#8217;importe quelle commande.</p>
<p>Attention! Wgetpaste ne prend en compte que ce qui sort sur la sortie standard (stdout). Pour prendre stderr en compte, vous pouvez utiliser 2>&#038;1. Par exemple:<br />
<code>$ cat file_not_found 2>&#038;1 | wgetpaste<br />
Your paste can be seen here: http://paste.pocoo.org/show/263533/</code></p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/02/21/liberez-votre-esprit-avec-freemind/' rel='bookmark' title='Libérez votre esprit avec Freemind'>Libérez votre esprit avec Freemind</a></li>
<li><a href='http://geekfault.org/2009/08/26/plowshare-megaupload-rapidshare-en-cli/' rel='bookmark' title='Plowshare : MegaUpload, RapidShare et autres en CLI'>Plowshare : MegaUpload, RapidShare et autres en CLI</a></li>
<li><a href='http://geekfault.org/2010/07/15/zeroconf-reseaux-ip-sans-configuration/' rel='bookmark' title='Zeroconf : Réseaux IP sans configuration'>Zeroconf : Réseaux IP sans configuration</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/HCWWo_q1SLQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/09/18/wgetpaste-de-la-console-au-pastebin/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Ifconfig.me, connaitre son IP publique en un rien de temps</title>
		<link>http://geekfault.org/2010/08/12/ifconfig-me-connaitre-son-ip-publique-en-un-rien-de-temps/</link>
		<comments>http://geekfault.org/2010/08/12/ifconfig-me-connaitre-son-ip-publique-en-un-rien-de-temps/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 10:03:07 +0000</pubDate>
		<dc:creator>roidelapluie</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[ifconfig.me]]></category>
		<category><![CDATA[ip publique]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5376</guid>
		<description><![CDATA[Beaucoup d&#8217;entre nous sont le plus souvent connectés en NAT derrière un routeur ou connectés derrière un proxy, voire un VPN. Difficile donc de connaitre son IP publique ou son ISP en quelques instants. Certes, pas mal de sites de type «What is my IP?» permettent d&#8217;accéder à ce genre d&#8217;infos, mais ma préférence va [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/09/24/allocation-dadresses-ipv4-publiques-over-vpn/' rel='bookmark' title='Allocation d&#8217;adresses IPv4 publiques over VPN'>Allocation d&#8217;adresses IPv4 publiques over VPN</a></li>
<li><a href='http://geekfault.org/2010/05/11/maintenir-son-dns-menteur-avec-adblock/' rel='bookmark' title='maintenir son DNS menteur avec Adblock'>maintenir son DNS menteur avec Adblock</a></li>
<li><a href='http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/' rel='bookmark' title='La nouvelle mode Geek : avoir son domaine .42'>La nouvelle mode Geek : avoir son domaine .42</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/08/iconfig.me_3-150x150.png" alt="Page d&#039;accueil du site" title="ifconfig.me" width="150" height="150" class="alignleft size-thumbnail wp-image-5387" />Beaucoup d&#8217;entre nous sont le plus souvent connectés en NAT derrière un routeur ou connectés derrière un proxy, voire un VPN. Difficile donc de connaitre son IP publique ou son ISP en quelques instants. Certes, pas mal de sites de type «What is my IP?» permettent d&#8217;accéder à ce genre d&#8217;infos, mais ma préférence va vers <a href="http://ifconfig.me">ifconfig.me</a>.<br />
<!--more--><br />
Si vous ouvrez cette URL depuis un navigateur internet, vous y verrez les informations habituelles que ce genre de site offre: IP, ISP, informations sur le navigateur, et géolocalisation de l&#8217;IP. Ce n&#8217;est pas cela qui rend ce site pratique et indispensable.</p>
<p><a href="http://ifconfig.me">Ifconfig.me</a> a la particularité d&#8217;être utilisable en ligne de commande, avec le célèbre client <a href="http://curl.haxx.se/">cURL</a>. Prenons un exemple simple:</p>
<p><code>$ curl ifconfig.me</code></p>
<p>Renverra l&#8217;adresse IP publique directement. Ni plus, ni moins. Pas besoin d&#8217;ouvrir un navigateur internet, ni de devoir parcourir une page à la recherche de l&#8217;élément recherché.</p>
<p>Il existe d&#8217;autres commandes, telles que:</p>
<p><code>$ curl ifconfig.me/host<br />
$ curl ifconfig.me/ua<br />
$ curl ifconfig.me/all</code></p>
<p>Ces trois commandes renverront respectivement l&#8217;éventuel hostname lié à votre IP publique, votre user agent et l&#8217;ensemble des infos données par le site. La liste complète des commandes est disponible sur <a href="http://ifconfig.me">le site</a>.</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/09/24/allocation-dadresses-ipv4-publiques-over-vpn/' rel='bookmark' title='Allocation d&#8217;adresses IPv4 publiques over VPN'>Allocation d&#8217;adresses IPv4 publiques over VPN</a></li>
<li><a href='http://geekfault.org/2010/05/11/maintenir-son-dns-menteur-avec-adblock/' rel='bookmark' title='maintenir son DNS menteur avec Adblock'>maintenir son DNS menteur avec Adblock</a></li>
<li><a href='http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/' rel='bookmark' title='La nouvelle mode Geek : avoir son domaine .42'>La nouvelle mode Geek : avoir son domaine .42</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/vj2CVC-u-qQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/08/12/ifconfig-me-connaitre-son-ip-publique-en-un-rien-de-temps/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Zeroconf : Réseaux IP sans configuration</title>
		<link>http://geekfault.org/2010/07/15/zeroconf-reseaux-ip-sans-configuration/</link>
		<comments>http://geekfault.org/2010/07/15/zeroconf-reseaux-ip-sans-configuration/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 21:10:43 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[avahi]]></category>
		<category><![CDATA[bonjour]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[protocole]]></category>
		<category><![CDATA[zeroconf]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5324</guid>
		<description><![CDATA[Zeroconf est un ensemble de protocoles permettant de créer des réseaux IP et y fournir plusieurs services sans aucune configuration. Zeroconf permet entre autres de : Allouer automatiquement des IP, sans configurer un serveur DHCP Résoudre des noms de domaines locaux, sans configurer de serveur DNS Annoncer et découvrir des services, sans serveur d&#8217;annuaire Aventurons-nous [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
<li><a href='http://geekfault.org/2010/12/05/devenez-miroir-de-wikileaks-sans-risque/' rel='bookmark' title='Devenez miroir de Wikileaks sans risque (corrigé)'>Devenez miroir de Wikileaks sans risque (corrigé)</a></li>
<li><a href='http://geekfault.org/2009/05/31/chromium-google-chrome-sous-linux/' rel='bookmark' title='Chromium, le Google Chrome sous Linux sans émulation'>Chromium, le Google Chrome sous Linux sans émulation</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2010/07/Bonjour.jpg" title="Bonjour" rel="lightbox.5324"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/07/Bonjour-150x150.jpg" alt="" title="Bonjour" width="150" height="150" class="alignleft size-medium wp-image-5337 noborder" /></a>Zeroconf est un ensemble de protocoles permettant de créer des réseaux IP et y fournir plusieurs services <strong>sans aucune configuration</strong>. Zeroconf permet entre autres de :</p>
<ul>
<li><strong>Allouer automatiquement des IP</strong>, sans configurer un serveur DHCP</li>
<li><strong>Résoudre des noms de domaines locaux</strong>, sans configurer de serveur DNS</li>
<li><strong>Annoncer et découvrir des services</strong>, sans serveur d&#8217;annuaire</li>
</ul>
<p>Aventurons-nous donc un peu dans le monde du «&nbsp;<em>zOMG ça marche tout seul !</em>&nbsp;»<br />
<!--more--></p>
<h3>Les protocoles dits &#8220;Zeroconf&#8221;</h3>
<p>Zeroconf n&#8217;est qu&#8217;une appellation générique de différents protocoles. Sa première implémentation est imputable à Apple, qui l&#8217;appela Rendezvous puis <strong>Bonjour</strong>. Ensuite Microsoft a plus ou moins imposé son équivalent, l&#8217;<acronym title="Universal Plug and Play">UPnP</acronym>.</p>
<p>Sous Linux nous profitons d&#8217;une implémentation des protocoles d&#8217;Apple, sous le nom de <strong>Avahi</strong>. Contrairement aux protocoles Microsoft, ceux de <strong>Bonjour et Avahi sont promulgués par l&#8217;<acronym title="Internet Engineering Task Force">IETF</acronym></strong>, l&#8217;organisme établissant les standards de l&#8217;Internet. Ils ne sont toutefois pas encore admis en tant que standards, la plupart n&#8217;étant décrits que dans des <acronym title="Request For Comments">RFC</acronym> informels.</p>
<h3>Installation</h3>
<p>Avahi apparait généralement dans les gestionnaires de paquets comme une multitude de paquets. Bien que déjà présente dans <strong>Ubuntu</strong>, on peut ajouter quelques packages utiles :<br />
<code>sudo apt-get install avahi-daemon avahi-discover avahi-utils avahi-ui-utils avahi-dnsconfd libnss-mdns service-discovery-applet mdns-scan</code></p>
<p>Sous Gentoo, c&#8217;est un peu plus délicat : il faut d&#8217;abord ajouter les USE flags <span class="font-family: monospace;"><strong>avahi</strong></span> et <span class="font-family: monospace;"><strong>zeroconf</strong></span> à votre <span class="font-family: monospace;">/etc/make.conf</span>, recompiler les packages nécessaire et installer <span class="font-family: monospace;"><strong>net-dns/avahi</strong></span> ainsi que <span class="font-family: monospace;"><strong>net-misc/mDNSResponder</strong></span>.</p>
<h3>IPv4LL : Création d&#8217;un réseau IP sans DHCP</h3>
<p>IPv4LL, pour Local-Link, fait partie de Zeroconf mais est la partie moins poétique, souvent à l&#8217;origine d&#8217;erreurs de configurations IP&#8230; Elle consiste en fait en une <a href="http://tools.ietf.org/html/rfc3927">norme RFC</a> proposant l&#8217;allocation dynamique des adresses IP de <strong>169.254.0.0 à 169.254.254.254</strong> (fe80::/16 en IPv6) sur les réseaux ne possédant pas de serveur DHCP. Il y a évidemment un test évitant que deux ordinateurs prennent la même IP.</p>
<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2010/07/connectivite-limitee-xp-6.png" alt="" title="connectivite-limitee-xp-6" width="338" height="130" class="alignright size-full wp-image-5348" />Ce n&#8217;est pas très propre et ces IP sont haïes de pas mal d&#8217;administrateurs. Remarquons toutefois que les dernières versions de NetworkManager implémentent un mode &#8220;Partagé avec d&#8217;autres ordinateurs&#8221; lors de la création d&#8217;un réseau Ad-Hoc, ce qui crée un vrai serveur DHCP.</p>
<h3>Résolution de noms locale</h3>
<p>Si Avahi est correctement installé, vous pouvez commencer à résoudre des noms automatiquement. Chaque machine s&#8217;attibue un nom de domaine sous la forme <span class="font-family: monospace;"><strong>HOSTNAME</strong>.local</span>. Par exemple, ma machine s&#8217;appelant epsilon :<br />
<code>tito@epsilon:~$ ping epsilon.local<br />
PING epsilon.local (10.0.73.18) 56(84) bytes of data.</code><br />
<strong>epsilon.local</strong> a bien été résolu par Avahi !</p>
<p>Cette magie est amenée par Multicast DNS, ou mDNS : chaque machine membre du réseau Zeroconf maintient en fait un petit serveur avec ses propres enregistrements DNS. Lorsqu&#8217;un membre du réseau fait une requête (multicast vers 224.0.0.251 ou ff02::fb, port UDP 5353), la machine se reconnaissant répond.</p>
<h3>Découverte de services</h3>
<p><a href="http://geekfault.org/wp-content/uploads/2010/07/Avahi-discover.png" title="Avahi-discover" rel="lightbox.5324"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2010/07/Avahi-discover-300x295.png" alt="" title="Avahi-discover" width="300" height="295" class="alignright size-medium wp-image-5335" /></a>Tous les serveurs supportant Zeroconf peuvent <strong>annoncer qu&#8217;ils fournissent un service</strong>. On pourra ainsi détecter automatiquement des partages de fichiers, des serveurs VNC, des serveurs SSH et bien d&#8217;autres.</p>
<p>Ce système est lui aussi basé sur un serveur mDNS, sous forme d&#8217;enregistrements de type SRV, TXT et PTR.</p>
<p>Pour lister les services disponibles sur le réseau Zeroconf il existe plusieurs outils, je citerai juste <strong>avahi-discover</strong> qui est simple et complet.</p>
<h3>Quelques applications bien cools de Zeroconf</h3>
<h4>XMPP décentralisé</h4>
<p><a href="http://geekfault.org/wp-content/uploads/2010/07/Pidgin.jpg" title="Pidgin" rel="lightbox.5324"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/07/Pidgin-150x150.jpg" alt="" title="Pidgin" width="150" height="150" class="alignleft size-thumbnail wp-image-5364" /></a>Intégrée dans quelques clients Jabber, dont Pidgin (libpurple) entre autres, la <a href="http://xmpp.org/extensions/xep-0174.html">norme XMPP <strong>XEP-0174</strong></a> définit les communications XMPP sans serveur. Dans Pidgin, une fois le protocole Bonjour activé, <strong>vous verrez de nouveaux contacts apparaître</strong> comme par magie dès qu&#8217;ils se connectent&nbsp;!</p>
<p>C&#8217;est très pratique pour discuter sans aucune configuration avec ses collègues, sa famille ou même des inconnus <strong>sur un réseau Ad-Hoc</strong> dans un train ^_^</p>
<h4 style="clear:both;">PulseAudio</h4>
<p>Malheureusement PulseAudio n&#8217;a pas de bonne interface pour le présenter, mais exploite très bien ZeroConf en détectant facilement les autres serveurs PulseAudio. Il m&#8217;arrive souvent de <strong>streamer l&#8217;audio de mon laptop vers mon desktop</strong> afin de profiter d&#8217;une meilleure qualité sonore. Tout ça bien entendu <strong>sans configuration</strong> ni reconfiguration en cas de changements sur mon réseau.</p>
<h4>Over VPN</h4>
<p><a href="http://geekfault.org/wp-content/uploads/2010/07/VPN.png" title="VPN" rel="lightbox.5324"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2010/07/VPN-300x212.png" alt="" title="VPN" width="150" height="106" class="alignright size-medium wp-image-5352" /></a>Si vous êtes connecté sur un VPN (au sens propre du terme, pas un VPN de tunneling tel qu&#8217;IPredator) <strong>Zeroconf y passera normalement sans accroc</strong> ! Après tout, un VPN c&#8217;est aussi un réseau local.</p>
<p>Couplé au XMPP décentralisé, c&#8217;est un super moyen de discuter avec ses collègues facilement, ainsi que toutes les autres applications auxquelles vous pouvez penser.</p>
<h3>En savoir plus&#8230;</h3>
<ul>
<li><a href="http://www.zeroconf.org/">ZeroConf.org</a></li>
<li><a href="http://www.multicastdns.org/">MultiCast DNS</a></li>
<li>«&nbsp;Zero Configuration Networking: The Definitive Guide&nbsp;» de Daniel H Steinberg et Stuart Cheshire, O&#8217;Reilly, Décembre 2005.</li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
<li><a href='http://geekfault.org/2010/12/05/devenez-miroir-de-wikileaks-sans-risque/' rel='bookmark' title='Devenez miroir de Wikileaks sans risque (corrigé)'>Devenez miroir de Wikileaks sans risque (corrigé)</a></li>
<li><a href='http://geekfault.org/2009/05/31/chromium-google-chrome-sous-linux/' rel='bookmark' title='Chromium, le Google Chrome sous Linux sans émulation'>Chromium, le Google Chrome sous Linux sans émulation</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/-Bact7UD1j4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/07/15/zeroconf-reseaux-ip-sans-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Organisation et déroulement d’une PGP Key Signing Party</title>
		<link>http://geekfault.org/2010/07/08/key-signing-part/</link>
		<comments>http://geekfault.org/2010/07/08/key-signing-part/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 15:34:21 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Geeklife]]></category>
		<category><![CDATA[chiffrement]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[openpgp]]></category>
		<category><![CDATA[p]]></category>
		<category><![CDATA[pgp]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[weboftrust]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5293</guid>
		<description><![CDATA[Toute cette semaine je suis aux Rencontres Mondiales du Logiciel Libre. Ce matin je repère quelques affiches proposant aux geeks de se retrouver pour une Key Signing Party, càd. un échange de clés PGP où chacun vérifie l&#8217;identité des participants afin de signer les clés et ainsi étendre le Web of Trust. Malheureusement l&#8217;organisateur n&#8217;avait [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/' rel='bookmark' title='S&#8217;authentifier avec une clé USB'>S&#8217;authentifier avec une clé USB</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2010/07/KeySigning-FOSDEM.jpg" title="KeySigning-FOSDEM" rel="lightbox.5293"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/07/KeySigning-FOSDEM-199x300.jpg" alt="" title="KeySigning-FOSDEM" width="199" height="300" class="alignleft size-medium wp-image-5302" /></a>Toute cette semaine je suis aux <a href="http://2010.rmll.info"><strong>Rencontres Mondiales du Logiciel Libre</strong></a>. Ce matin je repère quelques affiches proposant aux geeks de se retrouver pour une <strong>Key Signing Party</strong>, càd. un échange de clés PGP où chacun vérifie l&#8217;identité des participants afin de signer les clés et ainsi étendre le <a href="http://en.wikipedia.org/wiki/Web_of_Trust">Web of Trust</a>.</p>
<p>Malheureusement l&#8217;organisateur n&#8217;avait rien organisé de plus que les affiches. Arrivé sur place j&#8217;ai donc dû faire ce que j&#8217;ai pu pour prendre les choses en main. Voici enfin compilé et en français quelques conseils pour qu&#8217;une Key Signing Party d&#8217;une taille raisonnable (nous étions une quinzaine) se déroule correctement.<br />
<!--more--></p>
<h3>C&#8217;est quoi PGP et une Key Signing Party?</h3>
<p>Pour ceux qui ne connaissent pas, <a href="http://fr.wikipedia.org/wiki/PGP">PGP ou &#8220;Pretty Good Privacy&#8221;</a> est un système cryptographique introduit par Philip Zimmermann et basé sur le principe connu des <a href="http://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique">paires de clés publiques et privées</a>. Désormais standardisé en la norme OpenPGP (<a href="http://tools.ietf.org/html/rfc4880">RFC4880</a>), PGP permet de sécuriser ses communications soit en <strong>signant</strong> un message pour prouver son auteur soit en <strong>chiffrant</strong> le contenu pour être sûr que seul le destinataire légitime pourra le lire.</p>
<p>Mais puisque tout le monde peut générer sa paire de clés de chiffrement, il faut un moyen de lui donner de la valeur : il faut que d&#8217;autres personnes <strong>signent la clé publique</strong> pour certifier l&#8217;identité de son propriétaire. Pour cela on organise lors de divers rassemblements geeks des Key Signing Parties où les utilisateurs de PGP s&#8217;échangent leurs clés publiques et procèdent à une vérification de l&#8217;identité (grâce à un Passeport ou autre document officiel).</p>
<h3>Étape 1 : Informez les gens à temps</h3>
<p>Les RMLL durent une semaine et l&#8217;annonce de la Key Signing s&#8217;est pourtant faite moins de 8h avant son déroulement. Il vaut mieux prévenir plus tôt pour que les gens puissent éventuellement créer leur première clé PGP et se documenter sur son utilisation.</p>
<p>Surtout, il faut récolter les clés publiques des participants de préférence avant le début de la Key Signing Party.</p>
<h3>Étape 2 : Récoltez les clés publiques des participants</h3>
<p>Même si la plupart des clés sont disponibles sur <a href="http://pgp.mit.edu">le serveur de clés du MIT</a>, elles n&#8217;y sont justement pas toutes. Pire, certains utilisateurs de PGP préfèrent que leurs clés ne se partagent que de personne à personne.</p>
<p>Il est donc important que <strong>l&#8217;organisateur récupère toutes les clés publiques</strong>, de préférence avant la Key Signing, pour éviter qu&#8217;elle ne dure trop longtemps.</p>
<p>Pour cela demandez aux participants de vous envoyer leur clé par e-mail (non chiffré mais signé) ou de l&#8217;uploader sur un serveur que vous mettriez en place.</p>
<h3>Étape 3 : Compilez les informations du keyring et imprimez-les</h3>
<p>Une fois que vous avez récolté les clés publiques de tous les participants il faut en faire quelque chose d&#8217;utile pour la Key Signing Party. Un tableau tel que celui-ci est intéressant:</p>
<div style="font-size: 0.8em;">
<table>
<tr>
<td>ID</td>
<td>Fingerprint et UIDs</td>
<td>Fingerprint vérifié</td>
<td>Identité vérifiée</td>
</tr>
<td>4096R/ 0AA3BF0E</td>
<td><strong>E016&nbsp;B36D&nbsp;3BDB&nbsp;9BDB&nbsp;D69E&nbsp;138C&nbsp;BCDB&nbsp;95B7&nbsp;0AA3&nbsp;BF0E</strong><br />
Christophe De Wolf (Tito) &lt;tito@webtito.be><br />
Christophe De Wolf (Tito) &lt;christophe.dewolf@webtito.be></td>
<td> </td>
<td> </td>
</tr>
</table>
</div>
<p>Ensuite envoyez-le ou mieux imprimez-le pour chaque participant. La Key Signing peut commencer.</p>
<h3>Étape 4 : Un peu d&#8217;ordre dans tout ça&#8230;</h3>
<p><a href="http://geekfault.org/wp-content/uploads/2010/07/KeySigning-FaceAFace.jpg" title="KeySigning-FaceAFace" rel="lightbox.5293"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2010/07/KeySigning-FaceAFace-300x225.jpg" alt="" title="KeySigning-FaceAFace" width="300" height="225" class="alignright size-medium wp-image-5307" /></a>C&#8217;est maintenant le grand jour. Demandez aux participants de venir avec une <strong>pièce d&#8217;identité</strong>, la <strong>liste imprimée</strong>, un <strong>stylo</strong> et <strong>leur propre fingerprint</strong>.</p>
<p>Les participants se mettent en <strong>deux lignes face à face</strong>, dans l&#8217;ordre de la liste. Normalement lors d&#8217;une Key Signing Party on n&#8217;utilise pas de laptop. Les deux participants l&#8217;un en face de l&#8217;autre vérfient mutuellement la fingerprint imprimée sur la liste et la pièce d&#8217;identité. Après vérification ils cochent les cases correspondantes.</p>
<p>Une fois tout vérifié, chacun passe au participant à sa droite. Ceux en bout de file changent de ligne. Et ainsi de suite&#8230; Normalement à la fin tout le monde aura vérifié les identité des de tous les autres participants.</p>
<p><em>Si la Key Signing Party prend des proportions inattendues il est peut-être nécessaire d&#8217;imaginer un autre système, par exemple en utilisant une webcam et un projecteur pour que tout le monde puisse vérifier une même identité en même temps.</em></p>
<h3>Étape 5 : Distribuez le keyring</h3>
<p>Puisque vous avez récolté toutes les clés publiques, il faut maintenant les <strong>retransmettre à tous les participants</strong>. Pour cela créez un keyring, càd. un fichier texte avec toutes les clés publiques les unes à la suite des autres. Vous pouvez éventuellement signer ou fournir le hash SHA-1 de ce fichier pour l&#8217;authentifier.</p>
<p>Si vous avez déjà importé les clés dans votre keyring personnel vous pouvez facilemenet exporter vers un keyring dédié à la Key Signing Party :<br />
<code>$ gpg --armor --export key1 key2 key3 key4 > Keyring-de-MaSuperKeySigningParty.asc</code><br />
<strong>Faites en sorte que tous les participants y aient accès : mettez-le sur un serveur web ou envoyez-le par e-mail.</strong></p>
<h3>Étape 6 : Expliquez aux n00bs comment signer</h3>
<p>Bah oui à toute Key Signing Party il y aura forcément des puceaux du PGP. Expliquez-leur la procédure idéale :</p>
<ul>
<li><strong>Récupérer</strong> et importer le keyring dans gpg</li>
<li><strong>Vérifier</strong> consciencieusement le fingerprint et l&#8217;identité des différentes clés publiques en les comparant au papier rempli durant la Key Signing</li>
<li><strong>Signer</strong> chaque clé publique uniquement si on est sûr de sa vérification d&#8217;identité</li>
<li><strong>Envoyer</strong> les clés ainsi signées <strong>par e-mail</strong> à son propriétaire original. Éviter de les uploader directement sur un serveur de clés car cela permet de vérifier l&#8217;adresse e-mail.</li>
</ul>
<p>À noter qu&#8217;il existe des outils pour automatiser tout cela. J&#8217;utilise <a href="http://www.phildev.net/pius/"><strong>PIUS</strong></a>, un script Python qui se charge de tout jusqu&#8217;à l&#8217;envoi par e-mail assez simplement :<br />
<code>./pius -H smtp.gmail.com -P 587 -u tito@webtito.be -S -A  -s <MA_KEY_ID> -r </chemin/vers/keyring><br />
</code></p>
<h3>En savoir plus&#8230;</h3>
<ul>
<li><a href="http://www.gnupg.org/howtos/fr/index.html">La documentation de GnuPG</a></li>
<li><a href="http://www.pgpi.org/doc/pgpintro/">How PGP works (en)</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/' rel='bookmark' title='S&#8217;authentifier avec une clé USB'>S&#8217;authentifier avec une clé USB</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/euCOzE580pY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/07/08/key-signing-part/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XCompose → Enlarge your keymap</title>
		<link>http://geekfault.org/2010/07/07/xcompose-%e2%86%92-enlarge-your-keymap/</link>
		<comments>http://geekfault.org/2010/07/07/xcompose-%e2%86%92-enlarge-your-keymap/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 16:05:17 +0000</pubDate>
		<dc:creator>Lord</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[clavier]]></category>
		<category><![CDATA[keymap]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=4494</guid>
		<description><![CDATA[Vous avez désormais un clavier ergonomique et utilisez un layout adapté au français. Et si on ajoutait des caractères plus exotiques à votre clavier ou plutôt votre keymap ? On va donc utiliser une touche méconnue de votre clavier : Compose. La touche Compose est une touche morte de fonction. Elle ne produit rien en [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/03/27/keymap-linux-sous-windows/' rel='bookmark' title='Keymap Linux sous Windows'>Keymap Linux sous Windows</a></li>
<li><a href='http://geekfault.org/2010/05/09/choisir-son-keymap-x-org-1-8-sans-xorg-conf-ni-hack/' rel='bookmark' title='Choisir son keymap X.org 1.8 sans xorg.conf ni hack'>Choisir son keymap X.org 1.8 sans xorg.conf ni hack</a></li>
<li><a href='http://geekfault.org/2009/03/21/synergy/' rel='bookmark' title='Synergy'>Synergy</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Vous avez désormais <a href="http://geekfault.org/2009/05/16/review-clavier-typematrix-ez-reach-2030/">un clavier ergonomique</a> et utilisez <a href="http://www.bepo.fr">un layout adapté au français</a>. Et si on ajoutait des caractères plus exotiques à votre clavier ou plutôt votre keymap ? On va donc utiliser une touche méconnue de votre clavier : Compose.</p>
<p>La touche Compose est une touche morte de fonction. Elle ne produit rien en elle-même mais suivies d&#8217;autres touches classiques, elle prend effet. Il devient possible d&#8217;écrire du grec λ , des flêches ← , des symboles mathématiques ½ , d&#8217;écrire en ᵉˣᵖᵒˢᵃⁿᵗ , des symboles (in)utiles ♥ ☭ ☺ ™ … en fait vous pouvez écrire tout les caractères existants d&#8217;unicode, vous aurez juste besoin d&#8217;une suffisamment bonne mémoire pour vous souvenir des enchaînements de touches. Le plus fort, c&#8217;est vous qui définissez ces enchaînements.</p>
<p><!--more--></p>
<h3>Mais où est cette fichue touche ?</h3>
<p>Bien qu&#8217;une réponse de trois lettres s&#8217;impose d&#8217;elle même, elle se situe en fait où vous la définissez. Oui oui pour ça aussi vous avez le choix. La touche Windows est souvent déclarée comme telle mais j&#8217;ai préféré utiliser la touche Ctrl droite. En définissant la touche Windows, vous rendez inaccessible les raccourcis qui lui sont liés alors qu&#8217;avec Ctrl droit il vous reste toujours Ctrl gauche … Enfin vous avez compris, de toute façon vous êtes libres. Pour ce faire tout dépend de votre environnement :</p>
<ul>
<li><strong>Gnome :</strong> Dans les options du clavier, rendez-vous sur l&#8217;onglet « layout » puis cliquez sur <em>Options</em>. Vous pourrez alors y définir la touche de votre choix.</li>
<li><strong>Xorg nature :</strong> La manipulation est un peu plus longue mais pas compliquée :<br />
Premièrement il faut déterminer le keycode de la touche que vous souhaitez utiliser. Pour cela lancez <em>xev</em>. Cet utilitaire vous affichera le keycode des touches que vous pressez. Mémorisez ce keycode. Créez ensuite un fichier <code>~/.xmodmap</code> <code>keycode 105 = Multi_key</code>105 correspondant à Ctrl droit. Il ne reste plus qu&#8217;à lancer la commande <code>$ xmodmap ~/.xmodmap</code> pour que le changement soit effectif (commande à lancer au lancement de X).</li>
</ul>
<p>Le dernier obstacle avant de pouvoir utiliser votre Compose personnalisé est la méthode de saisie. Seule la méthode dite <em>xim</em> permet cette petite fantaisie. La plupart des applications permettent de changer ce paramètres en faisant un clic droit dans les zones de texte. Il est également possible de la mettre par défaut grâce à la commande <em>im-switch -c</em> et de choisir <em>xim-default</em>.</p>
<h3>Make it big !</h3>
<p>Bon la touche est prête à être dégainée. Il faut maintenant définir votre fichier XCompose. Ce fichier est spécifique à chaque utilisateur de votre système et se trouve là → <em>/home/$user/.XCompose</em> . Voilà sa syntaxe :<br />
<code><br />
<$touche1> <$touche2> <$touche3> : "$résutat" $num<br />
</code><br />
Vous pouvez mettre plusieurs touches d&#8217;affilées. Le résultat ou le numéro ou les deux doivent être présents. Le résultat est le caractère escompté.</p>
<p>Le numéro est celui défini dans la <a href="http://fr.wikipedia.org/wiki/Unicode#Jeu_de_caract.C3.A8res_cod.C3.A9s_.28Coded_Character_Set.29">norme CCS d&#8217;unicode</a>.</p>
<p>Par exemple si vous voulez faire une flèche vers la droite en appuyant sur compose puis la flèche droite de votre clavier.<br />
<code><Multi_key> <Right> : "→" U2192</code><br />
Et voilà le chemin est tout tracé. Bon parce que je sais que vous êtes flemmards (si si ça se voit, la moitié n&#8217;a pas lu jusqu&#8217;à la fin et ne regarde que les images), sachez qu&#8217;il est possible d&#8217;inclure un fichier externe afin de ne pas avoir à recopier le ficher pour chaque utilisateurs ou alors carrément de réutiliser le boulot du paqueteur de votre distrib :<br />
<code>include "/usr/share/X11/locale/en_US.UTF-8/Compose"</code><br />
Ce fichier compte de très nombreuses lignes pas toujours intéressantes, à survoler vite fait pour voir un paquet de combinaisons déjà existantes.</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/03/27/keymap-linux-sous-windows/' rel='bookmark' title='Keymap Linux sous Windows'>Keymap Linux sous Windows</a></li>
<li><a href='http://geekfault.org/2010/05/09/choisir-son-keymap-x-org-1-8-sans-xorg-conf-ni-hack/' rel='bookmark' title='Choisir son keymap X.org 1.8 sans xorg.conf ni hack'>Choisir son keymap X.org 1.8 sans xorg.conf ni hack</a></li>
<li><a href='http://geekfault.org/2009/03/21/synergy/' rel='bookmark' title='Synergy'>Synergy</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/SlfgGAyVEKQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/07/07/xcompose-%e2%86%92-enlarge-your-keymap/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Redshift, ne vous abimez plus les yeux la nuit</title>
		<link>http://geekfault.org/2010/06/30/redshift-ne-vous-abimez-plus-les-yeux-la-nuit/</link>
		<comments>http://geekfault.org/2010/06/30/redshift-ne-vous-abimez-plus-les-yeux-la-nuit/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 11:23:16 +0000</pubDate>
		<dc:creator>roidelapluie</dc:creator>
				<category><![CDATA[Geeklife]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[environnement]]></category>
		<category><![CDATA[ergonomie]]></category>
		<category><![CDATA[nuit]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[X]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=5245</guid>
		<description><![CDATA[Ne vous est-il jamais arrivé de passer des nuits ou des soirées devant votre pc? C&#8217;est une question rhétorique, bien sûr! Je vais vous présenter un logiciel libre qui pourrait améliorer sensiblement votre expérience nocturne. Ce logiciel s&#8217;appelle Redshift. Comme l&#8217;indique son site officiel, Redshift ajuste la température des couleurs de votre écran en fonction [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/03/21/minimeter-votre-quota-de-telechargement-en-permanence-sous-les-yeux/' rel='bookmark' title='Minimeter : votre quota de téléchargement en permanence sous les yeux'>Minimeter : votre quota de téléchargement en permanence sous les yeux</a></li>
<li><a href='http://geekfault.org/2009/03/28/ubuntu-jaunty-jackalope-9-04/' rel='bookmark' title='On a testé pour vous : Ubuntu Jaunty Jackalope 9.04'>On a testé pour vous : Ubuntu Jaunty Jackalope 9.04</a></li>
<li><a href='http://geekfault.org/2010/02/21/liberez-votre-esprit-avec-freemind/' rel='bookmark' title='Libérez votre esprit avec Freemind'>Libérez votre esprit avec Freemind</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/2010/06/30/redshift-ne-vous-abimez-plus-les-yeux-la-nuit/redshift-icon-128/" rel="attachment wp-att-5261"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2010/06/redshift-icon-128.png" alt="Icone de redshift" title="Redshift icon" width="128" height="128" class="alignright size-full wp-image-5261" /></a> Ne vous est-il jamais arrivé de passer des nuits ou des soirées devant votre pc? C&#8217;est une question rhétorique, bien sûr! Je vais vous présenter un logiciel libre qui pourrait améliorer sensiblement votre <strong>expérience nocturne</strong>.</p>
<p>Ce logiciel s&#8217;appelle <strong>Redshift</strong>.<br />
Comme l&#8217;indique son <a href="http://jonls.dk/redshift/">site officiel</a>, Redshift ajuste la température des couleurs de votre écran en fonction de votre environnement, et plus précisément de la position du soleil. Ce qui permettra d&#8217;avoir un écran blanc en journée, un écran orangé en soirée et un écran rougeâtre en pleine nuit. L&#8217;idéal étant que votre écran aie la même chaleur que la lampe de votre cave^Wchambre.<br />
<!--more--></p>
<h3>Paint it red</h3>
<p>Si vous vous demandez à quoi diable peut bien servir d&#8217;avoir un écran rougeâtre dans l&#8217;obscurité, sachez que dans de nombreux domaines, y compris l&#8217;aéronautique, les instruments sont faits de façon à être rétro-éclairés dans une teinte rouge la nuit.<br />
En effet, cette couleur, dans le bas de notre spectre visible est <strong>moins agressive</strong> à l&#8217;œil dans un environnement sombre.</p>
<p>De plus, non seulement l&#8217;éclat pâle de votre écran dans l&#8217;obscurité peut vous fatiguer la vue, mais des études ont démontré qu&#8217;il tenait éveillé, et provoquais des <strong>difficultés à trouver le sommeil</strong>.<br />
<br />Pour vos yeux, et pour votre productivité, <strong>aimez le rouge</strong> !</p>
<h3>Utilisation</h3>
<p>Afin de commencer à l&#8217;utiliser, entrez dans une console:</p>
<p><code>$ redshift -l 48.8:2.32</code></p>
<p>48.8:2.32 représente vos coordonnées (latitude et longitude). Si vous utilisez gnome, redshift pourra trouver votre position si vous l&#8217;avez encodée dans l&#8217;applet horloge. Il est également possible de passer une option -t afin e définir les différentes températures (jour:nuit). Exemple:</p>
<p><code>$ redshift -l 48.8:2.32 -t 5500:4500</code></p>
<p>Enfin, sachez qu&#8217;en envoyant le signal USR1 à redshift, on le désactive et réactive temporairement.</p>
<p><code>$ killall -USR1 redshift</code></p>
<p>Je vous renvoie à vos tests et au <a href="http://jonls.dk/redshift/">site officiel</a> afin de découvrir d&#8217;autres options et des explications plus poussées. </p>
<h3>installation</h3>
<p>Redshift est packagé dans les principales distributions, pour l&#8217;installer sous <strong>ubuntu</strong> :<br />
<code>$ sudo add-apt-repository ppa:jonls/redshift-ppa<br />
$ sudo apt-get update &#038;&#038; sudo apt-get install redshift</code><br />
sous <strong>gentoo</strong> :<br />
<code># emerge x11-misc/redshift</code><br />
sous <strong>exherbo</strong> :<br />
<code># cave resolve -x repository/roidelapluie<br />
# cave resolve -x x11-apps/redshift</code></p>
<p>Il peut être utilisé avec son interface iconifiée gtk minimaliste en apposant le préfixe &#8220;gtk-&#8221; à la commande redshift :<br />
<code>$ gtk-redshift -l 48.8:2.32 -t 5500:4500</code></p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/03/21/minimeter-votre-quota-de-telechargement-en-permanence-sous-les-yeux/' rel='bookmark' title='Minimeter : votre quota de téléchargement en permanence sous les yeux'>Minimeter : votre quota de téléchargement en permanence sous les yeux</a></li>
<li><a href='http://geekfault.org/2009/03/28/ubuntu-jaunty-jackalope-9-04/' rel='bookmark' title='On a testé pour vous : Ubuntu Jaunty Jackalope 9.04'>On a testé pour vous : Ubuntu Jaunty Jackalope 9.04</a></li>
<li><a href='http://geekfault.org/2010/02/21/liberez-votre-esprit-avec-freemind/' rel='bookmark' title='Libérez votre esprit avec Freemind'>Libérez votre esprit avec Freemind</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/0S6RxSPgfOs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/06/30/redshift-ne-vous-abimez-plus-les-yeux-la-nuit/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>L’arche des mascottes du Libre</title>
		<link>http://geekfault.org/2010/06/13/larche-des-mascotes-du-libre/</link>
		<comments>http://geekfault.org/2010/06/13/larche-des-mascotes-du-libre/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 10:04:54 +0000</pubDate>
		<dc:creator>madx</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[animaux]]></category>
		<category><![CDATA[logos]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=2622</guid>
		<description><![CDATA[Dans le monde du Logiciel Libre, on aime bien les animaux, ils sont partout ! C&#8217;est bien simple, on se croirait à un safari photo au Kenya.Vous vous êtes surement demandé un jour : &#8220;Pourquoi un dromadaire pour Perl ?&#8221; ou encore &#8220;C&#8217;est quoi ce poisson bizarre pour OpenBSD ?&#8220;. Autant de questions, et bien [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2009/08/19/echinus-wm/' rel='bookmark' title='Echinus, un WM, simplement.'>Echinus, un WM, simplement.</a></li>
<li><a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/' rel='bookmark' title='Filtrer ses mails ! Un cauchemard !'>Filtrer ses mails ! Un cauchemard !</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><!--pagetitle:Introduction--></p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/06/teaser_animals.jpg" alt="Animaux" />Dans le monde du <strong>Logiciel Libre</strong>, on aime bien les <strong>animaux</strong>, ils sont partout ! C&#8217;est bien simple, on se croirait à un <strong>safari photo au Kenya</strong>.<br />Vous vous êtes surement demandé un jour : &#8220;<strong>Pourquoi un dromadaire pour Perl ?</strong>&#8221; ou encore &#8220;<strong>C&#8217;est quoi ce poisson bizarre pour OpenBSD ?</strong>&#8220;. Autant de questions, et bien d&#8217;autres encore que vous ne vous êtes même pas posées, auxquelles vous aurez la réponse dans cet article !<br /><!--more-->Cet article est relativement long (il y a <strong>beaucoup d&#8217;animaux</strong>) mais la bonne nouvelle c&#8217;est que vous pouvez le lire par n&#8217;importe quel bout donc n&#8217;hésitez pas à aller directement dans la section qui vous intéresse.</p>
<p><!--nextpage--></p>
<p><!--pagetitle:Programmation--></p>
<h3>
<p style="text-align: center"><a href="http://www.perl.org"><img style="vertical-align: middle" src="/wp-content/uploads/2010/05/perl_100.png" alt="Perl Camel" /></a>Perl &#8211; Le Dromadaire</p>
</h3>
<p><a href="/wp-content/uploads/2010/03/perl-book-cover.jpg" title="Couverture du livre Programming Perl" rel="lightbox.2622"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/04/perl_cover_mini.png" alt="Perl book cover" title="Couverture du livre Programming Perl"/></a>Le dromadaire vient de la couverture du livre <a href="http://oreilly.com/catalog/9780596000271"><em>Programming Perl</em></a> écrit, entre autre, par Larry Wall himself (le créateur de Perl) et publié en 1991 par O&#8217;Reilly.</p>
<p>Il faut savoir qu&#8217;O'reilly a l&#8217;étrange coutume de mettre des dessins d&#8217;animaux, assez moches, sur les couvertures de ses livres et il se trouve que pour cet ouvrage en particulier, c&#8217;est un dromadaire qui a été choisi.<br />
Cela aurait pu être pire, on aurait pu avoir un serpent ou une connerie comme ça &#8230;</p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/03/perl-onion.png" alt="Perl Onion" />A noter que ce n&#8217;est pas le logo <em>officiel</em> de Perl, celui-ci étant l&#8217;oignon, probablement pour sa propension à faire pleurer ceux qui s&#8217;y attaquent, à moins que ce ne soit sa structure qui rappelle la capacité de Perl à pouvoir emboiter les instructions comme des poupées russes jusqu&#8217;à ce que tout le programme tienne sur une seule ligne.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : the Perl Camel</td>
<td style="text-align: right"><strong>Apparition</strong> : 1991</td>
</tr>
<tr>
<td><strong>Surnom</strong> : -</td>
<td style="text-align: right"><strong>Design</strong> : -</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://www.php.net"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/05/php_100.png" alt="PHP éléphant" /></a>PHP &#8211; L&#8217;Éléphant</p>
</h3>
<p>On doit l&#8217;éléphant à un français : Vincent Pontier, qui eu l&#8217;idée en 1998 (le 15 novembre pour être précis) à force de regarder les lettres PHP. Surement sous l&#8217;effet de la drogue, il trouvait que les lettres PHP ressemblaient à un éléphant.<img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   class="aligncenter" src="/wp-content/uploads/2010/06/php_to_elephant_100.png" alt="PHP vers éléphant" /></p>
<p>Il a aussi fait un petit film narrant cette invention majeure du XXieme siècle : <a href="http://www.elroubio.net/naissance_elephpant.php">ici en flash proprio caca</a> et ci-dessous en html5 libre de winner : <video class="aligncenter" src="/wp-content/uploads/2010/03/php-video_origin1.ogg" controls></video>
</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VF/VO)</strong> : l&#8217;éléPHPant / the elePHPant</td>
<td style="text-align: right"><strong>Apparition</strong> : 1998</td>
</tr>
<tr>
<td><strong>Surnom</strong> : -</td>
<td style="text-align: right"><strong>Design</strong> :  Vincent Pontier</td>
</tr>
</tbody>
</table>
<h3>En bref</h3>
<table style="text-align: center">
<tr>
<td><a href="http://www.python.org"><img src="/wp-content/uploads/2010/05/python_80.png" alt="Python" /></a></td>
<td>
<h4>Python &#8211; Les Pythons</h4>
<p>Ça vous en bouche un coin tant d&#8217;originalité hein !<br />Quoi &#8220;non&#8221; ?<br />Plus sérieusement le nom, et par extension la mascotte, viens des Monty <em>Python</em>. </p>
</td>
</tr>
<tr>
<td><a href="http://golang.org"><img src="/wp-content/uploads/2010/05/go_80.png" alt="Google Go" /></a></td>
<td>
<h4>Google Go &#8211; La Marmotte</h4>
<p>Gordon, la (ridicule) mascotte du langage Go de Google.<br />Ça ne se voit probablement pas, mais c&#8217;est bien une marmotte (<em>go</em>pher en anglais).</p>
</td>
</tr>
<tr>
<td><a href="http://llvm.org"><img src="/wp-content/uploads/2010/06/llvm_80.png" alt="LLVM" /></a></td>
<td>
<h4>LLVM &#8211; La Wyverne</h4>
<p>La <a href="http://fr.wikipedia.org/wiki/Wyvern">wyverne</a>, cousin du dragon a été choisi pour les caractéristiques de dernier : puissance, rapidité &#8230; et sa présence sur la couverture d&#8217;un <a href="http://en.wikipedia.org/wiki/Dragon_Book_%28computer_science%29">livre sur les compilateurs</a>.</p>
</td>
</tr>
<tr>
<td><a href="http://www.mono-project.com"><img src="/wp-content/uploads/2010/05/mono_80.png" alt="Mono" /></a></td>
<td>
<h4>Mono &#8211; Le Singe</h4>
<p>Mono veut tout simplement dire singe en espagnol.</p>
</td>
</tr>
</table>
<p><!--nextpage--></p>
<p><!--pagetitle:Bases de données--></p>
<h3>
<p style="text-align: center"><a href="http://www.postgresql.org"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/05/postgresql_100.png" alt="PostegreSQL Elephant" /></a>PostgreSQL &#8211; L&#8217;Éléphant</p>
</h3>
<p>Encore un éléphant, bien que celui-ci soit légèrement plus ancien que celui de PHP. Il a été introduit en 1997 au moment où Postgres95 a intégré les commandes SQL et est devenu PostgreSQL.</p>
<p>Il fait référence au titre d&#8217;un <a href="http://fr.wikipedia.org/wiki/Elephants_Can_Remember">livre d&#8217;Agatha Christie</a> qui lui-même viens d&#8217;une propriété bien connue des éléphants et très pratique pour une base de données : ils n&#8217;oublient jamais.</p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/05/postgresql_old_80.png" alt="PostgreSQL turtle" />Petit détail amusant : au Japon c&#8217;est une tortue qui sert de logo. Apparemment là-bas des masques d&#8217;éléphants étaient portés lors de cérémonies par les adaptes de la secte qui a fait l&#8217;<a href="http://fr.wikipedia.org/wiki/Attentat_au_gaz_sarin_dans_le_m%C3%A9tro_de_T%C5%8Dky%C5%8D">attentat au gaz sarin dans le métro de Tokyo</a> en 1995.<br />Le JPUG (Japan Postgresql Users Group) a donc choisi de remplacer la tête d&#8217;éléphant par le logo original de Postgres quand il n&#8217;était encore qu&#8217;un projet de  l&#8217;Université de Berkeley : une tortue.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : Blue Elephant Head (BEH)</td>
<td style="text-align: right"><strong>Apparition</strong> : 1997</td>
</tr>
<tr>
<td><strong>Surnom</strong> : Slonik</td>
<td style="text-align: right"><strong>Design</strong> : -</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://www.mysql.com"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/05/mysql_100.png" alt="MySQL Dolphin" /></a>MySQL &#8211; Le Dauphin</p>
</h3>
<p>Le dauphin MySQL, cette feignasse, est arrivé sur le tard en 2001, soit 6 ans après la création de MySQL (1995).<br />
Il a été <a href="http://www.mysql.com/news-and-events/generate-article.php?id=77">choisi</a> par Michael &#8220;Monty&#8221; Widenius, un des deux fondateurs de MySQL, car il trouvait que le dauphin, avec sa rapidité, sa puissance, sa précision et sa gentillesse représentait bien MySQL.</p>
<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/05/mysql_pink_50.png" alt="MySQL Dolphin Pink" />Il y eut ensuite en 2002 un <a href="http://www.mysql.com/news-and-events/generate-article.php?id=116">concours</a> pour lui trouver un nom et c&#8217;est Sakila qui a été retenu. Sakila est un prénom africain mais c&#8217;est aussi un prénom féminin ce qui fait donc de notre dauphin une dauphine.</p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/05/mysql_old_80.png" alt="MySQL old logo" />Pour votre culture, le dauphin a remplacé l&#8217;ancien logo MySQL qui était tout de même assez immonde comme vous pouvez le constater.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : the MySQL Dolphin</td>
<td style="text-align: right"><strong>Apparition</strong> : 2001</td>
</tr>
<tr>
<td><strong>Surnom</strong> : Sakila</td>
<td style="text-align: right"><strong>Design</strong> : Renne Angelvuo</td>
</tr>
</tbody>
</table>
<h3>En bref</h3>
<table style="text-align: center">
<tr>
<td><a href="http://www.firebirdsql.org"><img src="/wp-content/uploads/2010/05/firebird_80.png" alt="Logo Firebird" /></a></td>
<td>
<h4>Firebird &#8211; Le Phœnix</h4>
<p>Cette base de données a connu son heure de gloire quand Mozilla voulu utiliser ce nom pour ce qui s&#8217;appellera finalement Firefox.</p>
</td>
</tr>
<tr>
<td><a href="http://askmonty.org/wiki/MariaDB"><img src="/wp-content/uploads/2010/05/mariadb_80.png" alt="Logo MariaDB" /></a></td>
<td>
<h4>MariaDB &#8211; Le Phoque</h4>
<p>Un fork de MySQL par Michael &#8220;Monty&#8221; Widenius (encore lui).<br />Comme la mascotte de MySQL était un dauphin, ils ont décidé de rester dans les mammifères marins et de prendre un phoque.</p>
</td>
</tr>
</table>
<p><!--nextpage--></p>
<p><!--pagetitle:OS/kernels--></p>
<h3>
<p style="text-align: center"><a href="http://kernel.org"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/05/linux_100.png" alt="Tux" /></a>Linux &#8211; Le Pingouin</p>
</h3>
<p>Le fameux pingouin (techniquement un <a href="http://fr.wikipedia.org/wiki/Manchot">manchot</a> mais bon) a été <a href="http://lkml.indiana.edu/hypermail/linux/kernel/9605/0855.html">inventé</a> par Linus Torvalds himself sur une <a href="http://lkml.indiana.edu/hypermail/linux/kernel/9605/0237.html">idée originale</a> d&#8217;Alan Cox himself et dessiné par Larry Ewing (pas <em>himself</em> parce que personne ne le connait) avec la première version publique de Gimp &#8230; itself.</p>
<p><a href="/wp-content/uploads/2010/05/tux_tuxedo.jpg" title="Pingouin en Smoking" rel="lightbox.2622"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/05/tux_tuxedo_80.png" alt="Pingouin en Smoking" title="Pingouin en Smoking" /></a>Le nom <em>Tux</em> viens d&#8217;un certain James Hughes sur la LKML (Linux Kernel Mailing List) pour qui cela serait l&#8217;acronyme de <strong>T</strong>orvalds <strong>U</strong>ni<strong>X</strong>.<br />En vérité il a surement choisi ce nom car c&#8217;est comme cela qu&#8217;on appelle familièrement les smokings en anglais (<em>Tux</em>edo) et que ces derniers ont les mêmes couleurs que les pingouins.</p>
<p><a href="/wp-content/uploads/2010/04/ccpenguin.jpg" title="Inspiration que Linus donna pour les dessinateurs" rel="lightbox.2622"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/05/tux_inspiration_100.png" alt="Inspiration de Linus" title="Inspiration que Linus donna pour les dessinateurs"/></a><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/05/tuz_100.png" alt="Tuz le diable de Tasmanie" />Bonus : à gauche l&#8217;image que Linus a donné comme inspiration pour les dessinateurs. À droite Tuz, le diable de Tasmanie, qui remplaça temporairement Tux pour le kernel 2.6.29, afin de rappeler que le diable de Tasmanie pourrais bientôt rejoindre les dodos.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : The Linux Penguin</td>
<td style="text-align: right"><strong>Apparition</strong> : 1996</td>
</tr>
<tr>
<td><strong>Surnom</strong> : Tux</td>
<td style="text-align: right"><strong>Design</strong> :  Larry Ewing</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://www.gnu.org"><img class="alignnone size-full" style="vertical-align: middle" src="/wp-content/uploads/2010/05/gnu_100.png" alt="GNU Head" /></a>GNU &#8211; Le Gnou</p>
</h3>
<p>Le gnou est la mascotte GNU pour une raison assez évidente, mais ce qui l&#8217;est moins c&#8217;est la raison pour laquelle <a href="http://fr.wikipedia.org/wiki/Richard_Stallman">Richard M. Stallman</a> (RMS pour les intimes) a choisi cet animal.<br />Cela viendrais d&#8217;une <a href="http://en.wikipedia.org/wiki/The_Gnu">obscure chanson comique</a>, mais sachant que le même Stallman a appelé son éditeur <em>emacs</em> car il voulait pouvoir le lancer juste en tapant son initiale et que <em>E</em> était libre à l&#8217;époque&#8230; il ne faut pas chercher trop loin.</p>
<p>Dans la plus pure tradition de l&#8217;esprit GNU, le logo a été successivement modifié par plusieurs dessinateurs, chacun apportant quelques améliorations.</p>
<table style="width: 100%;text-align:center">
<caption>Évolution du logo GNU</caption>
<tr>
<td><a href="/wp-content/uploads/2010/05/gnu-1_266.png" title="Logo original par Etienne Suvasa" rel="lightbox.2622"><img src="/wp-content/uploads/2010/05/gnu-1_120.png" alt="Logo original par Etienne Suvasa" title="Logo original par Etienne Suvasa"/></a></td>
<td><a href="/wp-content/uploads/2010/05/gnu-2_266.png" title="Modification de Peter Gerwinski (meilleure résolution)" rel="lightbox.2622"><img src="/wp-content/uploads/2010/05/gnu-2_120.png" alt="Modification de Peter Gerwinski" title="Modification de Peter Gerwinski (meilleure résolution)" /></a></td>
<td><a href="/wp-content/uploads/2010/05/gnu-3_266.png" title="Modification d'Aurélio A. Heckert (simplification)" rel="lightbox.2622"><img src="/wp-content/uploads/2010/05/gnu-3_120.png" alt="Modification d'Aurélio A. Heckert" title="Modification d'Aurélio A. Heckert (simplification)"/></a></td>
</tr>
<tr>
<td>Original<br />(Etienne Suvasa)</td>
<td>Meilleure définition<br />(Peter Gerwinski)</td>
<td>Simplification<br />(Aurélio A. Heckert)</td>
</tr>
</table>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : The GNU Head</td>
<td style="text-align: right"><strong>Apparition</strong> : 198?</td>
</tr>
<tr>
<td><strong>Surnom</strong> : -</td>
<td style="text-align: right"><strong>Design original</strong> :  Etienne Suvasa</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://www.freebsd.org"><img class="alignnone size-full" style="vertical-align: middle" src="/wp-content/uploads/2010/05/bsd_100.png" alt="BSD Daemon" /></a>*BSD &#8211; Le Daemon</p>
</h3>
<p>Le daemon BSD n&#8217;est pas vraiment un animal mais avec ses cornes et sa queue on dira que c&#8217;est un cousin éloigné de la vache. Pour info daemon != démon, même si le daemon BSD y ressemble bigrement. Un daemon est plutôt comme un <em>esprit</em> ou un <em>génie</em> et n&#8217;est pas nécessairement du coté obscur de la force.</p>
<p><a href="/wp-content/uploads/2010/05/4daemons.jpg" title="Poster contenant la première apparition du daemon BSD" rel="lightbox.2622"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/05/4daemons_100.png" alt="4 BSD Daemons" title="Poster contenant la première apparition du daemon BSD" /></a>Tout débute en 1976 avec un dev BSD qui travaille comme serrurier et qui se retrouve en train de forcer un coffre fort chez un artiste, oui ça commence bizarrement. Le dev (Mike O&#8217;Brien) parle à l&#8217;artiste (<a href="http://fr.wikipedia.org/wiki/Phil_Foglio">Phil Foglio</a>) des <a href="http://en.wikipedia.org/wiki/Daemon_%28computer_software%29">daemons</a> unix, des <a href="http://en.wikipedia.org/wiki/Pipeline_%28Unix%29">pipes</a> et des <a href="http://en.wikipedia.org/wiki/Fork_%28operating_system%29">forks</a> et l&#8217;artiste fait une image avec quatre daemons ressemblant à des démons tenant chacun un trident (<em>fork</em> veut dire <em>fourchette</em>, qui n&#8217;est jamais qu&#8217;un mini-trident) et jouant sur des tuyaux (pipes) devant un <a href="http://fr.wikipedia.org/wiki/PDP-11">PDP-11</a>.<br />L&#8217;image originale a été perdue depuis, ne restent que des photos des T-Shirts sur lesquels elle a été imprimée.</p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/05/freebsd_80.png" alt="FreeBSD logo" />
<p>Plus tard, en 1988, <a href="http://fr.wikipedia.org/wiki/John_Lasse">John Lasseter</a> dessinera la version la plus connue du daemon, celle avec les chaussures de sport (voir en haut), qui sera la mascotte de FreeBSD de longues années avant d&#8217;être remplacée par un logo abstrait (voir à gauche).<br />Le nom du daemon est Beastie, non pas en hommage aux <a href="http://fr.wikipedia.org/wiki/Beastie_Boys">Beastie Boys</a>, mais à la prononciation de <em>BSD</em> quand on est bourré (bi-hès-di → alcool → beastie).</p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/05/openbsd_old_80.png" alt="Old OpenBSD logo" /><a href="/wp-content/uploads/2010/05/netbsd_old.jpg" title="Ancien logo NetBSD" rel="lightbox.2622"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/05/netbsd_old_80.png" alt="Old NetBSD logo" title="Ancien logo NetBSD" /></a>Le daemon BSD se retrouvera par la suite dans le logo d&#8217;OpenBSD, avec un halo, ainsi que dans le logo de NetBSD, avec trois potes à lui et un drapeau en train de répliquer une <a href="http://fr.wikipedia.org/wiki/Raising_the_Flag_on_Iwo_Jima">célèbre photo</a>, nus.</p>
<p></p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : The BSD Daemon</td>
<td style="text-align: right"><strong>Apparition</strong> : 1976</td>
</tr>
<tr>
<td><strong>Surnom</strong> : Beastie</td>
<td style="text-align: right"><strong>Design</strong> : -</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://www.openbsd.org"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/05/openbsd_100.png" alt="Puffy" /></a>OpenBSD &#8211; Le Poisson-hérisson</p>
</h3>
<p>Puffy est arrivé en même temps que l&#8217;algorithme Blowfish pour OpenSSH, comme pour Tux il y a une petite confusion entre le <a href="http://fr.wikipedia.org/wiki/Tetraodontidae">poisson-ballon</a> (blowfish) qui n&#8217;a pas d&#8217;épines et son cousin le <a href="http://fr.wikipedia.org/wiki/Diodon">poisson-hérisson</a> (porcupinefish) qui lui en a. Un autre nom du blowfish est pufferfish, d&#8217;où le nom Puffy.</p>
<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/05/openbsd_3heads_100.png" alt="OpenBSD Head" />Puffy est venu remplacer un daemon bsd classique (avec un halo), mais il est en fait le logo de plusieurs projets : OpenSSH, OpenNTPD, OpenBGPD, OpenCVS &#8230; et OpenBSD bien sûr.<br />Il apparait aussi dans de <a href="http://www.openbsd.org/older.html">nombreux posters</a> (et <a href="http://www.openbsd.org/lyrics.html" >fresques</a>), notamment à chaque nouvelle release d&#8217;OpenBSD (accompagné d&#8217;une chanson d&#8217;ailleurs).</p>
<table style="width: 100%;text-align:center">
<caption>Logos des projets OpenBSD (cliquez pour voir le logo en entier)</caption>
<tr>
<td><a href="/wp-content/uploads/2010/05/openssh.png" title="OpenSSH" rel="lightbox.2622"><img src="/wp-content/uploads/2010/05/openssh_120.png" alt="OpenSSH" title="OpenSSH" /></a></td>
<td><a href="/wp-content/uploads/2010/05/openbgpd.png" title="OpenBGPD" rel="lightbox.2622"><img src="/wp-content/uploads/2010/05/openbgpd_120.png" alt="OpenBGPD" title="OpenBGPD" /></a></td>
<td><a href="/wp-content/uploads/2010/05/openntpd.jpg" title="OpenNTPD" rel="lightbox.2622"><img src="/wp-content/uploads/2010/05/openntpd_120.png" alt="OpenNTPD" title="OpenNTPD" /></a></td>
</tr>
<tr>
<td>OpenSSH</td>
<td>OpenBGPD</td>
<td>OpenNTPD</td>
</tr>
<tr>
<td colspan="2"><a href="/wp-content/uploads/2010/05/opencvs.png" title="OpenCVS" rel="lightbox.2622"><img src="/wp-content/uploads/2010/05/opencvs_120.png" alt="OpenCVS" title="OpenCVS" /></a></td>
<td><a href="/wp-content/uploads/2010/05/openbsd47.jpg" title="OpenBSD 4.7" rel="lightbox.2622"><img src="/wp-content/uploads/2010/05/openbsd47_120.png" alt="OpenBSD 4.7" title="OpenBSD 4.7" /></a></td>
</tr>
<tr>
<td colspan="2">OpenCVS</td>
<td>OpenBSD 4.7</td>
</tr>
</table>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : -</td>
<td style="text-align: right"><strong>Apparition</strong> : 1999</td>
</tr>
<tr>
<td><strong>Surnom</strong> : Puffy</td>
<td style="text-align: right"><strong>Design</strong> : -</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://www.gentoo.org"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/06/gentoo_100.png" alt="Gentoo" /></a>Gentoo &#8211; La Vache</p>
</h3>
<p>Un voile de mystère entoure l&#8217;origine de Larry la Vache (Larry the Cow), il <a href="http://www.realgeek.com/forums/gentoo-dev-heritage-440275-2.html">aurait</a> été &#8220;inventé&#8221; par <a href="http://fr.wikipedia.org/wiki/Daniel_Robbins">Daniel Robbins</a>, le créateur de Gentoo, un peu par hasard.</p>
<p><a href="/wp-content/uploads/2010/06/gentoo_poster.jpg" title="Poster Gentoo où apparait Larry the Cow" rel="lightbox.2622"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/06/gentoo_poster_100.png" alt="Poster Gentoo" title="Poster Gentoo où apparait Larry the Cow" /></a>En fait l&#8217;image de la tête de vache viens d&#8217;une <a href="http://www.fonthead.com/fonts/Font-Heads">obscure font</a> et est bizarrement assignée à la lettre S.<br/>Daniel aurait utilisé cette image pour un poster ventant les mérites de Gentoo dans lequel le nom de la mascotte apparait.</p>
<p>Depuis il y a eu de nombreux débat sur le sexe réel de Larry, est-ce une vache, un taureau, un transsexuel ? Il y a même un <a href="http://bugs.gentoo.org/show_bug.cgi?id=27727">bug</a> pour cela sur bugs.gentoo.org. Il s&#8217;agirait en fait d&#8217;un taureau, &#8220;Cow&#8221; ne faisant référence qu&#8217;à son espèce.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : -</td>
<td style="text-align: right"><strong>Apparition</strong> : -</td>
</tr>
<tr>
<td><strong>Surnom</strong> : Larry the Cow</td>
<td style="text-align: right"><strong>Design</strong> : The Fonthead Design Inc.</td>
</tr>
</tbody>
</table>
<h3>En bref</h3>
<table style="text-align: center">
<tr>
<td><a href="http://developer.apple.com/opensource/"><img src="/wp-content/uploads/2010/05/darwin_80.png" alt="Logo Darwin" /></a></td>
<td>
<h4>Darwin &#8211; L&#8217;ornithorynque</h4>
<p>Hexley la mascotte du cœur open source de Mac OS X a été choisi lors d&#8217;un concours en 2000, il porte un casque et un trident pour rappeler ses origines bsdiènes. Son nom aurait dû être H<em>u</em>xley, d&#8217;apres <a href="http://fr.wikipedia.org/wiki/Thomas_Henry_Huxley">un biologiste</a> fan de <a href="http://fr.wikipedia.org/wiki/Charles_Darwin">Charles Darwin</a>, mais l&#8217;erreur a été découverte trop tard et Hexley est resté.</p>
</td>
</tr>
<tr>
<td><a href="http://www.opensuse.org"><img src="/wp-content/uploads/2010/05/suse_80.png" alt="Logo SUSE" /></a></td>
<td>
<h4>SUSE &#8211; Le Caméléon</h4>
<p>Suite à un concours, la mascotte, un <a href="http://fr.wikipedia.org/wiki/Chamaeleo_calyptratus">caméléon casqué</a>, fut surnommée Geeko, un mix de Geek et Gecko (lézard en anglais).</p>
</td>
</tr>
<tr>
<td><a href="http://www.dragonflybsd.org"><img src="/wp-content/uploads/2010/05/dragonflybsd_80.png" alt="Logo DragonFlyBSD" /></a></td>
<td>
<h4>DragonFlyBSD &#8211; La libellule</h4>
<p>Lorsque <a href="http://en.wikipedia.org/wiki/Matthew_Dillon_%28computer_scientist%29">Matthew Dillon</a>, créateur de l&#8217;OS, cherchais un nom pour celui-ci, une libellule (dragonfly) se posa dans son jardin.<br />Le nom de la mascotte est Fred.</p>
</td>
</tr>
<tr>
<td><a href="http://plan9.bell-labs.com/plan9"><img src="/wp-content/uploads/2010/05/plan9_80.png" alt="Logo Plan9" /></a></td>
<td>
<h4>Plan 9 &#8211; Le Lapin</h4>
<p><a href="http://fr.wikipedia.org/wiki/Ed_Wood">Ed Wood</a>, déjà coupable de <a href="http://fr.wikipedia.org/wiki/Plan_9_from_Outer_Space">Plan 9 From Outer Space</a> qui a donné son nom à l&#8217;OS, est aussi responsable, avec <a href="http://fr.wikipedia.org/wiki/Glen_or_Glenda%3F">Glen or Glenda</a>, du nom de la lapine : Glenda.<br />Cette mascotte et celle de Google Go ont été dessinées par la femme de <a href="http://fr.wikipedia.org/wiki/Rob_Pike">Rob Pike</a> qui a travaillé sur les deux projets.</p>
</td>
</tr>
<tr>
<td><a href="http://www.minix3.org"><img src="/wp-content/uploads/2010/05/minix_80.png" alt="Logo Minix" /></a></td>
<td>
<h4>Minix &#8211; Le Raton-Laveur</h4>
<p>L&#8217;OS d&#8217;<a href="http://fr.wikipedia.org/wiki/Tanenbaum">Andy Tanenbaum</a> a pour mascotte un raton-laveur, car comme vous le savez tous (faites semblant), c&#8217;est un animal qui mange des insectes (bugs).</p>
</td>
</tr>
<tr>
<td><a href="http://www.freedos.org"><img src="/wp-content/uploads/2010/05/freedos_80.png" alt="Logo FreeDOS" /></a></td>
<td>
<h4>FreeDOS &#8211; Le Poisson</h4>
<p>D&#8217;espèce indéterminée le poisson de FreeDOS est arrivé un peu par hasard lorsque les devs cherchaient une mascotte pour leur projet. Un des devs voulais un lémurien, mais il était bien le seul, puis quelqu&#8217;un a parlé de poisson et Blinky est né.</p>
</td>
</tr>
</table>
<p><!--nextpage--></p>
<p><!--pagetitle:Web/Mails/IM--></p>
<h3>
<p style="text-align: center"><a href="http://www.firefox.com"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/06/firefox_100.png" alt="Firefox" /></a>Firefox &#8211; Le Renard Roux</p>
</h3>
<p>Au premier abord, en voyant le logo, on se dit que c&#8217;est un <a href="http://fr.wikipedia.org/wiki/Renard_roux">renard</a>, et puis inévitablement un petit malin vous dis que c&#8217;est en fait un <a href="http://fr.wikipedia.org/wiki/Panda_roux">panda roux</a>, car c&#8217;est ce que le mot <em>firefox</em> désigne en anglais.<br/>Et bien pas du tout, c&#8217;est bien un renard et ça vous apprendra à écouter les petits malins. En effet les designers du logo trouvaient que le panda roux, ça faisais <a href="http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox#Branding_and_visual_identity">pas assez &#8220;cool&#8221;</a>, et du coup, rusés comme ils sont, ils ont pris un <em>fox</em> classique.</p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/06/firefox_phoenix_80.png" alt="Logo original" />Mais le renard n&#8217;est pas la mascotte de base du projet, car firefox a changé plusieurs fois de nom.<br/>À sa création il s&#8217;appelait <em>Phoenix</em> et avait une mascotte correspondante (cf à gauche), mais ce nom était déjà utilisé par une <a href="http://fr.wikipedia.org/wiki/Phoenix_Technologies">boite qui fait des BIOS</a>. Il fut alors renommé <em>Firebird</em>, qui est juste un autre nom du phénix, mais là encore, déjà <a href="http://fr.wikipedia.org/wiki/Firebird_%28SGBDR%29">utilisé</a>. Il prit alors son nom final : <em>Firefox</em>, et le logo que l&#8217;on connait aujourd&#8217;hui. Ouf !</p>
<p><a href="http://wiki.debian.org/Iceweasel"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/06/iceweasel_80.png" alt="Iceweasel (Debian)" /></a><a href="http://www.gnu.org/software/gnuzilla"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/06/icecat_80.png" alt="Icecat (GNU)" /></a>Mozilla se réservant le droit de distribuer FIrefox sous ce nom et avec ce logo, des noms et logos alternatifs, libres, sont apparus pour palier à ce problème. À gauche Iceweasel (belette de glace) de debian, à droite Icecat (chat de glace) de GNU.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : -</td>
<td style="text-align: right"><strong>Apparition</strong> : 2004</td>
</tr>
<tr>
<td><strong>Surnom</strong> : -</td>
<td style="text-align: right"><strong>Design</strong> : Daniel Burka/Stephen Desroches/Jon Hicks</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://www.mozilla.org/projects/thunderbird"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/06/thunderbird_100.png" alt="Thunderbird" /></a>Thunderbird &#8211; L&#8217;Oiseau-tonnerre</p>
</h3>
<p>Un Thunderbird est un <a href="http://fr.wikipedia.org/wiki/Oiseau-tonnerre">oiseau légendaire</a> de la culture indienne d&#8217;Amérique du Nord, un piaf qu&#8217;il ne fallait pas faire chier apparemment car il tirait des éclairs avec ses yeux.<br/>Au tout début, le projet avait un autre nom d&#8217;animal mythique : Minotaur, mais ce fut un flop. Un peu plus tard, quand Firebird (futur Firefox) commença à bien marcher, le projet fut relancé sous son nom actuel en intégrant certaines avancés de Firebird.</p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/06/thunderbird_old_80.png" alt="Ancien logo Thunderbird" /><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/06/icedove_80.png" alt="Logo Icedove" />Firebird et Thunderbird, ça sonnais bien à l&#8217;époque, une équipe aviaire de winners. À tel point qu&#8217;ils partageaient même leur logo, rouge pour <em>Fire</em>bird et bleu pour <em>Thunder</em>bird (voir à gauche). Comme pour Firefox, debian utilise un nom et un logo alternatif : Icedove (colombe de glace, à droite). Il n&#8217;y a en revanche pas d&#8217;alternatif GNU.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : -</td>
<td style="text-align: right"><strong>Apparition</strong> : 2004</td>
</tr>
<tr>
<td><strong>Surnom</strong> : -</td>
<td style="text-align: right"><strong>Design</strong> : Stephen Desroches/Jon Hicks</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://www.seamonkey-project.org"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/06/seamonkey_100.png" alt="Seamonkey" /></a>Seamonkey &#8211; L&#8217;Artemia</p>
</h3>
<p>Quoi ? Vous ne savez pas ce qu&#8217;est un <a href="http://fr.wikipedia.org/wiki/Artemia_salina">artemia</a> ? Ah la la &#8230; bon ok moi non plus, mais heureusement il y a wikipedia ! C&#8217;est donc un petit crustacé dont les oeufs ont la particularité de pouvoir survivre des années en hibernation, un peu comme ceux d&#8217;<a href="http://fr.wikipedia.org/wiki/X%C3%A9nomorphe_%28alien%29">Alien</a> mais en moins violent pour votre cage thoracique.</p>
<p>Pour en revenir à Seamonkey, c&#8217;était le nom de code de la <a href="http://fr.wikipedia.org/wiki/Suite_Mozilla">Suite Mozilla</a> (celle avec browser + mail + éditeur html). Quand celle-ci fut abandonnée par Mozilla au profit de Firefox/Thunderbird, quelques courageux reprirent l&#8217;affaire avec le nouveau nom.</p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/06/iceape_80.png" alt="Iceape" />Tout comme pour Firefox et Thunderbird, pour des raisons de droit, debian utilise un nom et un logo alternatif : Iceape (singe de glace, à gauche). Ice<em>ape</em>, sea<em>monkey</em>, jeu de mot !</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : -</td>
<td style="text-align: right"><strong>Apparition</strong> : 2005</td>
</tr>
<tr>
<td><strong>Surnom</strong> : -</td>
<td style="text-align: right"><strong>Design</strong> : Alex Butin</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://www.mozilla.org"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/06/mozilla_100.png" alt="Mozilla" /></a>Mozilla &#8211; Le Tyrannosaure</p>
</h3>
<p>Pour connaitre l&#8217;origine de cette mascotte, il faut remonter très loin en arrière. Au début il n&#8217;y avait qu&#8217;un énorme nuage de gaz qui s&#8217;est agrégé pour former le s&#8230; hum &#8230; peut être pas aussi loin.</p>
<p><a href="/wp-content/uploads/2010/06/mozilla_bbq.jpg" title="Mascotte de Netscape" rel="lightbox.2622"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/06/mozilla_bbq_100.png" alt="Mozilla Netscape" title="Mascotte de Netscape"/></a>Au début donc, en 1993, il y avait le navigateur <a href="http://fr.wikipedia.org/wiki/Mosaic">Mosaic</a>, un des premiers navigateurs, qui faisait un tabac. Quelques-uns de ses créateurs décidèrent alors de faire un nouveau navigateur encore mieux, Netscape, dont le nom de code était Mozilla, un mix de <em>Mosaic Killer</em> et <em>Gozilla</em>, et dont la mascotte était un sympathique lézard vert et violet dénommé Mozilla. Le choix du lézard faisant là encore référence à Gozilla.</p>
<p><a href="/wp-content/uploads/2010/06/mozilla_soviet.png" title="Poster Mozilla dans le style des posters Soviétique" rel="lightbox.2622"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/06/mozilla_soviet_80.png" alt="Poster Mozilla" title="Poster Mozilla dans le style des posters Soviétique"/></a>En 1998 lorsque Netscape libéra le code du navigateur, un projet de navigateur open-source fut créé avec le nom de code de son ancêtre : Mozilla. La mascotte du nouveau projet, un tyrannosaure, est évidemment inspirée de celle de Netscape et (encore) de Gozilla. À l&#8217;époque le &#8220;ton graphique&#8221; de Mozilla était très &#8220;Soviétique&#8221;, ce qui explique la couleur rouge de la mascotte.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : the Mozilla lizard</td>
<td style="text-align: right"><strong>Apparition</strong> : 1998</td>
</tr>
<tr>
<td><strong>Surnom</strong> : Mozilla</td>
<td style="text-align: right"><strong>Design</strong> : Shepard Fairey</td>
</tr>
</tbody>
</table>
<h3>En bref</h3>
<table style="text-align: center">
<tr>
<td><a href="http://www.mozilla.org/projects/calendar/sunbird"><img src="/wp-content/uploads/2010/06/sunbird_80.png" alt="Sunbird" /></a></td>
<td>
<h4>Sunbird &#8211; Le Nectariniidé</h4>
<p>Mozilla a choisi de rester dans le thème des oiseaux (Thunder<em>bird</em>, Fire<em>bird</em>) pour nommer son calendrier. Les <a href="http://fr.wikipedia.org/wiki/Nectariniidae">nectariniidés</a> sont de petits oiseaux qui se nourrissent, vous l&#8217;aurez deviné, de nectar. Sous debian il s&#8217;appelle Iceowl (Hibou de glace) mais n&#8217;a pas de logo.</p>
</td>
</tr>
<tr>
<td><a href="http://pidgin.im"><img src="/wp-content/uploads/2010/06/pidgin_80.png" alt="Pidgin" /></a></td>
<td>
<h4>Pidgin &#8211; Le Pigeon</h4>
<p>Pidgin désigne une <a href="http://fr.wikipedia.org/wiki/Pidgin">sorte de baragouin</a> basé sur de vraies langues, ce qui colle bien avec un client IM. En anglais <em>pidgin</em> sonne exactement comme <em>pigeon</em>, d&#8217;où la mascotte, sa couleur violette vient de l&#8217;utilisation de la libpurple qui gère les divers protocoles IM.</p>
</td>
</tr>
<tr>
<td><a href="http://adium.im"><img src="/wp-content/uploads/2010/06/adium_80.png" alt="Adium" /></a></td>
<td>
<h4>Adium &#8211; Le Canard</h4>
<p>Au départ c&#8217;était un pigeon voyageur, rien de bien original pour un client IM, puis le logo a bizarrement évolué en canard vert avec le temps. Son nom est Adiumy</p>
</td>
</tr>
</table>
<p><!--nextpage--></p>
<p><!--pagetitle:Autre/Misc--></p>
<h3>
<p style="text-align: center"><a href="http://www.kde.org"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/06/kde_100.png" alt="KDE" /></a>KDE &#8211; Le Dragon</p>
</h3>
<p><a href="/wp-content/uploads/2010/06/kde_kandalf.png" title="Kandalf le Sorcier" rel="lightbox.2622"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/06/kde_kandalf_80.png" alt="Kandalf" title="Kandalf le Sorcier" /></a>KDE, qui a pour habitude de tout faire commencer par un K, avait pour mascotte originale Kandalf le Sorcier, qui distillait sa sagesse en donnant des trucs et astuces au lancement de KDE.<br/>Mais Kandalf ressemblait un peu trop au Gandalf de Tolkien et fut donc remplacé par Konqi le Dragon à la sortie de KDE 3.0. Le dragon apparaissait déjà dans les versions précédentes mais n&#8217;était pas la mascotte.</p>
<p><a href="/wp-content/uploads/2010/06/kde_katie.jpg" title="Katie, la petite amie de Konqi" rel="lightbox.2622"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/06/kde_katie_80.png" alt="Katie" title="Katie, la petite amie de Konqi" /></a>Konqi tire son nom de <em>Konque</em>ror, le navigateur de KDE, tout simplement. Et chose rare dans ce monde de geeks, il a une petite amie : Katie, qui est en fait la mascotte du groupe <a href="http://community.kde.org/KDE_Women">KDE Women</a>.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : the KDE Dragon</td>
<td style="text-align: right"><strong>Apparition</strong> : 1999</td>
</tr>
<tr>
<td><strong>Surnom</strong> : Konqi</td>
<td style="text-align: right"><strong>Design</strong> : Stefan Spatz</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://www.blender.org"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/06/blender_100.png" alt="Blender" /></a>Blender &#8211; Le Chimpanzé</p>
</h3>
<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/06/utah_teapot_80.png" alt="Théière de l'Utah" />Vous connaissez surement la <a href="http://fr.wikipedia.org/wiki/Utah_teapot">Théière de l&#8217;Utah</a> qu&#8217;on utilise pour illustrer un effet ou une technique 3D quelconque, eh bien pour Blender c&#8217;est une tête de chimpanzé qui est utilisée.<br/>Suzanne, c&#8217;est son nom, est apparu comme <a href="http://fr.wikipedia.org/wiki/Easter_egg">easter-egg</a> dans la dernière version commerciale de Blender, juste avant qu&#8217;il ne passe en GPL, et elle est depuis devenue la mascotte. Elle doit son nom au film <a href="http://fr.wikipedia.org/wiki/Jay_and_Silent_Bob_Strike_Back">Jay et Bob contre-attaquent</a> dans lequel une orang-outan porte ce nom.</p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/06/blender_logo_80.png" alt="Logo Blender" />Bonus: et le logo de Blender, c&#8217;est un animal ? Presque ! C&#8217;est dans le monde du vivant on va dire. C&#8217;est un mix d&#8217;une main (les 3 &#8220;doigts&#8221; qui dépassent) et d&#8217;un œil (bleu) qui symbolise la <em>hand-eye coordination</em>, que l&#8217;on pourrait traduire par <em>dextérité</em>, nécessaire à l&#8217;artiste.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : -</td>
<td style="text-align: right"><strong>Apparition</strong> : 2002</td>
</tr>
<tr>
<td><strong>Surnom</strong> : Suzanne</td>
<td style="text-align: right"><strong>Design</strong> : Willem-Paul van Overbruggen</td>
</tr>
</tbody>
</table>
<h3>
<p style="text-align: center"><a href="http://fr.wikipedia.org"><img class="alignnone" style="vertical-align: middle" src="/wp-content/uploads/2010/06/wikipedia_100.png" alt="Wikipedia" /></a>Wikipedia &#8211; <sup style="color:#002bb8;">[choix nécessaire]</sup></p>
</h3>
<p>En 2002 un concours fut lancé pour trouver une mascotte à Wikipedia, deux mascottes sont sorties du lot mais avec des scores trop proches pour les departager. À ce jour il n&#8217;y a toujours pas de mascotte officielle.</p>
<p><a href="/wp-content/uploads/2010/06/wikipedia_miwiki.png" title="Miwiki la fourmi" rel="lightbox.2622"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   class="alignright" src="/wp-content/uploads/2010/06/wikipedia_miwiki_80.png" alt="Miwiki" title="Miwiki la fourmi" /></a>Une des deux propositions de mascottes arrivée en tête est Miwiki, la fourmi coupe-feuille. Elle symbolise bien l&#8217;aspect collectiviste de Wikipedia mais certains ne la trouvaient pas assez individualiste (à la différence des fourmis, les contributeurs Wikipedia sont tous uniques et différents).</p>
<p><a href="/wp-content/uploads/2010/06/wikipedia_wikipede.png" title="Le Wikipede" rel="lightbox.2622"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft" src="/wp-content/uploads/2010/06/wikipedia_wikipede_80.png" alt="Wikipede" title="Le Wikipede" /></a>L&#8217;autre mascotte est un mille-pattes: le Wikipede (mille-pattes se dit centipede en anglais). On le voit en train de multi-tasker avec ses fameuses pattes dans une bibliothèque. Mais les mille-pattes n&#8217;ont pas une image très positive, voir même carrément négative.</p>
<table style="width: 100%">
<tbody>
<tr>
<td><strong>Nom (VO)</strong> : -</td>
<td style="text-align: right"><strong>Apparition</strong> : 2002</td>
</tr>
<tr>
<td><strong>Surnom</strong> : -</td>
<td style="text-align: right"><strong>Design</strong> : -</td>
</tr>
</tbody>
</table>
<h3>En bref</h3>
<table style="text-align: center">
<tr>
<td><a href="http://www.gimp.org"><img src="/wp-content/uploads/2010/06/gimp_80.png" alt="GIMP" /></a></td>
<td>
<h4>GIMP &#8211; Le &#8230; Gimp</h4>
<p>Dénommé Wilber, la mascotte de GIMP est un gimp, mais qu&#8217;est ce qu&#8217;un gimp me direz vous ?<br/>Un gimp un animal de la même espèce que Wilber. Exemple de gimp célèbre : Wilber.</p>
</td>
</tr>
<tr>
<td><a href="http://www.xfce.org"><img src="/wp-content/uploads/2010/06/xfce_80.png" alt="Xfce" /></a></td>
<td>
<h4>Xfce &#8211; La Souris</h4>
<p>La souris bondissante du logo représente la légèreté et la rapidité de Xfce. Probablement à comparer avec le poids du dragon KDE ainsi qu&#8217;avec les lourds &#8220;pas&#8221; de Gnome.</p>
</td>
</tr>
<tr>
<td><a href="http://www.xen.org"><img src="/wp-content/uploads/2010/06/xen_80.png" alt="Xen" /></a></td>
<td>
<h4>Xen &#8211; Le Panda</h4>
<p>Le panda en habit de moine bouddhiste fait évidemment référence au mot <em>zen</em>, très proche en prononciation de <em>Xen</em>.</p>
</td>
</tr>
<tr>
<td><a href="http://www.kame.net"><img src="/wp-content/uploads/2010/06/kame_80.png" alt="KAME" /></a></td>
<td>
<h4>KAME &#8211; La Tortue</h4>
<p>KAME était un projet pour implémenter l&#8217;ipv6 et IPsec dans les *BSD. Une mission terminée avec succès il y a un moment mais le site web est connu pour sa tortue qui s&#8217;anime quand on le visite en ipv6. Kame veut dire tortue en japonais.</p>
</td>
</tr>
</table>
<p><!--nextpage--></p>
<p><!--pagetitle:Logos en Vrac--></p>
<p>Rangé par ordre alphabetique.</p>
<table style="text-align: center;width: 100%">
<tr>
<td><a href="http://amarok.kde.org"><img src="/wp-content/uploads/2010/06/amarok_80.png" alt="Amarok" /></a></td>
<td><a href="http://www.backtrack-linux.org"><img src="/wp-content/uploads/2010/06/backtrack_80.png" alt="BackTrack" /></a></td>
<td><a href="http://www.bacula.org"><img src="/wp-content/uploads/2010/06/bacula_80.png" alt="Bacula" /></a></td>
</tr>
<tr>
<td>
<h5>Amarok &#8211; <a href="http://fr.wikipedia.org/wiki/Amarok_%28mythologie%29">Esprit de Loup</a></h5>
<p>Lecteur Multimedia</td>
<td>
<h5>Backtrack &#8211; Dragon</h5>
<p>Distrib Linux sécurité</td>
<td>
<h5>Bacula &#8211; Chauve-souris</h5>
<p>Backup</td>
</tr>
<tr>
<td><a href="http://beagle-project.org"><img src="/wp-content/uploads/2010/06/beagle_80.png" alt="Beagle" /></a></td>
<td><a href="http://www.bitlbee.org"><img src="/wp-content/uploads/2010/06/bitlbee_80.png" alt="BitlBee" /></a></td>
<td><a href="http://bluefish.openoffice.nl"><img src="/wp-content/uploads/2010/06/bluefish_80.png" alt="Bluefish" /></a></td>
</tr>
<tr>
<td>
<h5>Beagle &#8211; <a href="http://fr.wikipedia.org/wiki/Beagle">Beagle</a></h5>
<p>Indexeur de fichiers</td>
<td>
<h5>BitlBee &#8211; Abeille</h5>
<p>Passerelle IRC/IM</td>
<td>
<h5>Bluefish &#8211; <a href="http://fr.wikipedia.org/wiki/Tassergal">Tassergal</a></h5>
<p>IDE</td>
</tr>
<tr>
<td><a href="http://www.bugzilla.org"><img src="/wp-content/uploads/2010/06/bugzilla_80.png" alt="Bugzilla" /></a></td>
<td><a href="http://cairographics.org"><img src="/wp-content/uploads/2010/06/cairo_80.png" alt="Cairo" /></a></td>
<td><a href="http://camelbones.sourceforge.net"><img src="/wp-content/uploads/2010/06/camelbones_80.png" alt="CamelBones" /></a></td>
</tr>
<tr>
<td>
<h5>Bugzilla &#8211; Insecte (bug)</h5>
<p>Suivi de bug</td>
<td>
<h5>Cairo &#8211; Bousier sacré</h5>
<p>Librairie Graphique</td>
<td>
<h5>CamelBones &#8211; Dromadaire Mort</a></h5>
<p>Bindings Perl pour Objective-C</td>
</tr>
<tr>
<td><a href="http://caml.inria.fr"><img src="/wp-content/uploads/2010/05/caml_80.png" alt="Caml" /></a></td>
<td><a href="http://www.capros.org"><img src="/wp-content/uploads/2010/05/capros_80.png" alt="CapROS" /></a></td>
<td><a href="http://www.dragonplayer.net"><img src="/wp-content/uploads/2010/06/dragonplayer_80.png" alt="Dragon Player" /></a></td>
</tr>
<tr>
<td>
<h5>Caml &#8211; Dromadaire</h5>
<p>Langage</td>
<td>
<h5>CapROS &#8211; Ours Blanc</h5>
<p>Capability based OS</td>
<td>
<h5>Dragon Player &#8211; Dragon</h5>
<p>Lecteur Multimédia</td>
</tr>
<tr>
<td><a href="http://www.emule-project.net"><img src="/wp-content/uploads/2010/06/emule_80.png" alt="eMule" /></a></td>
<td><a href="http://felix-lang.org"><img src="/wp-content/uploads/2010/05/felix_80.png" alt="Felix" /></a></td>
<td><a href="http://getfirebug.com"><img src="/wp-content/uploads/2010/06/firebug_80.png" alt="Firebug" /></a></td>
</tr>
<tr>
<td>
<h5>eMule &#8211; Mulet</h5>
<p>Pirate2Pirate</td>
<td>
<h5>Felix &#8211; Chat</h5>
<p>Langage</td>
<td>
<h5>Firebug &#8211; <a href="http://fr.wikipedia.org/wiki/Gendarme_%28insecte%29">Gendarme</a></h5>
<p>Plugin Firefox pour dev web</td>
</tr>
<tr>
<td><a href="http://fireftp.mozdev.org"><img src="/wp-content/uploads/2010/06/fireftp_80.png" alt="FireFTP" /></a></td>
<td><a href="http://freemind.sourceforge.net"><img src="/wp-content/uploads/2010/06/freemind_80.png" alt="Freemind" /></a></td>
<td><a href="http://rsug.itd.umich.edu/software/fugu"><img src="/wp-content/uploads/2010/06/fugu_80.png" alt="Fugu" /></a></td>
</tr>
<tr>
<td>
<h5>FireFTP &#8211; Hippocampe </h5>
<p>Client FTP</td>
<td>
<h5>Freemind &#8211; Papillon</h5>
<p>Gestion de Projet</td>
<td>
<h5>Fugu &#8211; <a href="http://fr.wikipedia.org/wiki/Fugu">Fugu</a></h5>
<p>SFTP pour Mac</td>
</tr>
<tr>
<td><a href="http://gambas.sourceforge.net"><img src="/wp-content/uploads/2010/05/gambas_80.png" alt="Gambas" /></a></td>
<td><a href="http://gcc.gnu.org"><img src="/wp-content/uploads/2010/06/gcc_80.png" alt="GCC" /></a></td>
<td><a href="http://hadoop.apache.org"><img src="/wp-content/uploads/2010/06/hadoop_80.png" alt="Hadoop" /></a></td>
</tr>
<tr>
<td>
<h5>Gambas &#8211; Crevette</h5>
<p>VB-like</td>
<td>
<h5>GCC &#8211; Gnou</h5>
<p>Compilateur</td>
<td>
<h5>Hadoop &#8211; Éléphant</h5>
<p>Framework Java</td>
</tr>
<tr>
<td><a href="http://ichthux.com"><img src="/wp-content/uploads/2010/06/ichthux_80.png" alt="Ichthux" /></a></td>
<td><a href="http://jackrabbit.apache.org"><img src="/wp-content/uploads/2010/05/jackrabbit_80.png" alt="Jackrabbit" /></a></td>
<td><a href="http://l4ka.org"><img src="/wp-content/uploads/2010/05/l4ka_80.png" alt="L4KA" /></a></td>
</tr>
<tr>
<td>
<h5>Ichthux &#8211; Poisson de Jésus</h5>
<p>Distrib Linux pour Chrétiens</td>
<td>
<h5>Jackrabbit &#8211; Lapin</h5>
<p>Content Repository</td>
<td>
<h5>L4KA &#8211; Ecureuil</h5>
<p>Microkernel</td>
</tr>
<tr>
<td><a href="http://www.latex-project.org"><img src="/wp-content/uploads/2010/06/latex_80.png" alt="LaTeX" /></a></td>
<td><a href="http://www.mantisbt.org"><img src="/wp-content/uploads/2010/06/mantis_80.png" alt="Mantis" /></a></td>
<td><a href="https://www.mirbsd.org"><img src="/wp-content/uploads/2010/06/miros_bsd_80.png" alt="MirOS BSD" /></a></td>
</tr>
<tr>
<td>
<h5>LaTeX &#8211; Lion</a></h5>
<p>Composition de documents</td>
<td>
<h5>Mantis &#8211; Mante Religieuse</h5>
<p>Suivi de bug</td>
<td>
<h5>MirOS BSD &#8211; Daemon</h5>
<p>Fork OpenBSD</td>
</tr>
<tr>
<td><a href="http://www.monotone.ca"><img src="/wp-content/uploads/2010/06/monotone_80.png" alt="Monotone" /></a></td>
<td><a href="http://www.mutt.org"><img src="/wp-content/uploads/2010/06/mutt_80.png" alt="Mutt" /></a></td>
<td><a href="http://live.gnome.org/Nautilus"><img src="/wp-content/uploads/2010/06/nautilus_80.png" alt="Nautilus" /></a></td>
</tr>
<tr>
<td>
<h5>Monotone &#8211; Rat</h5>
<p>Gestionnaire de versions</td>
<td>
<h5>Mutt &#8211; Chien</h5>
<p>Client Mail</td>
<td>
<h5>Nautilus &#8211; Nautile</h5>
<p>Gestionnaire de fichiers</td>
</tr>
<tr>
<td><a href="http://www.nexenta.org"><img src="/wp-content/uploads/2010/05/nexenta_80.png" alt="Nexenta" /></a></td>
<td><a href="http://www.ogre3d.org"><img src="/wp-content/uploads/2010/06/ogre_80.png" alt="OGRE" /></a></td>
<td><a href="http://www.openoffice.org"><img src="/wp-content/uploads/2010/06/ooo_80.png" alt="OpenOffice.org" /></a></td>
</tr>
<tr>
<td>
<h5>Nexenta &#8211; Giraffe</h5>
<p>GNU/Solaris OS</td>
<td>
<h5>OGRE &#8211; Ogre</h5>
<p>Moteur 3D</td>
<td>
<h5>OpenOffice &#8211; Mouettes</h5>
<p>Suite Bureautique</td>
</tr>
<tr>
<td><a href="http://www.openswan.org"><img src="/wp-content/uploads/2010/06/openswan_80.png" alt="Openswan" /></a></td>
<td><a href="http://live.gnome.org/Orca"><img src="/wp-content/uploads/2010/06/orca_80.png" alt="Orca" /></a></td>
<td><a href="http://www.pardus.org.tr"><img src="/wp-content/uploads/2010/05/pardus_80.png" alt="Pardus" /></a></td>
</tr>
<tr>
<td>
<h5>Openswan &#8211; Cygne</h5>
<p>Pile IPsec</td>
<td>
<h5>Orca &#8211; Orque</h5>
<p>Truc pour myopes</td>
<td>
<h5>Pardus &#8211; Leopard</h5>
<p>Distrib Linux turque</td>
</tr>
<tr>
<td><a href="http://parrot.org"><img src="/wp-content/uploads/2010/06/parrot_80.png" alt="Parrot" /></a></td>
<td><a href="http://pike.ida.liu.se"><img src="/wp-content/uploads/2010/05/pike_80.png" alt="Pike" /></a></td>
<td><a href="http://www.postfix.org"><img src="/wp-content/uploads/2010/06/postfix_80.png" alt="Postfix" /></a></td>
</tr>
<tr>
<td>
<h5>Parrot &#8211; Perroquet</h5>
<p>Bytecode Compilalteur/VM</td>
<td>
<h5>Pike &#8211; Brochet</h5>
<p>Langage</td>
<td>
<h5>Postfix &#8211; Souris</h5>
<p>Serveur Mail</td>
</tr>
<tr>
<td><a href="http://puppylinux.org"><img src="/wp-content/uploads/2010/06/puppy_linux_80.png" alt="Puppy Linux" /></a></td>
<td><a href="http://www.nongnu.org/ratpoison"><img src="/wp-content/uploads/2010/06/ratpoison_80.png" alt="Ratpoison" /></a></td>
<td><a href="http://www.rssowl.org"><img src="/wp-content/uploads/2010/06/rssowl_80.png" alt="RSSOwl" /></a></td>
</tr>
<tr>
<td>
<h5>Puppy Linux &#8211; Chiot</h5>
<p>Distrib Linux</td>
<td>
<h5>Ratpoison &#8211; Rat</h5>
<p>Window Manager</td>
<td>
<h5>RSSOwl &#8211; Hibou</h5>
<p>Agrégateur RSS</td>
</tr>
<tr>
<td><a href="http://sawfish.wikia.com"><img src="/wp-content/uploads/2010/06/sawfish_41.png" alt="Sawfish" /></a></td>
<td><a href="http://www.scilab.org"><img src="/wp-content/uploads/2010/05/scilab_80.png" alt="Scilab" /></a></td>
<td><a href="http://www.sendmail.org"><img src="/wp-content/uploads/2010/06/sendmail_50.png" alt="Sendmail" /></a></td>
</tr>
<tr>
<td>
<h5>Sawfish &#8211; Poisson-scie</h5>
<p>Window Manager</td>
<td>
<h5>Scilab &#8211; Macareux</h5>
<p>MATLAB-like</td>
<td>
<h5>Sendmail &#8211; Chauve-Souris</h5>
<p>Serveur Mail</td>
</tr>
<tr>
<td><a href="http://shiira.jp/en"><img src="/wp-content/uploads/2010/06/shiira_80.png" alt="Shiira" /></a></td>
<td><a href="http://sidux.com"><img src="/wp-content/uploads/2010/05/sidux_80.png" alt="sidux" /></a></td>
<td><a href="http://slitaz.org"><img src="/wp-content/uploads/2010/06/slitaz_80.png" alt="SliTaz" /></a></td>
</tr>
<tr>
<td>
<h5>Shiira &#8211; <a href="http://fr.wikipedia.org/wiki/Mahi-mahi">Coryphène</a></h5>
<p>Browser WebKit pour Mac</td>
<td>
<h5>sidux &#8211; Scorpion</h5>
<p>Distrib Linux</td>
<td>
<h5>SliTaz &#8211; Araignée</h5>
<p>Distrib Linux</td>
</tr>
<tr>
<td><a href="http://www.snort.org"><img src="/wp-content/uploads/2010/06/snort_80.png" alt="Snort" /></a></td>
<td><a href="http://www.speex.org"><img src="/wp-content/uploads/2010/06/speex_80.png" alt="Speex" /></a></td>
<td><a href="http://www.spip.net"><img src="/wp-content/uploads/2010/06/spip_80.png" alt="spip" /></a></td>
</tr>
<tr>
<td>
<h5>Snort &#8211; Cochon</h5>
<p>Détection d&#8217;intrusion</td>
<td>
<h5>Speex &#8211; Perroquet</h5>
<p>Codec Audio</td>
<td>
<h5>Spip &#8211; Écureuil volant</h5>
<p>CMS</td>
</tr>
<tr>
<td><a href="http://www.squid-cache.org"><img src="/wp-content/uploads/2010/06/squid_80.png" alt="Squid" /></a></td>
<td><a href="http://squirrelmail.org"><img src="/wp-content/uploads/2010/06/squirrelmail_80.png" alt="Squirrelmail" /></a></td>
<td><a href="http://www.acme.com/software/thttpd"><img src="/wp-content/uploads/2010/06/thttpd_80.png" alt="thttpd" /></a></td>
</tr>
<tr>
<td>
<h5>Squid &#8211; Calamar</h5>
<p>Proxy Web</td>
<td>
<h5>Squirrelmail &#8211; Écureuil</h5>
<p>Webmail</td>
<td>
<h5>thttpd &#8211; Chat</h5>
<p>Serveur web</td>
</tr>
<tr>
<td><a href="http://tomcat.apache.org"><img src="/wp-content/uploads/2010/06/tomcat_80.png" alt="Tomcat" /></a></td>
<td><a href="http://www.webgui.org"><img src="/wp-content/uploads/2010/06/webgui_80.png" alt="Webgui" /></a></td>
<td><a href="http://www.windowmaker.info"><img src="/wp-content/uploads/2010/06/window_maker_80.png" alt="Window Maker" /></a></td>
</tr>
<tr>
<td>
<h5>Tomcat &#8211; Chat</h5>
<p>Conteneur de servlets</td>
<td>
<h5>Webgui &#8211; Pieuvre</h5>
<p>CMS</td>
<td>
<h5>Window Maker &#8211; Panda</h5>
<p>Window Manager</td>
</tr>
<tr>
<td><a href="http://www.wireshark.org"><img src="/wp-content/uploads/2010/06/wireshark_80.png" alt="Wireshark" /></a></td>
<td><a href="http://www.workrave.org"><img src="/wp-content/uploads/2010/06/workrave_80.png" alt="Workrave" /></a></td>
<td><a href="http://xiph.org"><img src="/wp-content/uploads/2010/06/xiph_80.png" alt="Xiph" /></a></td>
</tr>
<tr>
<td>
<h5>Wireshark &#8211; Requin</h5>
<p>Packet sniffer</td>
<td>
<h5>Workrave &#8211; Mouton</h5>
<p>Soft de santé</td>
<td>
<h5>Xiph &#8211; Poisson</h5>
<p>Vorbis/Theora/etc</td>
</tr>
</table>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2009/08/19/echinus-wm/' rel='bookmark' title='Echinus, un WM, simplement.'>Echinus, un WM, simplement.</a></li>
<li><a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/' rel='bookmark' title='Filtrer ses mails ! Un cauchemard !'>Filtrer ses mails ! Un cauchemard !</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/SvNoQ_37FsI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/06/13/larche-des-mascotes-du-libre/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Eeegw – part III – Quality Of Service aka QOS</title>
		<link>http://geekfault.org/2010/05/24/eeegw-part-iii-quality-of-service-aka-qos/</link>
		<comments>http://geekfault.org/2010/05/24/eeegw-part-iii-quality-of-service-aka-qos/#comments</comments>
		<pubDate>Mon, 24 May 2010 15:53:13 +0000</pubDate>
		<dc:creator>bragon</dc:creator>
				<category><![CDATA[eeegw]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[QoS]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=2225</guid>
		<description><![CDATA[La Quality Of Service (QOS) , qualité de service en français, intervient principalement au niveau 3 du modèle OSI. Il faut donc placer ses scripts de QOS sur la passerelle de votre réseau, c&#8217;est la raison pour laquelle, mettre en place de la QOS sur la eeegw prend tout son sens. N&#8217;hésitez pas à revenir [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/' rel='bookmark' title='EeeGW : Créer soi-même une passerelle réseau'>EeeGW : Créer soi-même une passerelle réseau</a></li>
<li><a href='http://geekfault.org/2010/02/20/eeegw-ze-retour-du-detour-proxycache/' rel='bookmark' title='EeeGW &#8211; ZE retour du détour ! &#8211; Proxycache.'>EeeGW &#8211; ZE retour du détour ! &#8211; Proxycache.</a></li>
<li><a href='http://geekfault.org/2009/09/24/allocation-dadresses-ipv4-publiques-over-vpn/' rel='bookmark' title='Allocation d&#8217;adresses IPv4 publiques over VPN'>Allocation d&#8217;adresses IPv4 publiques over VPN</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><!--pagetitle: Introduction à la QOS --><br />
<a href="http://geekfault.org/2010/05/24/eeegw-part-iii-quality-of-service-aka-qos/qos/" rel="attachment wp-att-4812"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/05/QOS-251x300.png" alt="" title="QOS" width="151" height="200" class="alignleft size-medium wp-image-4812" /></a></p>
<p>La Quality Of Service (QOS) , qualité de service en français, intervient principalement au niveau 3 du modèle OSI.<br />
Il faut donc placer ses scripts de QOS sur la passerelle de votre réseau, c&#8217;est la raison pour laquelle, mettre en place de la QOS sur la <strong> eeegw </strong> prend tout son sens.</p>
<p>N&#8217;hésitez pas à revenir sur les précédents articles sur la eeegw :<br />
<a href="http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/">eeegw part I</a><br />
<a href="http://geekfault.org/2010/02/20/eeegw-ze-retour-du-detour-proxycache/">eeegw part II</a><br />
<!--more--><br />
Si vous avez besoin d&#8217;un rafraîchissement sur le concept, je vous oriente vers la page <a href="http://fr.wikipedia.org/wiki/Qualit%C3%A9_de_service">Qualité de service</a> de Wikipedia.</p>
<p>La partie qui clairement nous intéresse ici est décrite au chapitre Ordonnancement :<br />
<strong>L&#8217;ordonnancement désigne l&#8217;ensemble des méthodes visant à modifier l&#8217;ordre de départ des paquets, en remplacement de la règle du « premier arrivé, premier servi ».</strong></p>
<p>Une de ses applications les plus courantes consistera ainsi à donner priorité à certains types de trafic.</p>
<p>Grosso modo j&#8217;ai mis en place de la QOS sur ma eeegw car j&#8217;en avais marre que mes communications SIP (Téléphonie voir futur article :p) ne soient pas de bonne qualité, lors d&#8217;upload de pièces jointes via mon mailer ou lorsque j&#8217;avais besoin d&#8217;utiliser beaucoup d&#8217;upload en même temps qu&#8217;une communication téléphonique.</p>
<p><!--nextpage--><br />
<!--pagetitle: QOS Exemple1 : HTB --><br />
Voici mon tout premier script de QOS, ill date un peu et est loin de bien fonctionner <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Je vous le montre afin que vous voyez un peu à quoi on s&#8217;attaque en parlant de QOS :</p>
<h4> Script de QOS exemple1 basé sur HTB </h4>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash

#Constantes
LOCALNET=&quot;213.41.xx.xx/255.255.255.255&quot;
MARKPRIO1=&quot;1&quot;
MARKPRIO2=&quot;2&quot;
MARKPRIO3=&quot;3&quot;
MARKPRIO4=&quot;4&quot;
MARKPRIO5=&quot;5&quot;
MARKPRIO6=&quot;6&quot;
MARKPRIO7=&quot;7&quot;

IFACE=eth0

UPRATE=&quot;8mbit&quot;
DOWNRATE=&quot;0.8mbit&quot;

PRIORATE1=&quot;5mbit&quot;
PRIORATE2=&quot;3mbit&quot;
PRIORATE3=&quot;2mbit&quot;
PRIORATE4=&quot;0.5mbit&quot;

QUANTUM1=&quot;12187&quot;
QUANTUM2=&quot;8625&quot;
QUANTUM3=&quot;5062&quot;
QUANTUM4=&quot;1500&quot;

BURST1=&quot;1000k&quot;
BURST2=&quot;400k&quot;
BURST3=&quot;200k&quot;
BURST4=&quot;10k&quot;

CBURST1=&quot;300k&quot;
CBURST2=&quot;200k&quot;
CBURST3=&quot;10k&quot;
CBURST4=&quot;1k&quot;

iptables -t mangle -F OUTPUT
iptables -t mangle -F FORWARD

iptables -t mangle -A FORWARD -p icmp -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A OUTPUT -p icmp -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A INPUT -p icmp -j MARK --set-mark $MARKPRIO1

iptables -t mangle -A FORWARD -p tcp --dport 22 -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A INPUT -p tcp --dport 22 -j MARK --set-mark $MARKPRIO1

iptables -t mangle -A FORWARD -p tcp --dport 687 -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A OUTPUT -p tcp --dport 687 -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A INPUT -p tcp --dport 687 -j MARK --set-mark $MARKPRIO1

iptables -t mangle -A FORWARD -p udp --dport 687 -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A OUTPUT -p udp --dport 687 -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A INPUT -p udp --dport 687 -j MARK --set-mark $MARKPRIO1

iptables -t mangle -A FORWARD -p tcp --dport 5060 -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A OUTPUT -p tcp --dport 5060 -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A INPUT -p tcp --dport 5060 -j MARK --set-mark $MARKPRIO1

iptables -t mangle -A FORWARD -p udp --dport 5060 -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A OUTPUT -p udp --dport 5060 -j MARK --set-mark $MARKPRIO1
iptables -t mangle -A INPUT -p udp --dport 5060 -j MARK --set-mark $MARKPRIO1

iptables -t mangle -A FORWARD -p tcp --dport 25 -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark $MARKPRIO3

iptables -t mangle -A FORWARD -p tcp --dport 143 -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A OUTPUT -p tcp --dport 143 -j MARK --set-mark $MARKPRIO3

iptables -t mangle -A FORWARD -p tcp --dport 80 -j MARK --set-mark $MARKPRIO2
iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark $MARKPRIO2
iptables -t mangle -A INPUT -p tcp --dport 80 -j MARK --set-mark $MARKPRIO2

iptables -t mangle -A FORWARD -p tcp --dport 443 -j MARK --set-mark $MARKPRIO2
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark $MARKPRIO2
iptables -t mangle -A INPUT -p tcp --dport 443 -j MARK --set-mark $MARKPRIO2

iptables -t mangle -A FORWARD -p tcp --dport 21 -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A OUTPUT -p tcp --dport 21 -j MARK --set-mark $MARKPRIO3
iptables -t mangle -A INPUT -p tcp --dport 21 -j MARK --set-mark $MARKPRIO3

ifconfig $IFACE txqueuelen 128

tc qdisc add dev $IFACE root handle 1:0 htb default 103 r2q 1
tc class add dev $IFACE parent 1:0 classid 1:1 htb rate $UPRATE burst $BURST1 cburst $CBURST1

tc class add dev $IFACE parent 1:1 classid 1:101 htb rate $PRIORATE1 ceil $UPRATE quantum $QUANTUM1 burst $BURST1 cburst $CBURST1 prio 0
tc class add dev $IFACE parent 1:1 classid 1:102 htb rate $PRIORATE2 ceil $UPRATE quantum $QUANTUM2 burst $BURST2 cburst $CBURST2 prio 1
tc class add dev $IFACE parent 1:1 classid 1:103 htb rate $PRIORATE3 ceil $UPRATE quantum $QUANTUM3 burst $BURST3 cburst $CBURST3 prio 2
tc class add dev $IFACE parent 1:1 classid 1:104 htb rate $PRIORATE4 ceil $P2PRATE quantum $QUANTUM4 burst $BURST4 cburst $CBURST4 prio 3

tc filter add dev $IFACE parent 1:0 protocol ip prio 0 handle $MARKPRIO1 fw classid 1:101
tc filter add dev $IFACE parent 1:0 protocol ip prio 1 handle $MARKPRIO2 fw classid 1:102
tc filter add dev $IFACE parent 1:0 protocol ip prio 2 handle $MARKPRIO3 fw classid 1:103
tc filter add dev $IFACE parent 1:0 protocol ip prio 3 handle $MARKPRIO4 fw classid 1:104

tc qdisc add dev $IFACE parent 1:101 sfq perturb 16 quantum $QUANTUM1
tc qdisc add dev $IFACE parent 1:102 sfq perturb 16 quantum $QUANTUM2
tc qdisc add dev $IFACE parent 1:103 sfq perturb 16 quantum $QUANTUM3
tc qdisc add dev $IFACE parent 1:104 sfq perturb 16 quantum $QUANTUM4
</pre>
<p>Ce script est loin d&#8217;être optimisé.<br />
Son but était de marquer via iptables certain type de flux, afin de les faire passer via des règles de tc/qdisc pour en limiter la bande passante. il utilise HTB (voir plus loin)<br />
Ce script manque clairement de flexibilité.</p>
<p><!--nextpage--><br />
<!--pagetitle: Ce qu'il convient d'activer dans le noyau GNU/Linux --></p>
<p>Soyons clairs, la QOS sous GNU/Linux est un cauchemar à gérer.<br />
Autre concept à bien avoir en tête, vous ne pouvez gérer la QOS que de votre lien sortant, en aucun cas vous ne pouvez gérer ce qui rentre via votre lien. Par analogie, vous ne pouvez pas contrôler la pluie qui tombe dans votre piscine, par contre vous pouvez contrôler l&#8217;eau que vous enlevez, et l&#8217;eau que vous décidez de rajouter.<br />
Il existe quelques bidouilles afin de réussir tout de même à gérer ce trafic entrant, nous allons essayer de vous présenter ça un peu plus loin dans l&#8217;article.</p>
<p>Nous allons donc utiliser Mangle de iptables (pour qos.sh) ainsi que la fonction de mark des packets de iptables.<br />
Il faut donc aller activer cela dans le noyau.</p>
<p><code><br />
#<br />
# QoS and/or fair queueing<br />
#<br />
CONFIG_NET_SCHED=y<br />
CONFIG_NET_SCH_CBQ=m<br />
CONFIG_NET_SCH_HTB=m<br />
CONFIG_NET_SCH_CSZ=m<br />
CONFIG_NET_SCH_PRIO=m<br />
CONFIG_NET_SCH_RED=m<br />
CONFIG_NET_SCH_SFQ=m<br />
CONFIG_NET_SCH_TEQL=m<br />
CONFIG_NET_SCH_TBF=m<br />
CONFIG_NET_SCH_GRED=m<br />
CONFIG_NET_SCH_DSMARK=m<br />
CONFIG_NET_SCH_INGRESS=m<br />
CONFIG_NET_QOS=y<br />
CONFIG_NET_ESTIMATOR=y<br />
CONFIG_NET_CLS=y<br />
CONFIG_NET_CLS_TCINDEX=m<br />
CONFIG_NET_CLS_ROUTE4=m<br />
CONFIG_NET_CLS_ROUTE=y<br />
CONFIG_NET_CLS_FW=m<br />
CONFIG_NET_CLS_U32=m<br />
CONFIG_NET_CLS_RSVP=m<br />
CONFIG_NET_CLS_RSVP6=m<br />
CONFIG_NET_CLS_POLICE=y<br />
</code></p>
<p><!--nextpage--></p>
<p><!--pagetitle: Mise en place des outils. --></p>
<h3> Scheduler / Ordonnanceur </h3>
<h4> Mise en place des outils </h4>
<p>En tout premier lieu vous aurez besoin de iptables et de iproute2<br />
iproute2 est une suite d&#8217;utilitaires en ligne de commande qui vous permettent de manipuler les structures kernel liées aux couches réseau de votre machine.</p>
<p>Gentoo :</p>
<p><code><br />
emerge -av iproute2 iptables<br />
</code></p>
<p>Debian :<br />
<code><br />
apt-get install iptables iproute2<br />
</code></p>
<p>Verifiez que vous avez bien l&#8217;utilitaire tc :</p>
<p><code></p>
<p>eeegw:~# tc<br />
Usage: tc [ OPTIONS ] OBJECT { COMMAND | help }<br />
       tc [-force] -batch file<br />
where  OBJECT := { qdisc | class | filter | action | monitor }<br />
       OPTIONS := { -s[tatistics] | -d[etails] | -r[aw] | -p[retty] | -b[atch] [file] }</p>
<p></code></p>
<h4> Traduction du manuel de tc </h4>
<p>Les &#8220;classful qdiscs&#8221; sont :</p>
<li> <strong> CBQ </strong> </li>
<p>  &#8220;Class  Based  Queueing&#8221;  implémente une hierarchie de classes.  il contient des éléments de shaping  comme des fonctions de prioritisations.  Le shape est calculé à partir de latence et de taille de packets</p>
<li> <strong>HTB</strong> </li>
<p>  &#8220;Hierarchy Token Bucket&#8221;<br />
HTB permet de garantir de la bande passante a une classe, définir des limites entre les classes et de fixer des priorités entre elles.</p>
<li><strong>PRIO</strong>
<li>
PRIO qdisc n&#8217;effectue pas de traffic shapping en tant que tel, il permet juste de fixer des priorités entre les différents type de protocoles transitant dans le lien.<br />
PRIO permet de classifier les classes qui prennent en priorité de la bande passante, en ne laissant aux autres que ce qui reste de bande passante disponible.</p>
<h4> Qu&#8217;est-ce qu&#8217;une classe </h4>
<p>Une classe forme, en fait, un arbre avec des branches.<br />
Le but est de former une classe root qui va permettre de faire rentrer tout le trafic et, en fonction des protocoles, on va faire passer le traffic dans différentes branches.</p>
<p>ici nous définissons nos classes root :</p>
<pre class="brush: bash; title: ; notranslate">
## On met en place la classe root pour la BP disponible.
/sbin/tc qdisc add dev $EXTERNAL_IFACE root handle 1: cbq avpkt 1000 bandwidth $BNDWIDTH
## Match ici l'upload de la connexion
/sbin/tc class add dev $EXTERNAL_IFACE parent 1: classid 1:1 cbq rate ${UPLINK}kbit allot 1500 prio 5 bounded isolated
</pre>
<h3> Datagrame IPv4 et Type Of Service : TOS </h3>
<p><a href="http://geekfault.org/2010/05/24/eeegw-part-iii-quality-of-service-aka-qos/ipformat/" rel="attachment wp-att-4754"><img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   src="http://geekfault.org/wp-content/uploads/2010/05/ipformat-300x241.png" alt="" title="ipformat" width="300" height="241" class="aligncenter size-medium wp-image-4754" /></a></p>
<h4> Tableau des TOS possible dans un Datagram IPv4 </h4>
<p><TABLE CELLPADDING=3 BORDER="1"><TR><TH ALIGN="LEFT"><SPAN  CLASS="textbf">Binaire</SPAN></TH><TH ALIGN="LEFT"><SPAN CLASS="textbf">Décimal</SPAN></TH><TH ALIGN="LEFT"><SPAN  CLASS="textbf">Signification</SPAN></TH></TR><TR><TD ALIGN="LEFT">1000</TD><br />
<TD ALIGN="LEFT">8</TD><TD ALIGN="LEFT">Minimise le Délai (Minimize delay) (md)</TD></TR><TR><TD ALIGN="LEFT">0100</TD><TD ALIGN="LEFT">4</TD><TD ALIGN="LEFT">Maximalise le Débit (Maximize throughput) (mt)</TD></TR><TR><TD ALIGN="LEFT">0010</TD><TD ALIGN="LEFT">2</TD><TD ALIGN="LEFT">Maximalise la Fiabilité (Maximize reliability) (mr)</TD></TR><TR><TD ALIGN="LEFT">0001</TD><TD ALIGN="LEFT">1</TD><TD ALIGN="LEFT">Minimalise le Coût Monétaire (Minimize monetary cost) (mmc)</TD></TR><TR><TD ALIGN="LEFT">0000</TD><TD ALIGN="LEFT">0</TD><TD ALIGN="LEFT">Service Normal</TD></TR></TABLE></p>
<p><TABLE CELLPADDING=3 BORDER="1"><TR><TH ALIGN="LEFT"><SPAN  CLASS="textbf">TOS</SPAN></TH><TH ALIGN="LEFT"><SPAN  CLASS="textbf">Binaire</SPAN></TH><TH ALIGN="CENTER"><SPAN  CLASS="textbf">Décimal</SPAN></TH><TH ALIGN="LEFT"><SPAN  CLASS="textbf">Signification</SPAN></TH><TH ALIGN="LEFT"><SPAN  CLASS="textbf">Priorité</SPAN> <SPAN  CLASS="textbf">Linux</SPAN></TH><TH ALIGN="LEFT"><SPAN  CLASS="textbf">Bande</SPAN></TH></TR><TR><TD ALIGN="LEFT">0&#215;0</TD><TD ALIGN="LEFT">0000</TD><TD ALIGN="CENTER">0</TD><TD ALIGN="LEFT">Service Normal</TD><TD ALIGN="LEFT">0 Best Effort</TD><TD ALIGN="LEFT">1</TD></TR><TR><TD ALIGN="LEFT">0&#215;2</TD><TD ALIGN="LEFT">0001</TD><TD ALIGN="CENTER">1</TD><TD ALIGN="LEFT">Minimise le Coût Monétaire (mmc)</TD><TD ALIGN="LEFT">1 Filler</TD><TD ALIGN="LEFT">2</TD></TR><TR><TD ALIGN="LEFT">0&#215;4</TD><TD ALIGN="LEFT">0010</TD><TD ALIGN="CENTER">2</TD><TD ALIGN="LEFT">http://fr.wikipedia.org/wiki/Mod%C3%A8le_OSI</TD><TD ALIGN="LEFT">0 Best Effort</TD><TD ALIGN="LEFT">1</TD></TR><TR><TD ALIGN="LEFT">0&#215;6</TD><TD ALIGN="LEFT">0011</TD><TD ALIGN="CENTER">3</TD><TD ALIGN="LEFT">mmc+mr</TD><TD ALIGN="LEFT">0 Best Effort</TD><TD ALIGN="LEFT">1</TD></TR><TR><TD ALIGN="LEFT">0&#215;8</TD><TD ALIGN="LEFT">0100</TD><TD ALIGN="CENTER">4</TD><TD ALIGN="LEFT">Maximalise le Débit (mt)</TD><TD ALIGN="LEFT">2 Masse</TD><TD ALIGN="LEFT">2</TD></TR><TR><TD ALIGN="LEFT">0xa</TD><TD ALIGN="LEFT">0101</TD><TD ALIGN="CENTER">5</TD><TD ALIGN="LEFT">mmc+mt</TD><TD ALIGN="LEFT">2 Masse</TD><TD ALIGN="LEFT">2</TD></TR><TR><TD ALIGN="LEFT">0xc</TD><TD ALIGN="LEFT">0110</TD><TD ALIGN="CENTER">6</TD><TD ALIGN="LEFT">mr+mt</TD><TD ALIGN="LEFT">2 Masse</TD><TD ALIGN="LEFT">2</TD></TR><TR><TD ALIGN="LEFT">0xe</TD><TD ALIGN="LEFT">0111</TD><TD ALIGN="CENTER">7</TD><TD ALIGN="LEFT">mmc+mr+mt</TD><TD ALIGN="LEFT">2 Masse</TD><TD ALIGN="LEFT">2</TD></TR><TR><TD ALIGN="LEFT">0&#215;10</TD><TD ALIGN="LEFT">1000</TD><TD ALIGN="CENTER">8</TD><TD ALIGN="LEFT">Minimise le Délai (md)</TD><TD ALIGN="LEFT">6 Interactive</TD><TD ALIGN="LEFT">0</TD></TR><TR><TD ALIGN="LEFT">0&#215;12</TD><TD ALIGN="LEFT">1001</TD><TD ALIGN="CENTER">9</TD><TD ALIGN="LEFT">mmc+md</TD><TD ALIGN="LEFT">6 Interactive</TD><TD ALIGN="LEFT">0</TD></TR><TR><TD ALIGN="LEFT">0&#215;14</TD><TD ALIGN="LEFT">1010</TD><TD ALIGN="CENTER">10</TD><TD ALIGN="LEFT">mr+md</TD><TD ALIGN="LEFT">6 Interactive</TD><TD ALIGN="LEFT">0</TD></TR><TR><TD ALIGN="LEFT">0&#215;16</TD><TD ALIGN="LEFT">1011</TD><TD ALIGN="CENTER">11</TD><TD ALIGN="LEFT">mmc+mr+md</TD><TD ALIGN="LEFT">6 Interactive</TD><TD ALIGN="LEFT">0</TD></TR><TR><TD ALIGN="LEFT">0&#215;18</TD><TD ALIGN="LEFT">1100</TD><TD ALIGN="CENTER">12</TD><TD ALIGN="LEFT">mt+md</TD><TD ALIGN="LEFT">4 Int. Masse</TD><TD ALIGN="LEFT">1</TD></TR><TR><TD ALIGN="LEFT">0x1a</TD><TD ALIGN="LEFT">1101</TD><TD ALIGN="CENTER">13</TD><TD ALIGN="LEFT">mmc+mt+md 4 Int. Masse 1</TD><TD ALIGN="LEFT">4 Int. Masse</TD><TD ALIGN="LEFT">1</TD></TR><TR><TD ALIGN="LEFT">0x1c</TD><TD ALIGN="LEFT">1110</TD><TD ALIGN="CENTER">14</TD><TD ALIGN="LEFT">mr+mt+md</TD><TD ALIGN="LEFT">4 Int. Masse</TD><TD ALIGN="LEFT">1</TD></TR><TR><TD ALIGN="LEFT">0x1e</TD><TD ALIGN="LEFT">1111</TD><TD ALIGN="CENTER">15</TD><TD ALIGN="LEFT">mmc+mr+mt+md</TD><TD ALIGN="LEFT">4 Int. Masse</TD><TD ALIGN="LEFT">1</TD></TR></TABLE></p>
<h4> Exemple de ce qu&#8217;on peut faire avec TOS </h4>
<p>L&#8217;intérêt de la QoS sous Linux est très souvent associé à la priorisation de flux interactifs via iptables.<br />
Par exemple, vous ne souhaitez pas que votre session ssh lag à cause d&#8217;un utilisateur qui est en train de monopoliser la bande passante de votre réseau en téléchargeant une bande annonce sur internet ?<br />
Nous allons ici, à titre d&#8217;exemple, optimiser les trafics courants avec iptables, à savoir ssh :</p>
<pre class="brush: bash; title: ; notranslate">
# Priorisation des connexions ftp et ssh
iptables -A PREROUTING -t mangle -p tcp -sport ssh -j TOS -set-tos Minimize-Delay
# On donne un maximum de débit aux transferts scp
iptables -A PREROUTING -t mangle -p tcp -sport ssh -j TOS -set-tos Maximize-Throughput
</pre>
<p><!--nextpage--></p>
<p><!--pagetitle: Script final --><br />
Voici le script de QOS final basé sur CTB et PRIO (celui que j&#8217;utilise en production)</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/bash
### Script de reservation de bande passante par bragon

## On fixe quelques variables

EXTERNAL_DOWNLINK_KBPS=&quot;6400&quot;
## je sais downloader à  ~800ko/s ma limite est donc a 6400 Kbps
EXTERNAL_DL_IPSEC_KBPS=&quot;1024&quot;
EXTERNAL_DL_PPTP_KBPS=&quot;&quot;
EXTERNAL_DL_ICA_KBPS=&quot;&quot;
EXTERNAL_DL_TSE_KBPS=&quot;128&quot;
EXTERNAL_DL_SMTP_KBPS=&quot;512&quot;
EXTERNAL_DL_HTTP_KBPS=&quot;1024&quot;
EXTERNAL_DL_OTHERTCP_KBPS=&quot;2048&quot;
EXTERNAL_DL_OTHERTCP_PORT=&quot;2048&quot;
## je sais uploader à environ 80Ko/s je fixe donc ma limite a 512 afin d'être sûr de ne pas engendrer de lag.
EXTERNAL_UPLINK_KBPS=&quot;512&quot;
EXTERNAL_UL_IPSEC_KBPS=&quot;&quot;
EXTERNAL_UL_IPSEC_SHARE=&quot;&quot;
EXTERNAL_UL_PPTP_KBPS=&quot;&quot;
EXTERNAL_UL_PPTP_SHARE=&quot;&quot;
EXTERNAL_UL_ICA_KBPS=&quot;&quot;
EXTERNAL_UL_ICA_SHARE=&quot;&quot;
EXTERNAL_UL_TSE_KBPS=&quot;512&quot;
EXTERNAL_UL_TSE_SHARE=&quot;512&quot;
EXTERNAL_UL_SMTP_KBPS=&quot;256&quot;
EXTERNAL_UL_SMTP_SHARE=&quot;256&quot;
EXTERNAL_UL_HTTP_KBPS=&quot;32&quot;
EXTERNAL_UL_HTTP_SHARE=&quot;&quot;
EXTERNAL_UL_OTHERTCP_KBPS=&quot;&quot;
EXTERNAL_UL_OTHERTCP_SHARE=&quot;&quot;
EXTERNAL_UL_OTHERTCP_PORT=&quot;&quot;
EXTERNAL_UL_VOIP_KBPS=&quot;256&quot;
EXTERNAL_UL_VOIP_SHARE=&quot;isolated&quot;
EXTERNAL_DEV_BANDWIDTH=&quot;&quot; 

## CE script de QOS s'applique à toutes les interface dans MON cas cela convient.
## Je vous conseille de retirer votre interface LAN du match si vous avez plusieurs interfaces reseau.
## La commande va permettre de lister toutes les interfaces et d'appliquer les regles de QOS dessus.
## On match aussi les interfaces tap

if [ -n &quot;$EXTERNAL_DOWNLINK_KBPS&quot; ] &amp;&amp; [ -n &quot;$EXTERNAL_UPLINK_KBPS&quot; ] &amp;&amp; echo $INTERFACE | egrep -q &quot;(eth[023]|ppp[0-9]|ippp0|tap[0-3])&quot; ; then

#In kilobits
DOWNLINK=$EXTERNAL_DOWNLINK_KBPS
UPLINK=$EXTERNAL_UPLINK_KBPS
BNDWIDTH=$EXTERNAL_DEV_BANDWIDTH

if [ -z &quot;$BNDWIDTH&quot; ]; then
    BNDWIDTH=&quot;100mbit&quot;
fi

## on clean deja les parametres en tout premier lieu
## On vide toutes les regles pouvant deja etre en place.
/sbin/tc qdisc del dev $EXTERNAL_IFACE root    2&gt; /dev/null &gt; /dev/null
/sbin/tc qdisc del dev $EXTERNAL_IFACE ingress 2&gt; /dev/null &gt; /dev/null

# install root CBQ # On met en place la policy root, les autres policies seront liées à celle-ci
## cbq avpkt : la taille moyenne des packets en bytes sont necessaire afin de calculer l'idle maximum
## bandwidth rate : pour determiner l'idle time cbq doit forcement connaitre la bande passante de l'interface physique.
/sbin/tc qdisc add dev $EXTERNAL_IFACE root handle 1: cbq avpkt 1000 bandwidth $BNDWIDTH

## allot bytes : utile pour calculer le temps de transmission des packets entre tables, valeur liée à avpkt
/sbin/tc class add dev $EXTERNAL_IFACE parent 1: classid 1:1 cbq rate ${UPLINK}kbit allot 1500 prio 5 bounded isolated

# voip (udp sip 5060 et asterisk 4569)
## Tout ce qui match cette règle possede une reservation CBQ de $EXTERNAL_UL_VOIP_KBPS | priorité numéro 1 !
if [ -n &quot;$EXTERNAL_UL_VOIP_KBPS&quot; ]; then
/sbin/tc class add dev $EXTERNAL_IFACE parent 1:1 classid 1:5 cbq rate ${EXTERNAL_UL_VOIP_KBPS}kbit allot 1600 prio 1 avpkt 1000 $EXTERNAL_UL_VOIP_SHARE

## pfifo : pure 'premier entré premier sortie' qdisc, évite la congestion de packet dans la classid 1:5
/sbin/tc qdisc add dev $EXTERNAL_IFACE parent 1:5 handle 5: pfifo limit 10

 # sip prioritaire 5 !
## filter: utile afin de savoir dans quel classfull qdisc, un packet va etre envoye.
## on peut filter les packets a partir de leur TOS : Type Of Service
/sbin/tc filter add dev $EXTERNAL_IFACE parent 1:0 protocol ip prio 5 u32 match ip sport 5060 0xffff match ip protocol 17 0xff flowid 1:5
/sbin/tc filter add dev $EXTERNAL_IFACE parent 1:0 protocol ip prio 5 u32 match ip dport 5060 0xffff match ip protocol 17 0xff flowid 1:5

# rtp (tos 0x10 et udp) (voir le tableau recap de TOS)
/sbin/tc filter add dev $EXTERNAL_IFACE parent 1:0 protocol ip prio 5 u32 match ip tos 0x10 0xff match ip protocol 17 0xff flowid 1:5

let UPLINK=UPLINK-EXTERNAL_UL_VOIP_KBPS
fi

# SMTP
if [ -n &quot;$EXTERNAL_UL_SMTP_KBPS&quot; ]; then
 /sbin/tc class add dev $EXTERNAL_IFACE parent 1:1 classid 1:44 \
 cbq rate ${EXTERNAL_UL_SMTP_KBPS}kbit allot 1600 prio 1 avpkt 1000 $EXTERNAL_UL_SMTP_SHARE
 /sbin/tc qdisc add dev $EXTERNAL_IFACE parent 1:44 handle 44: sfq perturb 10

 /sbin/tc filter add dev $EXTERNAL_IFACE parent 1:0 protocol ip prio 44 u32 \
 match ip dport 25 0xffff match ip protocol 6 0xFF match ip firstfrag flowid 1:44

 /sbin/tc filter add dev $EXTERNAL_IFACE parent 1:0 protocol ip prio 44 u32 \
 match ip dport 2525 0xffff match ip protocol 6 0xFF match ip firstfrag flowid 1:44

 /sbin/tc filter add dev $EXTERNAL_IFACE parent 1:0 protocol ip prio 44 u32 \
 match ip dport 587 0xffff match ip protocol 6 0xFF match ip firstfrag flowid 1:44

let UPLINK=UPLINK-EXTERNAL_UL_SMTP_KBPS
fi

# HTTP
if [ -n &quot;$EXTERNAL_UL_HTTP_KBPS&quot; ]; then
 /sbin/tc class add dev $EXTERNAL_IFACE parent 1:1 classid 1:46 \
 cbq rate ${EXTERNAL_UL_HTTP_KBPS}kbit allot 1600 prio 1 avpkt 1000 $EXTERNAL_UL_HTTP_SHARE
 /sbin/tc qdisc add dev $EXTERNAL_IFACE parent 1:46 handle 46: sfq perturb 10

 /sbin/tc filter add dev $EXTERNAL_IFACE parent 1:0 protocol ip prio 46 u32 \
 match ip dport 80 0xffff match ip protocol 6 0xFF match ip firstfrag flowid 1:46
 let UPLINK=UPLINK-EXTERNAL_UL_HTTP_KBPS
fi

# OTHERTCP
if [ -n &quot;$EXTERNAL_UL_OTHERTCP_KBPS&quot; ]; then
 /sbin/tc class add dev $EXTERNAL_IFACE parent 1:1 classid 1:48 \
 cbq rate ${EXTERNAL_UL_OTHERTCP_KBPS}kbit allot 1600 prio 1 avpkt 1000 $EXTERNAL_UL_OTHERTCP_SHARE
 /sbin/tc qdisc add dev $EXTERNAL_IFACE parent 1:48 handle 48: sfq perturb 10

 /sbin/tc filter add dev $EXTERNAL_IFACE parent 1:0 protocol ip prio 48 u32 \
 match ip dport $EXTERNAL_UL_OTHERTCP_PORT 0xffff match ip protocol 6 0xFF match ip firstfrag \
 flowid 1:48
 let UPLINK=UPLINK-EXTERNAL_UL_OTHERTCP_KBPS
fi

if [ $UPLINK -gt 0 ]; then

# classe interactive
/sbin/tc class add dev $EXTERNAL_IFACE parent 1:1 classid 1:10 cbq rate ${UPLINK}kbit allot 1600 prio 2 avpkt 1000
/sbin/tc qdisc add dev $EXTERNAL_IFACE parent 1:10 handle 10: sfq perturb 10

 # TOS Minimum Delay (ssh, NOT scp) in 1:10: donc on lui donne un priorité de 1000
 /sbin/tc filter add dev $EXTERNAL_IFACE parent 1:0 protocol ip prio 1000 u32 match ip tos 0x10 0xff  flowid 1:10

 # ICMP (ip protocol 1) dans la classe interactive 1:10 donc on lui donne un priorité de 1001
 /sbin/tc filter add dev $EXTERNAL_IFACE parent 1:0 protocol ip prio 1001 u32 match ip protocol 1 0xff flowid 1:10

 # Pour accélérer le downaload lorsqu'un upload est en court il faut bien faire les ACK dans la classe interactive.

 /sbin/tc filter add dev $EXTERNAL_IFACE parent 1: protocol ip prio 1002 u32 match ip protocol 6 0xff match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 2 match u8 0x10 0xff at 33 flowid 1:10

# classe bulk

 /sbin/tc class add dev $EXTERNAL_IFACE parent 1:1 classid 1:20 cbq rate $[9*$UPLINK/10]kbit \
   allot 1600 prio 3 avpkt 1000
 /sbin/tc qdisc add dev $EXTERNAL_IFACE parent 1:20 handle 20: sfq perturb 10

 /sbin/tc filter add dev $EXTERNAL_IFACE parent 1: protocol ip prio 1003 u32 \
   match ip dst 0.0.0.0/0 flowid 1:20

else
 echo &quot;Error: no bandwidth left for uplink on $EXTERNAL_IFACE: $UPLINK&quot; 1&gt;&amp;2
 /sbin/tc qdisc del dev $EXTERNAL_IFACE root    2&gt; /dev/null &gt; /dev/null
fi

#
# Il faut ralentir les download afin d'éviter que l'ISP mette en queue ce qui engendre le lag
# Les ISP ont tendance à avoir des queues énormes afin d'être sûrs que les downloads seront rapides.
#
# police ingress:

/sbin/tc qdisc add dev $EXTERNAL_IFACE handle ffff: ingress

# voip
# tout ce qui est voip ne doit pas être limité, donc on fait un match simple
# iax2

/sbin/tc filter add dev $EXTERNAL_IFACE parent ffff: protocol ip prio 5 u32 \
  match ip sport 4569 0xffff match ip protocol 17 0xff flowid :1
 /sbin/tc filter add dev $EXTERNAL_IFACE parent ffff: protocol ip prio 5 u32 \
  match ip dport 4569 0xffff match ip protocol 17 0xff flowid :1

# sip # priorite 5 !
/sbin/tc filter add dev $EXTERNAL_IFACE parent ffff: protocol ip prio 5 u32 \
  match ip sport 5060 0xffff match ip protocol 17 0xff flowid :1
/sbin/tc filter add dev $EXTERNAL_IFACE parent ffff: protocol ip prio 5 u32 \
  match ip dport 5060 0xffff match ip protocol 17 0xff flowid :1

/sbin/tc filter add dev $EXTERNAL_IFACE parent ffff: protocol ip prio 5 u32 \
match ip sport 5061 0xffff match ip protocol 17 0xff flowid :1

# rtp (tos 0x10 et udp) # priorte 5 !
/sbin/tc filter add dev $EXTERNAL_IFACE parent ffff: protocol ip prio 5 u32 \
  match ip tos 0x10 0xff match ip protocol 17 0xff flowid :1

# SMTP
if [ -n &quot;$EXTERNAL_DL_SMTP_KBPS&quot; ]; then
 /sbin/tc filter add dev $EXTERNAL_IFACE parent ffff: protocol ip prio 44 u32 \
 match ip sport 25 0xffff match ip protocol 6 0xFF match ip firstfrag \
 police rate ${EXTERNAL_DL_SMTP_KBPS}kbit burst 10k drop flowid :1
 let DOWNLINK=DOWNLINK-EXTERNAL_DL_SMTP_KBPS
fi

# HTTP
if [ -n &quot;$EXTERNAL_DL_HTTP_KBPS&quot; ]; then
 /sbin/tc filter add dev $EXTERNAL_IFACE parent ffff: protocol ip prio 46 u32 \
 match ip sport 80 0xffff match ip protocol 6 0xFF match ip firstfrag \
 police rate ${EXTERNAL_DL_HTTP_KBPS}kbit burst 10k drop flowid :1
 let DOWNLINK=DOWNLINK-EXTERNAL_DL_HTTP_KBPS
fi

# OTHERTCP qui ne matchent pas les règles précédentes
if [ -n &quot;$EXTERNAL_DL_OTHERTCP_KBPS&quot; ]; then
 /sbin/tc filter add dev $EXTERNAL_IFACE parent ffff: protocol ip prio 48 u32 \
 match ip sport $EXTERNAL_DL_OTHERTCP_PORT 0xffff match ip protocol 6 0xFF match ip firstfrag \
 police rate ${EXTERNAL_DL_OTHERTCP_KBPS}kbit burst 10k drop flowid :1
 let DOWNLINK=DOWNLINK-EXTERNAL_DL_OTHERTCP_KBPS
fi

##règles de burst
if [ $DOWNLINK -gt 0 ]; then
 /sbin/tc filter add dev $EXTERNAL_IFACE parent ffff: protocol ip prio 1000 u32 \
 match ip src 0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1
else
 echo &quot;Error: no bandwidth left for downlink on $EXTERNAL_IFACE: $DOWNLINK&quot; 1&gt;&amp;2
 /sbin/tc qdisc del dev $EXTERNAL_IFACE ingress 2&gt; /dev/null &gt; /dev/null
fi

# initial if (are the 2 required variables defined?)
fi
</pre>
<p>N&#8217;hésitez pas à le tester, il déboite <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/' rel='bookmark' title='EeeGW : Créer soi-même une passerelle réseau'>EeeGW : Créer soi-même une passerelle réseau</a></li>
<li><a href='http://geekfault.org/2010/02/20/eeegw-ze-retour-du-detour-proxycache/' rel='bookmark' title='EeeGW &#8211; ZE retour du détour ! &#8211; Proxycache.'>EeeGW &#8211; ZE retour du détour ! &#8211; Proxycache.</a></li>
<li><a href='http://geekfault.org/2009/09/24/allocation-dadresses-ipv4-publiques-over-vpn/' rel='bookmark' title='Allocation d&#8217;adresses IPv4 publiques over VPN'>Allocation d&#8217;adresses IPv4 publiques over VPN</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/TaPIJiaFz6A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/05/24/eeegw-part-iii-quality-of-service-aka-qos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>bash and shell tips and tricks</title>
		<link>http://geekfault.org/2010/05/20/bash-and-shell-tips-and-tricks/</link>
		<comments>http://geekfault.org/2010/05/20/bash-and-shell-tips-and-tricks/#comments</comments>
		<pubDate>Thu, 20 May 2010 10:44:57 +0000</pubDate>
		<dc:creator>bragon</dc:creator>
				<category><![CDATA[Geeklife]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=4416</guid>
		<description><![CDATA[Le but de cet l&#8217;article est de partager avec vous des petits &#8220;trucs&#8221;, que nous rédacteur geekfault utilisons dans nos consoles préférées tous les jours, et souhaitons échanger avec vous petits scarabées. En faite mon idée est partie de ce petit délire que m&#8217;a sorti khemael : tr -c "[:digit:]" " " < /dev/urandom &#124; [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/' rel='bookmark' title='Linux &#8211; Laptop &#8211; Ultimate Powersaving !'>Linux &#8211; Laptop &#8211; Ultimate Powersaving !</a></li>
<li><a href='http://geekfault.org/2010/05/11/maintenir-son-dns-menteur-avec-adblock/' rel='bookmark' title='maintenir son DNS menteur avec Adblock'>maintenir son DNS menteur avec Adblock</a></li>
<li><a href='http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/' rel='bookmark' title='La nouvelle mode Geek : avoir son domaine .42'>La nouvelle mode Geek : avoir son domaine .42</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Le but de cet l&#8217;article est de partager avec vous des petits &#8220;trucs&#8221;, que nous rédacteur geekfault utilisons dans nos consoles préférées tous les jours, et souhaitons échanger avec vous petits scarabées.</p>
<p>En faite mon idée est partie de ce petit délire que m&#8217;a sorti khemael :</p>
<p><code><br />
tr -c "[:digit:]" " " < /dev/urandom | dd cbs=$COLUMNS conv=unblock | GREP_COLOR="1;32" grep --color "[^ ]"<br />
</code></p>
<p>Les astuces sont livrées de façon brute de fonderie.<br />
Noob s'abstenir.</p>
<p>Nota Noob : Ne tappe pas une commande sur ton shell que tu ne comprends pas.</p>
<p><!--more--></p>
<h3> Some of madx's tricks </h3>
<h4> Redirections </h4>
<p><code><br />
commande 1> fichier : Redirige stdout dans fichier<br />
commande 2> fichier : Redirige stderr dans fichier<br />
commande 2>&#038;1       : Redirige stderr vers stdout<br />
commande &#038;> fichier : Redirige stdout et stderr dans fichier<br />
</code></p>
<h4> Fork bomb ! Warning, ne pas utiliser ça sur un serveur non protégé <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </h4>
<p><code><br />
 f(){ f|f&#038;};f<br />
</code></p>
<h4> Bash and perl regexp </h4>
<p><code><br />
 for i in * ; do mv "$i" "`echo $i | perl -pe 's/foo_regex/bar/' `"; done<br />
 for i in *.gif ; do convert "$i" "`echo $i | perl -pe 's/gif$/png/' `"; done<br />
</code></p>
<h4> scp resume </h4>
<p><code><br />
 rsync --partial --progress -e ssh file user@host:/dir<br />
</code></p>
<h4> Remote backup </h4>
<p><code><br />
 tar -cv / | ssh user@host -T -e none "cat > backup.tar"<br />
 ssh root@host "tar -c /" | cat > backup.tar<br />
</code></p>
<h4> burning </h4>
<p><code><br />
 mkisofs -v -R -r -V "dvd title" -o dvd.iso file1 file2 ...<br />
 cdrecord -v -dao -fs=500m -dev=/dev/sg1 -data dvd.iso<br />
 cdrecord -dev=/dev/sg1 blank=fast<br />
</code></p>
<h4> perl regex sur un fichier </h4>
<p><code><br />
perl -pi -e 's/^(#)?TIMEZONE=.*$/TIMEZONE="Europe\/Paris"/' /etc/conf.d/clock<br />
</code></p>
<h4> encode to theora/ogg </h4>
<p><code><br />
 ffmpeg -i whatever.avi -f ogg -vcodec libtheora -vb 2000k -acodec libvorbis -ab 128k -y whatever.ogg<br />
</code></p>
<p><!--nextpage--></p>
<h3> Some of bragon's tricks </h3>
<h4> Perfect rsync + remote </h4>
<p><code><br />
#!/bin/sh<br />
time /usr/bin/rsync \<br />
        --rsh="ssh -2 -l root" \<br />
        --verbose \<br />
        --archive \<br />
        --hard-links \<br />
        --numeric-ids \<br />
        --progress \<br />
        --stats \<br />
        --delete \<br />
        --exclude "/proc/*" \<br />
        --exclude "/sys/*" \<br />
        --exclude "/vservers/*/proc/*" \<br />
        --exclude "/vservers/*/dev/*" \<br />
        --exclude "/vservers/*/sys/*" \<br />
        --exclude "/data/*" \<br />
   /vservers/sam/ gerontius:/vservers/sam/<br />
</code></p>
<h4> config backup </h4>
<p><code><br />
cp /etc/httpd/conf/httpd.conf{,.bak}<br />
</code><br />
<code><br />
for file in * ; do cp $file $file.bak; done<br />
</code></p>
<h4> Afficher un calendrier rapidement </h4>
<p><code><br />
cal -3<br />
</code></p>
<h4> La date d'aujourd'hui </h4>
<p><code><br />
date +%d-%b-%Y<br />
16-May-2010</p>
<p>today=$(date +%d-%b-%Y)</p>
<p>echo $today<br />
16-May-2010<br />
</code></p>
<h4> repeting an argument </h4>
<p><code><br />
mkdir /path/to/exampledir<br />
cd !$<br />
</code></p>
<h4> Majuscule are useless </h4>
<p><code><br />
bragon@shaytan ~ $ shopt -s cdspell<br />
bragon@shaytan ~ $ cd Downloads/<br />
bragon@shaytan ~/Downloads $ cd<br />
bragon@shaytan ~ $ cd downloads<br />
Downloads<br />
bragon@shaytan ~/Downloads $<br />
</code></p>
<h4> Socket information sur ta workstation </h4>
<p><code><br />
ss -ari<br />
ss -arn<br />
</code></p>
<h4> Change user shell<br />
<h4>
<code><br />
chsh -s /bin/bash utilisateur # lui definir bash en tant que shell<br />
chsh -s /bin/false utilisateur # pas de shell<br />
chsh -s /bin/zsh utilisateur # zsh<br />
</code></p>
<h4> iptables line del </h4>
<p><code><br />
iptables -L -n --line-numbers<br />
iptables -D INPUT 34 # vires la ligne 34<br />
</code></p>
<h4> history clean / dmesg clean </h4>
<p><code><br />
history -c<br />
dmesg -c<br />
</code></p>
<h4>petit script de screenshot</h4>
<p><code><br />
#!/bin/bash<br />
export DISPLAY=":1"<br />
/usr/bin/firefox --display :1 "$1" > /dev/null 2> /dev/null &#038;<br />
/bin/sleep 10<br />
/usr/bin/import -window root -display :1 "$2"<br />
killall firefox-bin<br />
</code></p>
<h4> Se déconnecter d'un ssh quand on a timeout pour récupérer sa console </h4>
<p><code><br />
~.<br />
</code></p>
<p><!--nextpage--></p>
<h3> Some of khemael's tricks </h3>
<h4> Relancer la commande en root </h4>
<p><code><br />
su -c !!<br />
</code></p>
<h4> nice output of mount </h4>
<p><code><br />
mount | column -t<br />
</code></p>
<h4> Query wikipedia à travers le  DNS </h4>
<p><code><br />
dig +short txt <keyword>.wp.dg.cx<br />
</code></p>
<h4> afficher les 10 processus les plus gourmant en RAM </h4>
<p><code><br />
ps aux | sort -nk +4 | tail<br />
</code></p>
<h4> "BEEP" when the IP comes online </h4>
<p><code><br />
ping -a IP_address<br />
</code></p>
<h4> Extract a tarball without local saving. </h4>
<p><code><br />
wget -qO - "http://www.tarball.com/tarball.gz" | tar zxvf -<br />
</code></p>
<h4> My cool terminal clock <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </h4>
<p><code><br />
watch -t -n1 "date +%T|figlet"<br />
</code></p>
<h4> Binary clock </h4>
<p><code><br />
watch -n 1 'echo "obase=2;`date +%s`" | bc'<br />
</code></p>
<h4> Quick share of a file through a port </h4>
<p><code><br />
nc -w 5 -v -l -p 80 < file.ext<br />
</code></p>
<h4> Stream youtube url directly to mplayer (no cclive needed) </h4>
<p><code><br />
mplayer -fs $(echo "http://youtube.com/get_video.php?$(curl -s $youtube_url | sed -n "/watch_fullscreen/s;.*\(video_id.\+\)&#038;title.*;\1;p")")<br />
</code></p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/' rel='bookmark' title='Linux &#8211; Laptop &#8211; Ultimate Powersaving !'>Linux &#8211; Laptop &#8211; Ultimate Powersaving !</a></li>
<li><a href='http://geekfault.org/2010/05/11/maintenir-son-dns-menteur-avec-adblock/' rel='bookmark' title='maintenir son DNS menteur avec Adblock'>maintenir son DNS menteur avec Adblock</a></li>
<li><a href='http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/' rel='bookmark' title='La nouvelle mode Geek : avoir son domaine .42'>La nouvelle mode Geek : avoir son domaine .42</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/4bbmBRQ-PKE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/05/20/bash-and-shell-tips-and-tricks/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>PXE : Y a-t-il un bootloader sur l’réseau ?</title>
		<link>http://geekfault.org/2010/05/15/pxe-ya-til-un-bootloader-sur-lreseau/</link>
		<comments>http://geekfault.org/2010/05/15/pxe-ya-til-un-bootloader-sur-lreseau/#comments</comments>
		<pubDate>Sat, 15 May 2010 14:02:25 +0000</pubDate>
		<dc:creator>Lord</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[diskless]]></category>
		<category><![CDATA[nfs]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[pxe]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=3993</guid>
		<description><![CDATA[
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/07/15/zeroconf-reseaux-ip-sans-configuration/' rel='bookmark' title='Zeroconf : Réseaux IP sans configuration'>Zeroconf : Réseaux IP sans configuration</a></li>
<li><a href='http://geekfault.org/2011/03/24/devbox-kvmlibvirt-perfect-setup/' rel='bookmark' title='Devbox KVM+Libvirt perfect setup.'>Devbox KVM+Libvirt perfect setup.</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><!--pagetitle:Le PXE quoi que c'est ?--><a href="http://geekfault.org/2010/05/15/pxe-ya-til-un-bootloader-sur-lreseau/diagram1/" rel="attachment wp-att-4379"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/05/Diagram1-300x176.png" alt="Graph du réseau" width="300" height="176" class="alignleft size-medium wp-image-4379" /></a>Comment installer un OS sur une machine sans lecteur CD et sans clé USB ? Comment utiliser le même nunux quelque soit votre PC sur votre réseau ? Comment avoir votre nunux de secours pour dépanner les machines de votre réseau ? C&#8217;est simple, le <strong>P</strong>reboot e<strong>X</strong>ecution <strong>E</strong>nvironment est une technique permettant de booter une machine par le réseau.<br />
On pourrait simplifier la chose en disant qu&#8217;il s&#8217;agit d&#8217;une sorte de grub téléchargé et exécuté par le réseau. </p>
<p><!--more--></p>
<p>Pour démarrer une machine sur le réseau, il faut tout d&#8217;abord que son bios supporte cette technologie (c&#8217;est le cas de la plupart des machines modernes). Il faut ensuite un serveur DHCP et un serveur TFTP configurés pour fournir un bail spécial ainsi que les fichiers nécessaires au boot. Cet article couvre donc la mise en place d&#8217;un système basique. On abordera ensuite le côté esthétique par un petit coup de maquillage, ensuite on ajoutera quelques fonctions parfois utiles et enfin la mise en place d&#8217;un système complètement <strong>diskless</strong>.</p>
<h3>Récupération du matos </h3>
<p>La grande majorité des serveurs DHCP est à même de faire tourner un PXE. J&#8217;aborderai ici <strong>Dnsmasq</strong> qui a l&#8217;avantage d&#8217;être très léger et de  pouvoir faire office de serveur DNS et TFTP. Nous n&#8217;aurons donc qu&#8217;un seul et unique serveur pour tout faire.<br />
<code>USE="dhcp tftp" emerge dnsmasq</code><br />
Il vous faudra également syslinux pour récupérer les précieux fichiers de boot ainsi que quelques petits utilitaires bonus.<br />
Vous trouverez la dernière version sur le très sérieux site de kernel.org:</p>
<p>http://www.kernel.org/pub/linux/utils/boot/syslinux/</p>
<p>Il ne manque plus que la distribution à booter et son kernel. Tout dépendra de ce que vous voulez proposer. Ici on va monter un installeur Debian :<br />
<code>wget ftp://ftp.fr.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/debian-installer/i386/linux /var/tftp/distros/debian/lenny/i386/linux<br />
wget ftp://ftp.fr.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/debian-installer/i386/initrd.gz /var/tftp/distros/debian/lenny/i386/initrd.gz<br />
wget ftp://ftp.fr.debian.org/debian/dists/etch/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux /var/tftp/distros/debian/lenny/amd64/linux<br />
wget ftp://ftp.fr.debian.org/debian/dists/etch/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz /var/tftp/distros/debian/lenny/amd64/initrd.gz</code></p>
<h3>Configuration du serveur </h3>
<p>Je n&#8217;aborderai pas la configuration complète de Dnsmasq, uniquement les parties relatives à notre objecif.</p>
<p><code>/etc/dnsmasq.conf</code><br />
<code>dhcp-boot=pxelinux.0<br />
enable-tftp<br />
tftp-root=/var/tftp</code><br />
La première ligne fournit le nom du fichier de PXE, la seconde active le tftp et la troisième déclare le dossier qui sera la racine de notre TFTP. Ça suffit pour obtenir le fonctionnement désiré. Relancez Dnsmasq, désormais on n&#8217;y touchera plus.</p>
<h3>Mise en place basique </h3>
<p>Commençons par créer la racine du tftp et récupérer le fameux pxelinux.0<br />
<code># mkdir /var/tftp/pxelinux.cfg<br />
# tar xvf syslinux-3.81.tar.gz<br />
# cp syslinux-3.81/core/pxelinux.0 /var/tftp/</code></p>
<p>Créons maintenant un petit menu tout simple :<br />
<code>/var/tftp/menu.txt</code><br />
<code>-: PXE BOOT :-</p>
<p>lenny_i386_installer<br />
lenny_i386_expert<br />
lenny_amd64_installer<br />
lenny_amd64_expert</code></p>
<p>C&#8217;est ce menu qui s&#8217;affichera. C&#8217;est moche mais efficace. Il faut créer le fichier de configuration associé :<br />
<code>/var/tftp/pxelinux.cfg/default</code><br />
<code>DISPLAY menu.txt</p>
<p>DEFAULT lenny_i386_installer</p>
<p>LABEL lenny_i386_installer<br />
	kernel distros/debian/lenny/i386/linux<br />
	append vga=normal initrd=debian/lenny/i386/initrd.gz</p>
<p>LABEL lenny_i386_expert<br />
	kernel distros/debian/lenny/i386/linux<br />
	append priority=low vga=normal initrd=debian/lenny/i386/initrd.gz</p>
<p>LABEL lenny_amd64_linux<br />
	kernel distros/debian/lenny/amd64/linux<br />
	append vga=normal initrd=debian/lenny/amd64/initrd.gz</p>
<p>LABEL lenny_amd64_expert<br />
	kernel distros/debian/lenny/amd64/linux<br />
	append priority=low vga=normal initrd=debian/lenny/amd64/initrd.gz</p>
<p>PROMPT 1<br />
TIMEOUT 0</code><br />
Vous avez maintenant un PXE tout ce qu&#8217;il y a de plus simple. C&#8217;est assez brut mais ça fonctionne. Maintenant vous pouvez tester. La machine se verra attribé sa config réseau et vous devriez voir s&#8217;afficher le contenu de votre boot.txt . Vous n&#8217;aurez plus qu&#8217;à taper le « label » désiré pour lancer le boot.</p>
<p><!--nextpage--><!--pagetitle:Une petite beauté--></p>
<h3>Maquillage</h3>
<p>Bon c&#8217;est bien gentil mais d&#8217;une part c&#8217;est moche et d&#8217;autre part c&#8217;est pas vraiment super pratique. On va donc faire un menu ressemblant à un bon vieux GRUB.<br />
Tout d&#8217;abord on va tenter de faire les trucs proprement donc on va créer un petit dossier <em>/var/tftp/tools</em> qui contiendra les petits binaires et un autre <em>/var/tftp/menu</em> pour les menus.</p>
<p>On a donc cette arborescence :<br />
<code>/var/tftp<br />
		/distros<br />
			…<br />
		/menu<br />
		/tools<br />
		/pxelinux.0<br />
		/pxelinux.cfg<br />
			/default</code><br />
Il faut récupérer le binaire permettant de faire afficher un beau menu. Celui-ci se trouve dans syslinux.<br />
<code># cp syslinux-3.81/com32/menu/vesamenu.c32 /var/tftp/tools</code><br />
Il nous faut maintenant modifier le fichier <em>pxelinux.cfg/default</em> pour utiliser ce binaire et faire un truc plus classe :<br />
<code>DEFAULT tools/vesamenu.c32 menu/design.conf ~</p>
<p>MENU TITLE Mon PXE</p>
<p>LABEL Lenny I386<br />
	MENU LABEL Installer Lenny I386<br />
	KERNEL distros/debian/lenny/i386/linux<br />
	APPEND vga=normal initrd=distros/debian/lenny/i386/initrd.gz</p>
<p>LABEL Lenny I386 Expert<br />
	MENU LABEL Installer Lenny I386 en mode Expert<br />
	KERNEL distros/debian/lenny/i386/linux<br />
	APPEND priority=low vga=normal initrd=distros/debian/lenny/i386/initrd.gz</p>
<p>LABEL Lenny amd64 linux<br />
	MENU LABEL Installer Lenny AMD64<br />
	KERNEL distros/debian/lenny/amd64/linux<br />
	APPEND vga=normal initrd=distros/debian/lenny/amd64/initrd.gz</p>
<p>LABEL Lenny amd64 expert<br />
	MENU LABEL Installer Lenny AMD64 en mode Expert<br />
	KERNEL distros/debian/lenny/amd64/linux<br />
	APPEND priority=low vga=normal initrd=distros/debian/lenny/amd64/initrd.gz</p>
<p>TIMEOUT 0</code><br />
La première ligne appelle le binaire en lui fournissant en argument le fichier design.conf que l&#8217;on va créer de ce pas.<br />
<code>/var/tftp/menu/design.conf</code><br />
<code>MENU WIDTH	80<br />
MENU MARGIN	10<br />
MENU ROWS	12<br />
MENU TABMSGROW	18<br />
MENU CMDLINEROW	12<br />
MENU ENDROW	24<br />
MENU TIMEOUTROW 20<br />
MENU PASSWORDMARGIN	3<br />
MENU PASSWORDROW	11</p>
<p>menu background menu/background.png</code><br />
L&#8217;image de background doit être en png 24bits en 640*480 ce qui laisse <a href="http://www.google.com/images?as_q=&amp;um=1&amp;hl=en&amp;client=opera&amp;rls=en&amp;btnG=Google+Search&amp;as_epq=&amp;as_oq=&amp;as_eq=&amp;imgtype=&amp;imgsz=m&amp;imgw=640&amp;imgh=480&amp;imgar=&amp;as_filetype=png&amp;imgc=color&amp;as_sitesearch=&amp;as_rights=&amp;safe=off&amp;as_st=y">pas mal de choix de fond d&#8217;écran</a>.</p>
<p>Vous pouvez maintenant tester votre nouveau PXE tout en couleurs et bien plus fonctionnel. Vous avez maintenant un PXE ressemblant à un bon petit grub.</p>
<p><!--nextpage--><!--pagetitle:Le couteau suisse du boot--></p>
<h3>Ajouts de nouvelles fonctions</h3>
<p>Il est possible d&#8217;ajouter quelques fonctionnalités bien pratiques comme par exemple le fameux Memtest permettant de tester ses barettes de RAM ou bien ajouter HDT qui vous permettra d&#8217;obtenir de nombreuses informations concernant la machine sans même booter un OS.</p>
<h4>Un sous-menu</h4>
<p>Pour créer un sous-menu, il suffit de refaire appel à vesamenu.c32 et lui indiquer un autre fichier de conf :<br />
<code>/var/tftp/pxelinux.cfg/default</code><br />
<code>LABEL Outils systèmes<br />
	MENU LABEL Outils systèmes &gt;&gt;<br />
	KERNEL tools/vesamenu.c32<br />
	APPEND menu/design.conf menu/systemes.conf</code></p>
<p><code>/var/tftp/menu/systemes.conf</code><br />
<code>MENU TITLE Outils Systèmes</p>
<p>LABEL retour_menu<br />
	MENU LABEL &lt;- Retour menu principal<br />
	KERNEL tools/vesamenu.c32<br />
	APPEND menu/design.conf ~</p>
<p>LABEL</code><br />
Le ~ correspond au menu par défaut.</p>
<h4>MemTest</h4>
<p>On le récupère<br />
<code># wget http://www.memtest.org/download/4.00/memtest86+-4.00.bin.gz<br />
tar xvf memtest86+-4.00.bin.gz<br />
# cp memtest86+-4.00/precomp.bin /var/tftp/tools/memtest</code></p>
<p><code>/var/tftp/menu/systemes.conf</code><br />
<code>LABEL memtest<br />
	MENU LABEL ^MemTest 4.0<br />
	KERNEL tools/memtest</code></p>
<p>Et voilà MemTest est désormais intégré.</p>
<h4>HDT</h4>
<p>HDT fait partie de syslinux donc il faut le récupérer :<br />
<code># cp syslinux-3.81/com32/hdt/hdt.c32 /var/tftp/tools</code><br />
Il faut récupérer le fichier <a href="http://pciids.sourceforge.net/v2.2/pci.ids">pci.ids</a> qui se trouve sur sourceforge et le placer dans notre dossier <em>/var/tftp/tools</em> et enfin récupérer le fichier <em>/lib/modules/`uname -r`/modules.pcimap</em> à copier dans le même dossier.<br />
Maintenant que tout est en place éditons, le fameux<br />
<code>/var/tftp/menu/systemes.conf</code><br />
<code>LABEL HDT<br />
	MENU LABEL ^Hardware Detection Test<br />
	KERNEL tools/hdt.c32<br />
	APPEND modules=tools/modules.pcimap pciids=tools/pci.ids memtest=tools/memtest</code><br />
Et voili voilou</p>
<h4>Reboot</h4>
<p>Une petite option pour reboot pour le fun :<br />
<code># cp syslinux-3.81/com32/modules/reboot.c32 /var/tftp/tools/reboot.c32</code></p>
<p><code>/var/tftp/menu/systemes.conf</code><br />
<code>LABEL reboot<br />
	MENU LABEL ^Reboot<br />
	KERNEL tools/reboot.c32</code></p>
<h4>Boot Local</h4>
<p>Ajoutons une option pour tout de même booter sur son disque dur.<br />
<code># cp syslinux-3.81/com32/samples/localboot.c32 /var/tftp/tools/localboot.c32</code></p>
<p><code>/var/tftp/menu/systemes.conf</code><br />
<code>LABEL LocalBoot<br />
	MENU LABEL ^Boot Local<br />
	KERNEL tools/localboot.c32</code></p>
<p>On a au final ces deux écrans :<br />
<div id="attachment_4086" class="wp-caption alignnone" style="width: 648px"><a href="http://geekfault.org/2010/05/15/pxe-ya-til-un-bootloader-sur-lreseau/boot1/" rel="attachment wp-att-4086"><img src="http://geekfault.org/wp-content/uploads/2010/05/boot1.png" alt="PXE main menu" width="638" height="477" class="size-full wp-image-4086" /></a><p class="wp-caption-text">Image du menu principale</p></div><br />
<div id="attachment_4097" class="wp-caption alignnone" style="width: 648px"><a href="http://geekfault.org/2010/05/15/pxe-ya-til-un-bootloader-sur-lreseau/boot2-2/" rel="attachment wp-att-4097"><img src="http://geekfault.org/wp-content/uploads/2010/05/boot21.png" alt="Menu des fonctionnalités" width="638" height="480" class="size-full wp-image-4097" /></a><p class="wp-caption-text">Menu des fonctionnalités</p></div></p>
<p>Et maintenant que nous avons un PXE fonctionnel, pratique et regardable passons au choses sérieuses : un vrai linux par le réseau.</p>
<p><!--nextpage--><!--pagetitle:Du diskless what else ?--></p>
<h3>Du diskless par distribution « live »</h3>
<p>Concrètement qu&#8217;est-ce qu&#8217;il nous manque pour avoir du vrai diskless et non juste un installeur ? Il nous faut un kernel qui puisse récupérer son root (pas l&#8217;utilisateur mais son système de fichier) soit par le réseau soit par un initrd. Je vais commencer par la seconde possibilité avec Tiny Core Linux. Ce qu&#8217;on va faire c&#8217;est booter un kernel et lui fournir un initrd qui lui servira de racine. Les changements ne seront pas conservés après reboot, comme une distribution sur LiveCD.</p>
<p>On va donc faire ce système avec <strong>Tiny Core Linux</strong>. Il s&#8217;agit d&#8217;une toute petite distro avec interface graphique qui tient dans 10 Mo. Ça se récupère <a href="http://distro.ibiblio.org/pub/linux/distributions/tinycorelinux/">ici</a>. Et ça s&#8217;intègre en moins de deux sur votre PXE. Mettez le <em>bzImage</em> et le <em>tinycore.gz</em> dans (par exemple) <em>/var/tftp/distros/tinycore</em> et ajoutez ces quelques lignes à votre menu :<br />
<code>LABEL Tiny_Core_Linux<br />
         MENU LABEL Tiny Core Linux<br />
         KERNEL distros/tinycore/bzImage<br />
         APPEND initrd=distros/tinycore/tinycore.gz max_loop=256</code><br />
Et c&#8217;est bootable. Cette distrib est pratique quand on veux un shell vite fait. C&#8217;est juste dommage de ne pas avoir de client SSH pré-installé mais c&#8217;est une autre histoire.</p>
<h3>Un linux vrai de vrai avec root en nfs</h3>
<p>Maintenant au lieu de se limiter à un kernel et un initrd, on va fournir l&#8217;arborescence complète. En fait la racine sera un export NFS. Le système sera donc utilisable comme un nunux classique. Mieux encore, vous pourrez l&#8217;utiliser sur plusieurs PC (non simultanément). Allez c&#8217;est parti pour se monter une petite Debian en mois de deux.</p>
<p>D&#8217;abord on installe les paquets nécessaires :<br />
<code># emerge debootstrap nfs-utils</code><br />
Debootstrap est un script recréant une debian (ou ubuntu) à partir d&#8217;un miroir. Si vous voulez monter une autre distrib, pas la peine de le prendre. Nfs-utils apporte quelques outils pour la mise en place du serveur NFS. Il faut que votre kernel possède le module nfs-server.</p>
<p>Maintenant créons la Debian de toute pièce :<br />
<code># mkdir /var/exports/debian/lenny<br />
# debootstrap lenny /var/exports/debian/lenny</code><br />
Après une pause bien méritée, noyautons cette petite. Soit vous vous faites votre kernel aux petits oignons, soit vous prenez celui de la Debian qu&#8217;il faudra installer par chroot. Bien évidemment, le mieux est de le compiler soi-même en n&#8217;oubliant surtout pas <strong>filesystems/network file systems/root filesystems on nfs</strong>. vous placerez ce kernel non pas dans l&#8217;export NFS (enfin ce n&#8217;est pas indispensable) mais dans le tftp <em>/var/tftp/distros/debian/kernel_perso</em>.</p>
<p>Créez l&#8217;export NFS dans le fichier<br />
<code>/etc/exports</code><br />
<code>/var/exports/debian/lenny 10.0.0.0/8(rw,async,no_subtree_check,no_root_squash,no_all_squash)</code></p>
<p>Donc là je déclare tout le dossier contenant la lenny visible pour tout mon réseau local (en 10/8) avec des droits de lecture/écriture.<br />
Il ne reste plus qu&#8217;à ajouter une entrée dans le menu du PXE.<br />
<code>LABEL Debian<br />
MENU LABEL Debian NFS<br />
	KERNEL distros/debian/kernel_perso<br />
	APPEND ip=dhcp root=/dev/nfs nfsroot=10.0.0.1:/var/exports/debian/lenny</code></p>
<p>Et il ne reste plus qu&#8217;à booter et rebooter !</p>
<h3>What else ?</h3>
<p>Bon voilà vous avez vu comment monter votre joli PXE. Vous pouvez donc installer ure distrib sur ce petit EeePC sans lecteur CD. Vous pouvez réparer ce grub que vous venez de dégommer sans sortir votre clé USB bootable. Pour aller plus loin, sachez qu&#8217;il est possible par mesure de sécurité (ou commodité) de proposer un PXE différent pour chaque machine en fonction de sa MAC.</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/07/15/zeroconf-reseaux-ip-sans-configuration/' rel='bookmark' title='Zeroconf : Réseaux IP sans configuration'>Zeroconf : Réseaux IP sans configuration</a></li>
<li><a href='http://geekfault.org/2011/03/24/devbox-kvmlibvirt-perfect-setup/' rel='bookmark' title='Devbox KVM+Libvirt perfect setup.'>Devbox KVM+Libvirt perfect setup.</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/GQZHXQCSvis" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/05/15/pxe-ya-til-un-bootloader-sur-lreseau/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Linux – Laptop – Ultimate Powersaving !</title>
		<link>http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/</link>
		<comments>http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/#comments</comments>
		<pubDate>Thu, 13 May 2010 12:52:48 +0000</pubDate>
		<dc:creator>bragon</dc:creator>
				<category><![CDATA[Geeklife]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[Matériel]]></category>
		<category><![CDATA[batterie optimisation]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[powertop]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=4331</guid>
		<description><![CDATA[Le but de cet article est de faire économiser de la batterie à votre laptop sous Linux. Avec quelques tips, c&#8217;est possible très facilement. On peut gagner 1h de batterie avec quelques méthodes simples. Follow the white rabbit Outils indispensable Déjà il va vous falloir vous munir d&#8217;un outils indispensable développé par intel nommé : [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/07/12/transformer-laptop-en-routeur-wifi/' rel='bookmark' title='Partager la connexion de son laptop'>Partager la connexion de son laptop</a></li>
<li><a href='http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/' rel='bookmark' title='Faille critique dans tous les noyaux Linux'>Faille critique dans tous les noyaux Linux</a></li>
<li><a href='http://geekfault.org/2009/05/31/chromium-google-chrome-sous-linux/' rel='bookmark' title='Chromium, le Google Chrome sous Linux sans émulation'>Chromium, le Google Chrome sous Linux sans émulation</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/attachment/308/" rel="attachment wp-att-4334"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/05/308-300x300.jpg" alt="" title="308" width="300" height="300" class="alignleft size-medium wp-image-4334" /></a></p>
<p>Le but de cet article est de faire économiser de la batterie à votre laptop sous Linux.</p>
<p>Avec quelques tips, c&#8217;est possible très facilement.<br />
On peut  gagner 1h de batterie avec quelques méthodes simples.</p>
<p>Follow the white rabbit</p>
<p><!--more--></p>
<h3> Outils indispensable </h3>
<p>Déjà il va vous falloir vous munir d&#8217;un outils indispensable développé par intel nommé : powertop<br />
Le gars qui cherche à économiser de la batterie et qui n&#8217;a pas installé powertop c&#8217;est vraiment un gros naz <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><code><br />
emerge -av powertop<br />
</code></p>
<p><code><br />
apt-get install powertop<br />
</code></p>
<p>Lancez powertop en root, et suivez le guide, tout est expliqué directement dans l&#8217;interface ncurses.</p>
<h3> Désactive le superflu dans l&#8217;bios petite loutre </h3>
<p>Il convient d&#8217;aller désactiver les choses dont vous ne vous servez jamais dans le bios.<br />
Exemple :</p>
<li>Désactiver le bluetooth</li>
<li>Désactiver le wake on lan sur eth0</li>
<li>Désactiver l&#8217;extension Wimax de votre carte wifi.</li>
<li>Désactiver le lecteur CD si vous ne vous en servez jamais.</li>
<p>Etc &#8230; etc &#8230;</p>
<p>ça permet d&#8217;économiser déjà pas mal de batterie.</p>
<h3> Modifies ton sysctl.conf petit castor </h3>
<p>Quelques réglages à avoir dans le sysctl.conf</p>
<p>modifier : /etc/sysctl.conf<br />
<code><br />
vm.laptop_mode = 5  # Activating laptop mode, power friendly I/Os<br />
vm.dirty_writeback_centisecs = 2000<br />
kernel.nmi_watchdog = 0<br />
vm.swappiness = 5<br />
</code></p>
<p>Le writeback du cache du système de fichiers sur le disque dur se fait assez fréquemment. Pour réduire la consommation, il suffit de le faire moins fréquemment.<br />
Par defaut le writeback est à 500</p>
<h3> fout ça dans ton /sys petit scarabée </h3>
<p><code><br />
echo 10 > /sys/module/snd_hda_intel/parameters/power_save<br />
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy<br />
echo min_power > /sys/class/scsi_host/host1/link_power_management_policy<br />
</code></p>
<h3> Actives le power management dans ta carte wifi Intel petite fourmis des bois </h3>
<p><code><br />
iwconfig wlan0 power on<br />
</code></p>
<h3>  Mon petit script à la con, lis ça petit phasmid </h3>
<p><code></p>
<p>#!/bin/bash</p>
<p>#echo 5 > /sys/bus/pci/drivers/iwlagn/*/power_level<br />
echo 5 > /sys/bus/pci/drivers/iwlagn/0000\:03\:00.0/power_level</p>
<p>echo 1 > /sys/devices/system/cpu/sched_mc_power_savings</p>
<p>echo 1500 > /proc/sys/vm/dirty_writeback_centisecs</p>
<p>echo 5 > /proc/sys/vm/laptop_mode</p>
<p># passe en economie d'energie la carte son<br />
echo 10 > /sys/module/snd_hda_intel/parameters/power_save<br />
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy<br />
# desactive le wake on lan sur eth0<br />
ethtool -s eth0 wol d<br />
# met la luminosité à 30%<br />
xbacklight -set 30<br />
# Passe le frequency scaling en "on demand"<br />
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor</p>
<p>## Spécifique thinkpad x300 ou equivalent<br />
# desactive le bluetooth<br />
echo disable > /proc/acpi/ibm/bluetooth<br />
# desactive le modem 3G<br />
echo disable > /proc/acpi/ibm/wan<br />
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy</p>
<p></code></p>
<p>Le paramètre sched_smt_power_savings sous /sys/devices/system/cpu/ contrôle le multithreading. Par défaut, il vaut 0 pour des performances optimales<br />
Mettez le à 1 pour avoir plus de batterie, ainsi vous ne vous servirez du second cœur de votre cpu qu&#8217;en cas de besoin ! :</p>
<p><code><br />
echo 1 > /sys/devices/system/cpu/sched_smt_power_savings<br />
</code></p>
<h3> Conclusion </h3>
<p>Cet article n&#8217;est pas complet car j&#8217;ai également des optimisations dans mon kernel, mais ça peut déjà vous donner une bonne base de travail.<br />
N&#8217;hésitez pas à faire des bench avec powertop à CHAQUE modification pour voir ce que ça change sur votre consommation en Watts.</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/07/12/transformer-laptop-en-routeur-wifi/' rel='bookmark' title='Partager la connexion de son laptop'>Partager la connexion de son laptop</a></li>
<li><a href='http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/' rel='bookmark' title='Faille critique dans tous les noyaux Linux'>Faille critique dans tous les noyaux Linux</a></li>
<li><a href='http://geekfault.org/2009/05/31/chromium-google-chrome-sous-linux/' rel='bookmark' title='Chromium, le Google Chrome sous Linux sans émulation'>Chromium, le Google Chrome sous Linux sans émulation</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/4sZ-HcW6p8Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>maintenir son DNS menteur avec Adblock</title>
		<link>http://geekfault.org/2010/05/11/maintenir-son-dns-menteur-avec-adblock/</link>
		<comments>http://geekfault.org/2010/05/11/maintenir-son-dns-menteur-avec-adblock/#comments</comments>
		<pubDate>Tue, 11 May 2010 16:39:21 +0000</pubDate>
		<dc:creator>ckg</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[adblock]]></category>
		<category><![CDATA[bind9]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=3712</guid>
		<description><![CDATA[<a href="http://geekfault.org/wp-content/uploads/2010/05/yoyo_polish_abp_geekfault.png"><img src="http://geekfault.org/wp-content/uploads/2010/05/yoyo_polish_abp_geekfault.png" alt="" title="yoyo_polish_abp_geekfault" width="128" height="128" class="alignleft size-full wp-image-4102" /></a>Filtrer les web-espions (google analytics, xiti ...) n'est qu'un début. Le nombre de fichiers javascript, css et images en tout genre destinés à vous profiler est non négligeable, mais le pire est en fait le nombre de publicités pourrissant votre expérience utilisateur. Comment peut-on intégrer dans bind9,  les filtres adblock que l'on a construit minutieusement ?
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/04/24/dns-menteur/' rel='bookmark' title='DNS menteur, une autre méthode anti-curieux'>DNS menteur, une autre méthode anti-curieux</a></li>
<li><a href='http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/' rel='bookmark' title='La nouvelle mode Geek : avoir son domaine .42'>La nouvelle mode Geek : avoir son domaine .42</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2010/05/yoyo_polish_abp_geekfault.png" title="yoyo_polish_abp_geekfault" rel="lightbox.3712"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/05/yoyo_polish_abp_geekfault.png" alt="" title="yoyo_polish_abp_geekfault" width="128" height="128" class="alignleft size-full wp-image-4102" /></a>Filtrer les web-espions (google analytics, xiti &#8230;) n&#8217;est qu&#8217;un début. Le nombre de fichiers javascript, css et images en tout genre destinés à vous profiler est non négligeable, mais le pire est en fait le nombre de publicités pourrissant votre expérience utilisateur. Comment peut-on intégrer dans bind9,  les filtres adblock que l&#8217;on a construit minutieusement ?</p>
<p>Les régies de publicité ne sont pas honnêtes, elles proposent de la pornographie (bon ça c&#8217;est pas grave), des jeux en ligne (ça ne touche que les cons qui croient gagner face à un logiciel), des faux antivirus (là c&#8217;est moins drôle) voire des mouchards (là je ne ris plus du tout).<br />
Filtrer les pubs est parfois considéré comme une attitude hostile vis à vis de l&#8217;éditeur du contenu que vous vous apprêtez à consommer. Vous refusez la contrepartie d&#8217;un service gratuit, vous êtes <strong>fourbes</strong>, vous mériteriez d&#8217;aller casser des cailloux à <a href="http://fr.wikipedia.org/wiki/Bagne_de_Cayenne">Cayenne</a> et qu&#8217;on fasse un <a href="http://lolcat.com/gallery/1.html">lolcat</a> avec votre chien.<br />
<!--more--></p>
<h3>Plan du site</h3>
<p>Dans cette page nous allons capitaliser sur le travail bienveillant des <a href="#yoyo">furieux de chez yoyo.org</a>, utiliserons <del>les excellentes listes de <strong>fanboy et de liam</strong></del> une liste <a href="#polonaise">adblock polonaise</a> et nous finirons par intégrer la liste adblock de notre <a href="#profilfirefox">profil firefox</a>.<br />
Les trois source seront formatées en un <a href="#blackhole">fichier de configuration</a> pour notre DNS menteur.</p>
<p><a name="yoyo"></a></p>
<h3>Chez yoyo.org</h3>
<p>Chez yoyo ils sont très geek. Il est possible de télécharger une liste toute prête des données qui nous intéresse. Ce qui nous importe le plus, c&#8217;est le formulaire de la section <a href="http://pgl.yoyo.org/adservers/index.php">adservers</a>. Nous allons choisir le format de sortie &#8220;AdBlock&#8221; pour le champ &#8220;list ad server hostnames:&#8221;.<br />
Nous invoquerons cette liste par l&#8217;URL suivante <a href="http://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblock">http://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblock</a> pour ne plus avoir à faire du clic-clic lors des mises à jour.</p>
<p>L&#8217;objectif est d&#8217;obtenir des hosts de cette liste, ce qui se fait très simplement par :<br />
<code><br />
curl -s 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblock' | egrep '^[a-z0-9]*\.[a-z0-9]*' | sort -u<br />
</code><br />
Ce qui donne  :<br />
<code><br />
a.collective-media.net<br />
a.consumer.net<br />
(...)<br />
kliks.nl<br />
klipads.dvlabs.com<br />
(...)<br />
zintext.com<br />
zmedia.com<br />
</code><br />
Le site pgl.yoyo.org est très riche, la section adservers est une mine d&#8217;information pour le filtrage responsable en environnement réseau très hétérogènes.</p>
<p><a name="polonaise"></a></p>
<h3>Liste adblock polonaise</h3>
<p>Commençons par une digression sur la Creative Commons : c&#8217;est un concept de licence que je n&#8217;apprécie pas. La notion de paternité pour un fichier de configuration me sidère.<br />
Les excellentes listes adblock de Fanboy et Liam sont en CC NC BY SA, leur réutilisation est incompatible avec la licence <strong>initiale</strong> (WTFPL) compatible avec la licence utilisée par Geekfault pour les articles. Bref, nous allons nous orienter vers une liste plus amicale.</p>
<p>Ce qui nous emmène à l&#8217;utilisation de la <a href="http://adblocklist.org/adblock-pxf-polish.txt">liste</a> du site <a href="http://adblocklist.org/">AdblockList.org</a> (en polonais).<br />
Voici les 4 structures possibles :<br />
<code><br />
(...)</p>
<p>http://*.statcounter.com/*</p>
<p>(...)</p>
<p>http://partner.ceneo.pl/pp/*</p>
<p>(...)<br />
|http://mklik.gazeta.pl/*<br />
(...)<br />
||nuggad.net/*<br />
(...)<br />
</code><br />
<em>La différence entre webespion.com, |webespion.com et ||webespion.com est documenté dans la section <a href="http://adblockplus.org/fr/filters">filters</a> de AdblockPlus.</em><br />
Ce qui nous conduit a l&#8217;expression régulière suivante :<br />
<code>'^|{0,2}(http://)?[^/.]+.[^/#]+/[^/$a-z0-9]*$'</code><br />
Utilisable par exemple comme ceci :<br />
<code>$ curl -s http://adblocklist.org/adblock-pxf-polish.txt | egrep '^\|{0,2}(http://)?[^/.]+.[^/#]+/[^/$a-z0-9]*$'</p>
<p>http://r.reklama.biz/*</p>
<p>http://*stats.wordpress.com/*</p>
<p>|http://mklik.gazeta.pl/*</p>
<p>http://rek.www.wp.pl/*</p>
<p>http://kropka.onet.pl/*</p>
<p>http://csr.onet.pl/*</p>
<p>||nuggad.net/*<br />
(...)<br />
</code><br />
Avec perl nous allons, en une seule ligne (merci <a href="/author/madx/">madx</a>), regrouper le egrep ET nettoyer la sortie<br />
<code><br />
$ curl -s http://adblocklist.org/adblock-pxf-polish.txt | perl -ne 'm;^\|{0,2}(http://)?[^/.]+.[^/#]+/[^/$a-z0-9]*$; &#038;& m;^\|{0,2}(http://)?\*?.?([^/#]*)/; &#038;&#038; print $2."\n";'<br />
r.reklama.biz<br />
stats.wordpress.com<br />
mklik.gazeta.pl<br />
rek.www.wp.pl<br />
kropka.onet.pl<br />
csr.onet.pl<br />
nuggad.net<br />
(...)<br />
</code><br />
<a name="profilfirefox"></a></p>
<h3>La liste adblock de notre profil Firefox</h3>
<p>Maintenant que nous savons sélectionner depuis une liste adblock, les filtres intégrables à bind9 et que nous savons nettoyer nous pouvons parcourir la liste adblock dans nos profils firefox :<br />
<code>$ (for i in ~/.mozilla/firefox/*/adblockplus/patterns*; do perl -ne 'm;^|{0,2}(http://)?[^/.]+.[^/#]+/[^/$a-z0-9]*$; &#038;& m;^|{0,2}(http://)?*?.?([^/#]*)/; &#038;&#038; print $2." <-- ".$_."n";' < $i;done;) | sort -u | less</code><br />
Ce qui donne chez moi :<br />
<code><br />
(...)<br />
5killspyware.eu <-- ||5killspyware.eu/<br />
5l2o8.com <-- ||5l2o8.com/<br />
5mariasara.cn <-- ||5mariasara.cn/<br />
5may2009.com <-- ||5may2009.com/<br />
5removespyware.com <-- ||5removespyware.com/<br />
5rublei.com <-- ||5rublei.com/<br />
5w90.co.cc <-- ||5w90.co.cc/<br />
5we5.com <-- ||5we5.com/<br />
5yttrre.cn <-- ||5yttrre.cn/<br />
6-tube-world.com <-- ||6-tube-world.com/<br />
60sys60.cn <-- ||60sys60.cn/<br />
</code><br />
On peut donc parcourir la liste temporaire et regarder si il n'y a pas trop de faux positifs. A plusieurs milliers de lignes (21282 très précisément sur mes profils firefox) il ne faut pas hésiter à faire un lecture étalée dans le temps.<br />
Normalement il n'y aura pas trop de surprises, nous obtenons une liste de hosts correctes comme ceci :<br />
<code><br />
(for i in ~/.mozilla/firefox/*/adblockplus/patterns*; do perl -ne 'm;^|{0,2}(http://)?[^/.]+.[^/#]+/[^/$a-z0-9]*$; &#038;& m;^|{0,2}(http://)?*?.?([^/#]*)/; &#038;&#038; print $2."n";' < $i;done;) | sort -u </code></p>
<p><a name="blackhole"></a></p>
<h3>Création du fichier blackhole.conf</h3>
<p>Pour rappel, notre structure de blackhole.conf est:<br />
<code>zone "HOTE_A_FILTRER" { type master; notify no; file "null.zone.file"; };</code><br />
Nous savons que la commande pour extraire HOTE_A_FILTRER avec :</p>
<ul>
<li>la liste de chez yoyo :</li>
</ul>
<p><code>curl -s 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblock' | egrep '^[a-z0-9]*\.[a-z0-9]*'</code></p>
<ul>
<li>la liste adblock polonaise :</li>
</ul>
<p><code>curl -s http://adblocklist.org/adblock-pxf-polish.txt | perl -ne 'm;^\|{0,2}(http://)?[^/.]+.[^/#]+/[^/$a-z0-9]*$; &#038;& m;^\|{0,2}(http://)?\*?.?([^/#]*)/; &#038;&#038; print $2."\n";'</code></p>
<ul>
<li>notre liste adblock maison :</li>
</ul>
<p><code>(for i in ~/.mozilla/firefox/*/adblockplus/patterns*; do perl -ne 'm;^\|{0,2}(http://)?[^/.]+.[^/#]+/[^/$a-z0-9]*$; &#038;& m;^\|{0,2}(http://)?\*?.?([^/#]*)/; &#038;&#038; print $2."\n";' < $i;done;)</code></p>
<p>Nous pouvons donc écrire notre générateur de blackhole.conf en une seule ligne (bash) :<br />
<code>(for i in `((curl -s 'http://pgl.yoyo.org/adservers/serverlist.php?hostformat=adblock' | egrep '^[a-z0-9]*\.[a-z0-9]*');(curl -s http://adblocklist.org/adblock-pxf-polish.txt | perl -ne 'm;^\|{0,2}(http://)?[^/.]+.[^/#]+/[^/$a-z0-9]*$; &#038;& m;^\|{0,2}(http://)?\*?.?([^/#]*)/; &#038;&#038; print $2."\n";');(for i in ~/.mozilla/firefox/*/adblockplus/patterns*; do perl -ne 'm;^\|{0,2}(http://)?[^/.]+.[^/#]+/[^/$a-z0-9]*$; &#038;& m;^\|{0,2}(http://)?\*?.?([^/#]*)/; &#038;&#038; print $2."\n";' < $i;done;) ) | sort -u `; do echo "zone "$i" { type master; notify no; file \"null.zone.file\"; };";done;)> blackhole.conf</code></p>
<p><a name="conclusion"></a></p>
<h3>Conclusion</h3>
<p>Nous voila donc avec un blackhole.conf prêt a être injecté dans notre bind9 local comme expliqué dans <a href="/2010/04/24/dns-menteur/">l'article de base du dns menteur</a>. </p>
<p>J'attire votre attention sur le fait que cette liste brute a de grandes chances de ne pas être tout à fait conforme à votre utilisation du web. Sur plus de 22000 entrées (ce qui est mon cas), il y a de grandes chances d'avoir des doublons genre xyz.webespion.org et webespion.org par exemple.<br />
Le principal risque des listes adblock est le faux-positif, ce risque est transmis intégralement. Je vous invite à manier tout ceci avec prudence.</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/04/24/dns-menteur/' rel='bookmark' title='DNS menteur, une autre méthode anti-curieux'>DNS menteur, une autre méthode anti-curieux</a></li>
<li><a href='http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/' rel='bookmark' title='La nouvelle mode Geek : avoir son domaine .42'>La nouvelle mode Geek : avoir son domaine .42</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/Geekfault/~4/IglzUznxeSo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/05/11/maintenir-son-dns-menteur-avec-adblock/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 1.892 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-02-05 12:15:05 -->

