<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Christophe Nowicki &#187; Network</title>
	<atom:link href="http://www.csquad.org/category/network/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.csquad.org</link>
	<description>Just for fun</description>
	<lastBuildDate>Fri, 14 Jan 2011 08:32:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Migration d&#8217;un réseau Debian GNU/Linux vers IPv6 et au-delà &#8230;</title>
		<link>http://www.csquad.org/2010/03/29/migration-un-reseau-debian-gnulinux-ipv6/</link>
		<comments>http://www.csquad.org/2010/03/29/migration-un-reseau-debian-gnulinux-ipv6/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 01:14:24 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[6to4]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[Hurricane electronics]]></category>
		<category><![CDATA[Internet of Things]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Shorewall]]></category>
		<category><![CDATA[Squid]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=1149</guid>
		<description><![CDATA[




C&#8217;était une tâche sur ma TODO liste depuis quelques années&#8230;
J&#8217;ai enfin franchi le pas  et migré mon réseau vers IPv6.
Cette migration n&#8217;est pas encore évidente et j&#8217;ai rencontré quelques problèmes dont je voulais vous faire part dans ce billet.




L&#8217;objectif inavouable de cette migration était de rendre mon réfrigérateur directement accessible depuis le travail  [...]]]></description>
			<content:encoded><![CDATA[<table border="0">
<tr>
<td valign="top"><a href="http://www.csquad.org/wp-content/uploads/2010/03/colonne_de_manchots_empereurs.jpg"><img src="http://www.csquad.org/wp-content/uploads/2010/03/colonne_de_manchots_empereurs-300x199.jpg" alt="Migration IPv6" title="colonne_de_manchots_empereurs" width="300" height="199" class="alignnone size-medium wp-image-1153" /></a></td>
<td valign="top">
<p>
C&#8217;était une tâche sur ma TODO liste depuis quelques années&#8230;<br />
J&#8217;ai enfin franchi le pas  et migré mon réseau vers <a href="http://fr.wikipedia.org/wiki/IPv6">IPv6</a>.</p>
<p>Cette migration n&#8217;est pas encore évidente et j&#8217;ai rencontré quelques problèmes dont je voulais vous faire part dans ce billet.
</p>
</td>
</tr>
</table>
<p>L&#8217;objectif inavouable de cette migration était de rendre mon réfrigérateur directement accessible depuis le travail <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Amis manchots, suivez- moi <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<h3>Présentation d&#8217;IPv6</h3>
<p>IPv6 c&#8217;est le futur &copy;, l&#8217;avenir du monde libre, c&#8217;est le monde de demain &#8230; puisqu&#8217;on vous le dit depuis 10ans^W^W!</p>
<p>Bref, je ne vais pas vous faire un long discours sur le sujet mais<br />
 plus simplement vous expliquer ce qui a réellement motivé ma migration.</p>
<p>Comme vous le savez sûrement, je m&#8217;intéresse un peu à la <a href="http://fr.wikipedia.org/wiki/Domotique">domotique</a> et à la culture <a href="http://fr.wikipedia.org/wiki/Do_it_yourself">D.I.Y.</a>, ce qui m&#8217;a permis de découvrir quelques concepts sympathiques et connexe au domaine tels que :</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Physical_computing">Physical computing</a> : l&#8217;intéraction entre un processeur et le monde physique ;</li>
<li><a href="http://en.wikipedia.org/wiki/AmI">Ambient intelligence</a> : L&#8217;Intelligence ambiante, la fonte de l&#8217;informatique dans nos objets de tous les jours ;</li>
<li><a href="http://en.wikipedia.org/wiki/Internet_of_Things">Internet of Things</a> : L&#8217;Internet des objets, l&#8217;extension de l&#8217;Internet au monde réel.</li>
</ul>
<p>Pour émerger, ces concepts ont tous besoin de la même chose : un nouveau protocole Internet permettant :</p>
<ul>
<li>d&#8217;augmenter sensiblement le nombre d&#8217;adresses disponibles ;</li>
<li>des mécanismes de configuration automatique ;</li>
<li>la sécurité et de la mobilité. </li>
</ul>
<p>Avec IPv6, il est possible de connecter :</p>
<ul>
<li>Un réseau de <a href="http://www.shapeshifter.se/2009/07/10/1-wire-meets-ipv6/">capteurs 1-wire directement</a> ;  </li>
<li>Un réseau de capteurs sans fil (<a href="http://en.wikipedia.org/wiki/Wireless_sensor_network">WSN</a>), 802.15.4, <a href="http://www.zigbee.org/">ZigBee</a>,  <a href="http://en.wikipedia.org/wiki/6LoWPAN">6LoWPAN</a>, etc &#8230;</li>
<li>Une carte <a href="http://sites.google.com/site/ghoelzl/ipv6ethershield">Arduino au reste du monde</a>.</li>
</ul>
<p>Bref, cela permet d&#8217;ouvrir de nombreuses possibilités <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Tunnel</h3>
<p>Si votre fournisseur d&#8217;accès Internet ne met pas à votre disposition une collectivité IPv6 native, alors vous aurez besoin de mettre en place un tunnel <a href="http://fr.wikipedia.org/wiki/6to4">6to4</a>.<br />
Visiblement seuls <a href="http://www.nerim.fr/ipv6">Nerim</a> et <a href="http://www.fdn.fr/IPv6-a-la-maison.html">FDN</a> offrent en <a href="http://www.sixxs.net/faq/connectivity/?faq=native&#038;country=fr">France</a> un collectivités IPv6 native.  </p>
<h4>IPv6 Tunnel Brocker</h4>
<p>Pour obtenir un tunnel, il suffit d&#8217;ouvrir un compte chez <a href="http://tunnelbroker.net/">Hurricane Electric</a> (HE), vous devez suivre la procédure décrite avec des copies d&#8217;écran sur <a href="http://www.howtoforge.com/using-ipv6-on-debian-etch">howto forge</a>. </p>
<h4>Fonctionnalités</h4>
<p>HE vous fournit les services suivants :</p>
<ul>
<li>Tunnel 6to4 ;</li>
<li>Deux sous-réseau IPv6 : /64 et /48 ;</li>
<li>Serveur DNS accessible en IPv4 et IPv6 ;</li>
<li>Résolution inverse DNS sur vos deux sous réseaux ;</li>
<li>Une <a href="http://ipv6.he.net/certification/">certification</a> de vos compétences IPv6 et du bon fonctionnement de votre reseau.</li>
</ul>
<p>Un des gros avantage de HE est de vous fournir un sous-réseau /48 qu&#8217;il est possible de découper en plusieurs sous-réseau /64 en fonction de vos besoins : LAN, DMZ, Réseau de capteurs, etc&#8230;</p>
<h3>Configuration du pare-feu Shorewall</h3>
<h4>DMZ avec un s</h4>
<p>Comme la plupart des réseaux, j&#8217;utilise le principe de <a href="http://fr.wikipedia.org/wiki/Zone_d%C3%A9militaris%C3%A9e">DMZ</a> pour les services accessibles publiquement en IPv4. </p>
<p>Comme IPv6 me fournit beaucoup plus d&#8217;adresses publiques, il est possible de découper la route /48 fourni par HE en plusieurs DMZ.</p>
<h4>Installation de Shorewall6</h4>
<p>Pour la gestion du pare-feu, j&#8217;utilise les scriptes fournis par le projet <a href="http://www.shorewall.net/">Shorewall</a>, qui facilite grandement l&#8217;écriture et l&#8217;organisation des règles.<br />
Pour la gestion de l&#8217;IPv6, il est nécessaire d&#8217;utiliser une version spécifique : <a href="http://packages.debian.org/search?keywords=shorewall6">shorewall6</a>.<br />
Celle-ci est disponible dans les versions <em>squeeze</em> et <em>sid</em> de Debian, il est donc nécessaire de <em>backporter</em> le paquet.<br />
Il suffit donc de backporter la version 4.4 de shorewall dans <em>lenny</em> :<br />
<code><br />
# cd /usr/src<br />
# wget http://ftp.de.debian.org/debian/pool/main/s/shorewall6/shorewall6_4.4.7.4-2.dsc<br />
# wget http://ftp.de.debian.org/debian/pool/main/s/shorewall6/shorewall6_4.4.7.4.orig.tar.gz<br />
# wget http://ftp.de.debian.org/debian/pool/main/s/shorewall6/shorewall6_4.4.7.4-2.diff.gz<br />
# wget http://ftp.de.debian.org/debian/pool/main/s/shorewall/shorewall_4.4.7.5-1.dsc<br />
# wget http://ftp.de.debian.org/debian/pool/main/s/shorewall/shorewall_4.4.7.5.orig.tar.gz<br />
# wget http://ftp.de.debian.org/debian/pool/main/s/shorewall/shorewall_4.4.7.5-1.diff.gz<br />
# dpkg-source -x shorewall6_4.4.7-2.dsc<br />
# dpkg-source -x shorewall_4.4.7-1.dsc<br />
# cd shorewall-4.4.7<br />
# dpkg-buildpackage -b<br />
...<br />
# dpkg -i ../shorewall-common*<br />
# dpkg -i ../shorewall-all*<br />
# dpkg -i ../shorewall-shell*<br />
# cd ../shorewall6-4.4.7<br />
# dpkg-buildpackage -b<br />
# dpkg -i ../shorewall6*.deb<br />
</code></p>
<h4>Configuration du tunnel</h4>
<p>Pour le tunnel 6to4, il est nécessaire de modifier le fichier <em>/etc/shorewall/tunnels</em> de Shorewall (IPv4) :<br />
<code>###############################################################################<br />
#TYPE                   ZONE    GATEWAY         GATEWAY<br />
6to4                    net     IP<br />
# </code></p>
<h4>Migration de la configuration</h4>
<p>Vous devez ensuite migrer votre configuration de Shorewall IPv4 vers IPv6.<br />
Pour cela vous pouvez vous aider avec les exemples fournis dans le <em>/usr/share/doc/shorewall6/examples</em></p>
<p>La stratégie de filtrage est identique à celle en IPv4 : c&#8217;est à dire bloquer tous les services et ajouter des règles spécifiques pour autoriser des services.  Il faut juste faire attention à l&#8217;ICMPv6 qui à un plus grand rôle dans le cas de IPv6.</p>
<p>Pour la configuration des fonctionnalités spécifiques à IPv6 dans Shorewall6, vous pouvez vous reporter directement à la documentation : <a href="http://www.shorewall.net/IPv6Support.html">Shorewall IPv6 Support</a></p>
<h3>Configuration du DNS</h3>
<p>Pour la configuration de mon serveur DNS, <a href="http://www.isc.org/software/bind">BIND</a> prend en charge l&#8217;IPv6. J&#8217;ai donc créé une sous-zone <em>v6.csquad.org</em> pour les services uniquement accèssibles en IPv6  et attribués des addresses aux services publics existants :</p>
<pre>$ grep AAAA /etc/bind/wan/db.csquad.org
        		AAAA    2001:470:c830::6
ns			AAAA	2001:470:c830::3
smtp			AAAA	2001:470:c830::10
www                      AAAA    2001:470:c830::6</pre>
<p>Une sous-zone <em>v6.csquad.org</em> pour les services uniquement accessibles en IPv6:</p>
<pre>$TTL    3600 ; 8 heures
@       IN      SOA ns.v6.csquad.org. hostmaster.csquad.org. (
                        2010031801      ; Serial
                                1D      ; Refresh
                                2H      ; Retry
                                6W      ; Expire
                         3600 ) ; Negative Cache TTL

                        NS      ns.v6.csquad.org.
                        A       82.247.220.114

ns              IN A 82.247.220.114

host             IN      AAAA    2042:42:42:42:42:42:42:42</pre>
<p>La partie la plus difficile est la Zone inverse IPv6, car le contenu du fichier est très verbeux, et il est nécessaire de manipuler des adresses complexes à la main :</p>
<pre>
$TTL    3600 ; 8 heures
@       IN      SOA ns.v6.csquad.org. hostmaster.csquad.org. (
                        2010031602      ; Serial
                                1D      ; Refresh
                                2H      ; Retry
                                6W      ; Expire
                         3600 ) ; Negative Cache TTL

                        NS      ns.v6.csquad.org.

$ORIGIN 0.0.2.4.0.0.2.4.0.0.2.4.0.2.ip6.arpa.

2.4.0.0.2.4.0.0.2.4.0.0.2.4.0.0.2.4 IN PTR host.v6.csquad.org.
</pre>
<p>Pour vous aider, vous pouvez utiliser le programme <a href="http://www.deepspace6.net/projects/ipv6calc.html">ipv6calc</a> :<br />
<code><br />
$ ipv6calc --in ipv6addr --out revnibbles.arpa 2042:42:42:42:42:42:42:42<br />
2.4.0.0.2.4.0.0.2.4.0.0.2.4.0.0.2.4.0.0.2.4.0.0.2.4.0.0.2.4.0.2.ip6.arpa.<br />
</code></p>
<p>Vous pouvez tester le bon fonctionnement du DNS IPv6 à l&#8217;aide de la commande <em>dig</em> :<br />
<code>$ dig +short -t aaaa host.v6.csquad.org<br />
2042:42:42:42:42:42:42:42</code><br />
Le reverse :<br />
<code>$ dig +short -x 2042:42:42:42:42:42:42:42<br />
host.v6.csquad.org.</code></p>
<h4>Google et ses amis</h4>
<p>De nombreux services Internet ne sont pas IPv6 ready <em>out of the box</em> et utilisent des sous-zones DNS pour leur services accèssibles en IPv6. Par example Google :<br />
<code>$ dig +short -t aaaa  www.google.com<br />
$ dig +short -t aaaa  ipv6.google.com<br />
ipv6.l.google.com.<br />
2a00:1450:8001::63<br />
2a00:1450:8001::67<br />
2a00:1450:8001::68<br />
2a00:1450:8001::69<br />
2a00:1450:8001::6a<br />
2a00:1450:8001::93<br />
</code><br />
La commande ne retourne pas d&#8217;adresse IPv6, car google réserve cette réponse aux ISP/services qui disposent d&#8217;une connectivité IPv6 :<br />
<code>$ dig +short -t aaaa @212.27.32.176   google.com<br />
$ dig +short -t aaaa @4.2.2.2   google.com<br />
</code><br />
Pas de réponse via le DNS de Free et le DNS Public de Google.<br />
Par contre, si j&#8217;interroge le DNS de Hurricane Electric (HE) :<br />
<code> $ dig +short -t aaaa @74.82.42.42   google.com<br />
2a00:1450:8001::68<br />
2a00:1450:8001::93<br />
2a00:1450:8001::6a<br />
2a00:1450:8001::67<br />
2a00:1450:8001::69<br />
2a00:1450:8001::63<br />
</code><br />
Il faut donc modifier le fichier <em>/etc/bind/named.conf.local</em> pour <em>forwarder</em> la résolution de certains noms de domaine via le DNS de HE :</p>
<pre>zone "google.com" {
        type forward;
        forwarders {
                  2001:470:20::2;
        };
};</pre>
<p>D&#8217;habitude, je fais du Google bashing, mais je dois avouer que cette fois-ci Google est le seul à résoudre en IPv6.<br />
Les autres <em>&#8220;Grands Noms de l&#8217;Internet&#8221; </em>, ne disposent pas d&#8217;une connectivité IPv6, parmi ceux-ci :</p>
<ul>
<li>wikipedia ;</li>
<li>facebook ;</li>
<li>twitter ;</li>
<li>flickr ;</li>
<li>yahoo ;</li>
<li>slashdot ;</li>
<li>linuxfr.org ;</li>
</ul>
<p>Bref, seul google est IPv6 friendly, les autres acteurs de l&#8217;internet sont à la traine. </p>
<p>Vous pouvez tester tous ses noms de domaines via cette page : <a href="http://peewee04.lab.bt.es/cgi-bin/step1.pl">IPv6 websites accesibility</a>.</p>
<h3>Configuration des machines</h3>
<h4>Autoconfiguration</h4>
<p>Pour l&#8217;auto-configuration des machines, vous devez installer le paquet <em>radvd</em> :<br />
<code># apt-get install radvd</code><br />
Et modifier le fichier de configuration <em>/etc/radvd.conf</em> pour prendre en charge votre interface LAN avec votre prefix IPv6, comme cela :</p>
<pre>
interface eth1
{
        AdvSendAdvert on;
        MaxRtrAdvInterval 30;
        prefix 2042:42:42:42::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
                AdvRouterAddr off;
                AdvValidLifetime 300;
                AdvPreferredLifetime 120;
        };
};
</pre>
<p>Ensuite vous devez relancer le daemon :<br />
<code> # /etc/init.d/radvd restart</code></p>
<p>Ensuite vous pouvez relancer l&#8217;interface réseau d&#8217;une machine et vérifier qu&#8217;elle à bien pris une adresse IPv6 :</p>
<pre># ip -f inet6 addr   | grep -B 1 global
4: eth0: &lt;BROADCAST ,MULTICAST,MASTER,UP,LOWER_UP&gt; mtu 9000
    inet6 2042:42:42:42:42:42:42:2/64 scope global dynamic</pre>
<p>Cette adresse IPv6 est produite à l&#8217;aide du prefix v6 et l&#8217;adresse MAC de votre carte réseau. </p>
<h4>IP statique</h4>
<p>Vous pouvez aussi attribuer une adresse IPv6 statique à l&#8217;aide du fichier <em>/etc/network/interfaces</em> :</p>
<pre>
auto eth0
iface eth0 inet static
        address 192.168.0.11
        netmask 255.255.255.0
        gateway 192.168.0.100

iface eth0 inet6 static
        address 2042:42:42:42::1
        netmask 64
        gateway 2042:42:42:42::100
</pre>
<h4>Linux-VServer</h4>
<p>La version de Linux <a href="http://linux-vserver.org/">VServer</a> disponible dans Debian &#8220;lenny&#8221; dispose du support IPv6. </p>
<p>Il suffit d&#8217;ajouter l&#8217;adresse ip à l&#8217;interface et relancer le serveur :<br />
<code><br />
# cd /etc/vservers/NOM_MACHINE/interfaces<br />
# mkdir 1<br />
# echo "eth0" > dev<br />
# echo "2042:42:42:42:42:42:42:42/64" > ip<br />
# echo "NOM_MACHINE" > name<br />
# vserver NOM_MACHINE restart<br />
</code></p>
<h3>Migration des services</h3>
<h4>Apache</h4>
<p>Pour la configuration d&#8217;Apache, il suffit d&#8217;ajouter dans le fichier <em>/etc/apache2/ports.conf</em>, l&#8217;adresse de votre service :</p>
<p><code>Listen [2042:42:42:42:42:42:42:42]:80<br />
Listen [2042:42:42:42:42:42:42:42]:443</code></p>
<p>Puis d&#8217;utiliser cette adrese dans un <em>VirtualHost</em> :</p>
<pre>&lt;VirtualHost  [2042:42:42:42:42:42:42:42]:80&gt;
        ServerName host.v6.csquad.org
...</pre>
<h4>Messagerie</h4>
<p>La configuration de <a href="http://www.postfix.org/IPV6_README.html">Postfix en IPv6</a>, ne pose aucun problème particulier. Il suffit d&#8217;ajouter des enregistrements DNS AAAA à votre serveur de messagerie : </p>
<pre>
                        MX      10 smtp
smtp                    AAAA    2001:470:c830::10</pre>
<p>Et de modifier le fichier <em>/etc/postfix/main.cf</em> :</p>
<pre>mynetworks = 127.0.0.0/8 [::1]/128 [2001:470:c830::]/48 [2001:470:1f13:299::]/64
inet_interfaces = [2001:470:c830::10]
inet_protocols = ipv4, ipv6</pre>
<p>Ensuite, vous pourrez recevoir des mails de la part de <em>[2001:41b8:202:deb:...]</em> <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h4>CUPS</h4>
<p>La configuration est identique à celle d&#8217;apache. Il suffit de modifier la directive <em>Listen</em> du fichier <em>/etc/cups/cupsd.conf</em>.</p>
<h4>Samba</h4>
<p>Je n&#8217;ai pas testé, mais visiblement depuis 2008, Samba dispose d&#8217;un support d&#8217;IPv6 qui est parfaitement inter-opérable avec les versions recentes de Microsoft Windows : <a href="http://www.ipv6consultancy.com/ipv6blog/?cat=4">Archive for the ‘Samba’ Category</a> sur le blog de Erion Services.</p>
<h4>Squid</h4>
<p>Pour faire fonctionner le proxy mandataire <a href="http://www.squid-cache.org/">Squid</a> avec IPv6, il est nécessaire de mettre à jours la version disponible dans Debian &#8220;lenny&#8221;, vers la version 3.1.<br />
La procédure de mise à jours est décrite dans ce billet : <a href="http://www.sput.nl/software/squid31-lenny.html">Squid 3.1 on Debian Lenny</a></p>
<h4>Jabber</h4>
<p>Pour mon serveur Jabber, j&#8217;utilise <a href="http://www.ejabberd.im/">ejabberd</a>. La migration consiste simplement à ajouter votre interface IPv6 dans le fichier <em>/etc/ejabberd/ejabberd.cfg</em>, comme cela :</p>
<p><code><br />
{listen,<br />
 [<br />
  {5222, ejabberd_c2s, [<br />
                        inet6,<br />
                        {access, c2s},<br />
                        {shaper, c2s_shaper},<br />
                        {max_stanza_size, 65536},<br />
                        starttls, {certfile, "/etc/ejabberd/ejabberd.pem"}<br />
                       ]},<br />
...<br />
</code></p>
<p>Le plus dur est de trouver un serveur jabber compatible IPv6 poour faire du s2s.</p>
<h4>Téléphonie</h4>
<p>Il existe une version spécifique d&#8217;<a href="http://www.asteriskv6.org/">Asterisk pour IPv6</a>.,mais elle n&#8217;a pas été intégrée dans la branche principale du projet et elle n&#8217;a pas l&#8217;air d&#8217;être maintenue activement.<br />
Je vais donc me configurer <a href="http://www.kamailio.org/">OpenSER</a> (alias Kamailio) pour faire office de proxy SIP IPv4/IPv6. (en cours <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) </p>
<h4>Télévision</h4>
<p>Je diffuse la télévision sur mon résau local avec  <a href="http://mumudvb.braice.net">MuMuDVB</a> (j&#8217;ai décrit ma configuration dans ce billet : <a href="http://www.csquad.org/2009/07/12/diffuser-des-flux-tv-sur-reseau-local-avec-mumudvb/">Diffuser des flux TV sur réseau local avec MuMuDVB</a>). Celui-ci ne supporte pas IPv6. </p>
<p>Par contre <a href="http://www.videolan.org/vlc/">VLC</a> supporte très bien IPv6. Il est donc possible de transposer un flux IPv4 multicast vers un flux IPv6 multicast.</p>
<h4>Les équipements</h4>
<p>Le point noir dans cette migration vient des équipements embarqués qui disposent d&#8217;une connectivité IPv4 :</p>
<ul>
<li>Switch manageable : aucun firmware disponible avec le support d&#8217;IPv6 ;</li>
<li>Télephones SIP : le <a href="http://www.cisco.com/en/US/products/ps10038/">SPA941</a> et le <a href="http://en.wikipedia.org/wiki/Linksys_PAP2">PAP2</a>, ne disposent pas d&#8217;un firmware compatible IPv6 ; </li>
<li>Amplificateur Home-Cinema  : idem ;</li>
<li>Imprimante : idem ;</li>
<li>RFXCOM : idem ;</li>
</ul>
<p>Pas de surprises, l&#8217;ensemble des équipements IP ne disposent pas d&#8217;une connectivité IPv6, il faut chercher dans du matèriel très haut de gamme pour obtenir cette fonctionnalité. </p>
<p>Une solution possible est de rendre ses services accessibles en IPv6 à l&#8217;aide d&#8217;un reverse proxy 6to4 via Apache :</p>
<pre>
&lt;VirtualHost [2042:42:42:22:42:42:42:42]:80&gt;
   ServerName host.v6.domaine
   DocumentRoot /var/www
   ProxyPass / http://host.domaine/
   ProxyPassReverse / http://host.domaine/
&lt;/VirtualHost&gt;
</pre>
<p>Mais cela ne fonctionne que pour les inferfaces HTTP de configuration et non pour tous les services fournir par ces équipements.</p>
<p>La seule bonne nouvelle pour les équipements et que la plupart disposent de la possiblité de mise à jours de leur firmware et donc ils seront un jour compatible <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<h3>Sécurité</h3>
<table border="0">
<tr>
<td valign="top">
<a href="http://www.csquad.org/wp-content/uploads/2010/03/chien.jpg"><img src="http://www.csquad.org/wp-content/uploads/2010/03/chien-150x150.jpg" alt="Kerberos" title="Chien" width="150" height="150" class="alignnone size-thumbnail wp-image-1158" /></a>
</td>
<td>
Comme vos machines sont directement accessibles via Internet, il est nécessaire d&#8217;augmenter le niveau de sécurité du réseau. Pour ma part, j&#8217;ai déployé les éléments suivants : </p>
<ul>
<li>Chiffrement TLS/SSL de <strong>TOUS</strong> les services, c&#8217;est le <strong>minimum</strong> syndical ; </li>
<li>Règles de Firewall strictes  ;</li>
<li>Désactiver des services réseaux inutiles ;</li>
<li>Maintien à jours de l&#8217;ensemble des paquets ;</li>
</ul>
</td>
</tr>
</table>
<p>Et si vous êtes un peu paranoïaque, (comme moi <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) vous pouvez encore ajouter quelques éléments de sécurité en plus : </p>
<ul>
<li>Renforcer la sécurité du noyau et des services à l&#8217;aide de <em>patches</em> spécifiques ( <a href="http://www.grsecurity.net/">grsecurity</a>, <a href="http://www.hardened-php.net/suhosin/">Suhosin</a>, etc&#8230;) ;</li>
<li>Mettre en place un <a href="http://en.wikipedia.org/wiki/Network_intrusion_detection_system">NIDS</a> comme <a href="http://www.prelude-technologies.com/">Prelude</a> ;</li>
<li>Mettre en place un <a href="http://en.wikipedia.org/wiki/Host-based_intrusion_detection_system">HIDS</a> comme <a href="http://la-samhna.de/samhain/">SAMHAIN</a>.</li>
</ul>
<p>Bref, Comme les machines peuvent être directement accessibles et vous n&#8217;avez plus la <em>&#8220;protection&#8221;</em> du <a href="http://fr.wikipedia.org/wiki/Network_address_translation">NAT</a>. Il est  nécessaire d&#8217;accorder plus d&#8217;importance à la sécurisation des vos serveurs.<br />
Si non vous avez de fortes chances de vous retrouver dans ce cas : <a href="http://www.ibiblio.org/Dave/Dr-Fun/df200306/df20030604.jpg">The brave new world of IPv6</a>. (on me signale qu&#8217;il existe une <a href="http://www.ikea.com/fr/fr/catalog/products/80108935">très bonne protection</a> <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  )</p>
<h3>Références</h3>
<ul>
<li><a href="http://www.debian-administration.org/article/Running_IPv6_in_practice">Running IPv6 in practice</a> chez Debian Administration ;</li>
<li><a href="http://tldp.org/HOWTO/Linux+IPv6-HOWTO/">Linux IPv6 HOWTO</a> : la référence ;</li>
<li><a href="http://www.debian.org/doc/manuals/securing-debian-howto/">Securing Debian Manual</a> : sécurisation d&#8217;un serveur Debian GNU/Linux ;</li>
<li><a href="http://www.linuxjournal.com/article/6541?page=0,0">Building a Linux IPv6 DNS Server</a> : article dans le Linux Journal ;</li>
<li><a href="http://www.personal.psu.edu/dvm105/blogs/ipv6/">Living with IPv6</a> : un blog sympatique sur le sujet ;</li>
<li><a href="http://www.flickr.com/groups/88412962@N00/pool/tags/fridge/">What&#8217;s that in your fridge</a> : un flux intéressant sur Flickr. </li>
</ul>
<h3>Conclusion</h3>
<p>J&#8217;ai appris beaucoup de choses lors de cette migration. </p>
<p>Mon réseau dispose d&#8217;une connectivité IPv6 et je vais pouvoir m&#8217;amuser avec les nouvelles possiblités offertes <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2010/03/29/migration-un-reseau-debian-gnulinux-ipv6/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Faire son propre moteur de recherche avec Nutch</title>
		<link>http://www.csquad.org/2010/01/11/nutch/</link>
		<comments>http://www.csquad.org/2010/01/11/nutch/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 22:22:26 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Nutch]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=973</guid>
		<description><![CDATA[Allez aujourd&#8217;hui, je lâche mon troll, qui n&#8217;a pas manger depuis plusieurs semaines :
S&#8217;il y a quelque chose que vous faites et que personne ne doit savoir, peut-être qu&#8217;il faudrait commencer par ne pas le faire
Source : Google CEO Eric Schmidt Dismisses the Importance of Privacy
Il a raison le bon docteur Schmidt, il aurait du [...]]]></description>
			<content:encoded><![CDATA[<p>Allez aujourd&#8217;hui, je lâche mon troll, qui n&#8217;a pas manger depuis plusieurs semaines :</p>
<blockquote><p>S&#8217;il y a quelque chose que vous faites et que personne ne doit savoir, peut-être qu&#8217;il faudrait commencer par ne pas le faire</p></blockquote>
<p>Source : <a href="http://www.eff.org/deeplinks/2009/12/google-ceo-eric-schmidt-dismisses-privacy">Google CEO Eric Schmidt Dismisses the Importance of Privacy</a></p>
<p>Il a raison le bon docteur Schmidt, il aurait du faire plus attention <a href="http://en.wikipedia.org/wiki/Liu_Xiaobo">Liu Xiaobo</a> avant de chercher <em>droits de l’homme</em> sur un <a href="http://news.google.cn/news?q=Liu%20Xiaobo&#038;hl=zh-CN&#038;ie=UTF-8&#038;ned=ccn&#038;tab=Hn">moteur de recherche censuré</a>&#8230;</p>
<p>Bref vous m&#8217;avez compris ce genre de parole dans la bouche de l&#8217;homme le plus puissant de la plante ne m&#8217;inspire pas confiance  et je continue à penser que le slogan de Google <a href="http://en.wikipedia.org/wiki/Don%27t_be_evil">Don&#8217;t be evil</a> est une véritable plaisanterie.</p>
<p>Alors au lieu de vous conseiller de passer à Bling, je vais vous expliquer comment faire votre propre moteur de recherche.</p>
<p>Ce billet décrit la mise en place d&#8217;un moteur de recherche sous Debian GNU/Linux basé sur <a href="http://lucene.apache.org/nutch/">Nutch</a>.</p>
<h3>Pré-requis</h3>
<table>
<tr>
<td valign="top">
<a href="http://www.csquad.org/wp-content/uploads/2010/01/140px-Google’s_First_Production_Server.jpg"><img src="http://www.csquad.org/wp-content/uploads/2010/01/140px-Google’s_First_Production_Server.jpg" alt="140px-Google’s_First_Production_Server" title="140px-Google’s_First_Production_Server" width="140" height="232" class="alignleft size-full wp-image-1005" /></a>
</td>
<td>
<p>
Pour faire votre propre moteur de recherche vous avez besoin de :</p>
<ul>
<li>450 000 serveurs répartis sur toute la planète ;</li>
<li>80Go d&#8217;espace disque par machine ;</li>
<li>4Go de mémoire par machine ;</li>
<li>Une connexion fibre optique entre vos <em>&#8220;data centers&#8221;</em> ; </li>
</ul>
</td>
</tr>
</table>
<p>
Bref, si vous n&#8217;avez pas cette infrastructure à votre disposition ce n&#8217;est pas la peine d&#8217;aller plus loin <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Bon d&#8217;accord, vous voulez simplement un moteur de recherche personnel?
</p>
<p>Un seul serveur avec les caractéristiques suivantes :</p>
<ul>
<li>Un bon processeur ;</li>
<li>Beaucoup de mémoire (4Go, ba oui, c&#8217;est du Java ma petite dame <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) ;</li>
<li>Un gros disque dur très rapide de plus de 500Go (des <a href="http://en.wikipedia.org/wiki/Western_Digital_Raptor"> Raptor</a> par exemple ) ;</li>
<li>Une bonne bande passante, avec plus de 2Mb en <em>download</em>;</li>
<li>Une distribution Debian GNU/Linux ;</li>
<li>Des compétences en administration d&#8217;Apache, Tomcat et ligne de commande ;</li>
<li>Un peu de temps pour configurer le système et le paramétrer aux petits oignons.</li>
</ul>
<p>C&#8217;est bien plus abordable ? <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Fonctionnalités</h3>
<p>En mettant en place mon propre moteur de recherche, je voulais obtenir les fonctionnalités suivantes :</p>
<ul>
<li>Indexation des documents locaux (ex: un Intranet) ;</li>
<li>Indexation plus poussé de mes centres d&#8217;intérêts ;</li>
<li>Indépendance par rapport à un moteur de recherche ;</li>
</ul>
<p>Néanmoins, je dois faire une croix sur : </p>
<ul>
<li>la publicité ciblée ;</li>
<li>la recherche d&#8217;images, de vidéos et temps réel ;</li>
<li>la correction orthographique.</li>
</ul>
<h3>Les limitations</h3>
<p>On pourrait dire que Nutch est un moteur de recherche de l&#8217;époque <em>&#8220;web 1.0&#8243;</em>. En effet, il ne contient pas d&#8217;algorithme d&#8217;<a href="http://fr.wikipedia.org/wiki/Intelligence_collective">Intelligence Bolchevique^Wcollective</a> comme la plupart des moteurs de recherche. Cela signifie que seul le <a href="http://fr.wikipedia.org/wiki/PageRank">Page rank</a> est utilisé et que les votes des utilisateurs ne sont pas pris en compte. Il est aussi plus sensible au <a href="http://fr.wikipedia.org/wiki/Spamdexing">Spamdexing</a>. </p>
<h3>Présentation des composants</h3>
<table>
<tr>
<td valign="top"><img src="http://www.csquad.org/wp-content/uploads/2010/01/ubuntu_nutch_small.png" alt="" title="ubuntu_nutch_small" width="128" height="187" class="alignleft size-full wp-image-1034" /></td>
<td>
<p>
L&#8217;architecture d&#8217;un moteur de recherche est assez simple, vous avez besoin :</p>
<ul>
<li>d&#8217;un <a href="http://en.wikipedia.org/wiki/Web_crawler">Web crawler</a>, un logiciel qui explore automatiquement le Web à la recherche de ressources.</li>
<li>un système d&#8217;indexation, dans le cas de Nutch c&#8217;est <a href="http://lucene.apache.org/">Apache Lucene</a> ; </li>
<li>des interfaces de recherche ;</li>
</ul>
</td>
</tr>
</table>
<h3>Installation</h3>
<p>Voici les étapes nécessaires pour faire fonctionner la version 1.0 Nuch sur une machine <a href="http://www.debian.org/">Debian GNU/Linux</a> version &#8220;lenny&#8221;.</p>
<h4>Dépendances</h4>
<p>Vous avez besoin des composants suivants :<br />
<code># apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps sun-java6-jre<br />
</code><br />
Configurer le JRE par default :<br />
<code># update-alternatives  --set java /usr/lib/jvm/java-6-sun/jre/bin/java</code></p>
<h4>Nutch</h4>
<p>C&#8217;est une application en Java, que je place dans le repertoire <em>opt</em> :<br />
<code><br />
# cd /opt<br />
# wget http://mirror.mkhelif.fr/apache/lucene/nutch/nutch-1.0.tar.gz<br />
# tar xzf nutch-1.0.tar.gz<br />
# ln -s nutch-1.0 nutch<br />
# mkdir nutch/urls<br />
# mkdir nutch/crawl<br />
# chown tomcat55: nutch-1.0<br />
</code></p>
<h4>Configuration</h4>
<p>La configuration du moteur de recherche se trouve dans le fichier <em>conf/nutch-default.xml</em>, vous disposez de votre fichier <em>conf/nutch-site.xml</em>, spécifique à votre instance. Les variables intéressantes sont :</p>
<ul>
<li>http.agent.* : la politesse, pour décrire votre robot ou bien prendre l&#8217;identité d&#8217;un autre ; </li>
<li>db.fetch.interval.(default|max) : ces variables définissent le nombre de jours entre chaque passage du robot, comme vous ne pourrez pas faire le tour du web en moins de 30 jours <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> , une bonne idée est d&#8217;augmenter ces valeurs ;</li>
<li>plugin.includes : la définition des plugins pris en charge, ici vous pouvez ajouter la gestion des documents pdf, microsoft word et du protocole https.</li>
</ul>
<h3>Bootstrapping du moteur de recherche</h3>
<p>Votre moteur de recherche doit avaler une quantité de donnée importante avant de pouvoir faire une recherche pertinente.<br />
Voici quelques sources pour l&#8217;initialiser.</p>
<h4>A l&#8217;aide d&#8217;un annuaire</h4>
<p>Il  existe de très bons annuaires complets comme le projet <a href="http://www.dmoz.org/">Open Directory Project</a>.<br />
Dont l&#8217;ensemble des données sont disponibles au format RDF et téléchargeables librement : <a href="http://rdf.dmoz.org/rdf/">http://rdf.dmoz.org/rdf/</a>.<br />
Par contre, attention ce fichier référence 4 446 480 sites web et vous allez avoir besoin de beaucoup de place pour les référencer tout ce contenu.</p>
<p>Voici la procédure pour utiliser l&#8217;annuaire DMOZ avec Nutch :<br />
<code><br />
$ cd /opt/nutch<br />
$ mkdir urls<br />
$ wget http://rdf.dmoz.org/rdf/content.rdf.u8.gz -O urls/content.rdf.u8.gz<br />
$ gunzip urls/content.rdf.u8.gz<br />
$ bin/nutch org.apache.nutch.tools.DmozParser urls/content.rdf.u8 > urls/dmoz<br />
$ bin/nutch inject crawl/crawldb urls/dmoz<br />
Injector: starting<br />
Injector: crawlDb: crawl/crawldb<br />
Injector: urlDir: urls/dmoz<br />
Injector: Converting injected urls to crawl db entries.<br />
Injector: Merging injected urls into crawl db.<br />
Injector: done<br />
</code></p>
<h4>A l&#8217;aide d&#8217;un Marque-page</h4>
<p>Une autre source pour initialiser le moteur de recherche est d&#8217;utiliser les adresses contenues dans votre marque-page. Le principal avantage de cette technique est la faible quantité de données  à analyser et une pertinence de recherche accrue.<br />
Pour ce faire, vous devez exporter votre marque-page au format HTML (pour Mozilla Firefox) et en extraire les adresses de la manière suivante :</p>
<p><code><br />
$ cd /opt/nutch<br />
$ grep "A HREF=\"http"  bookmarks.html | cut -d '"' -f 2  > urls/bookmarks<br />
$ bin/nutch inject crawl/crawldb urls/bookmarks<br />
Injector: starting<br />
Injector: crawlDb: crawl/crawldb<br />
Injector: urlDir: urls/bookmarks<br />
Injector: Converting injected urls to crawl db entries.<br />
Injector: Merging injected urls into crawl db.<br />
Injector: done<br />
</code></p>
<h4>A l&#8217;aide de Wikipedia</h4>
<p><a href="http://fr.wikipedia.org">Wikipedia</a> fourni des <em>dumps</em> de sa <a href="http://en.wikipedia.org/wiki/Wikipedia_database">base de données</a> au format XML. Il est donc possible d&#8217;utiliser les URLs des articles de wikipedia comme source.<br />
Voici la procédure pour la version française de Wikipedia, celle-ci contient 897 974 urls.<br />
<code><br />
$ cd /opt/nutch/<br />
$ mkdir urls<br />
$ wget http://download.wikimedia.org/frwiki/latest/frwiki-latest-abstract.xml -O urls/frwiki-latest-abstract.xml<br />
$ grep "&lt;url&gt;" urls/frwiki-latest-abstract.xml | cut -d '>' -f 2 | cut -d '< ' -f 1 > urls/wikipedia-fr<br />
$ bin/nutch inject crawl/crawldb urls/wikipedia-fr<br />
Injector: starting<br />
Injector: crawlDb: crawl/crawldb<br />
Injector: urlDir: urls/wikipedia-fr<br />
Injector: Converting injected urls to crawl db entries.<br />
Injector: Merging injected urls into crawl db.<br />
Injector: done<br />
</code></p>
<h3>What you&#8217;re waitin&#8217; for ? Christmas ?</h3>
<h4>Come get some!</h4>
<p>Une fois que vous avez chargé la base de données avec vos urls, il faut les parcourir afin de les indexer. Cela se fait à l&#8217;aide de plusieurs commandes :</p>
<ul>
<li><strong>generate</strong> : sélections des adresses à parcourir ;</li>
<li><strong>fetch</strong> : parcourt des urls ;</li>
<li><strong>updatedb</strong> : mise à jours de la base des adresses ;</li>
<li><strong>invertlinks</strong> : mise à jours de l&#8217;index des adresses inversées  ;</li>
<li><strong>index</strong> : indexation des données  ;</li>
</ul>
<p>Une séquence classique ressemble donc à cela :<br />
<code><br />
bin/nutch generate crawl/crawldb crawl/segments -topN 1000<br />
s1=`ls -d crawl/segments/2* | tail -1`<br />
bin/nutch fetch $s1<br />
bin/nutch updatedb crawl/crawldb $s1<br />
bin/nutch invertlinks crawl/linkdb $s1<br />
bin/nutch index crawl/indexes crawl/crawldb crawl/linkdb $s1<br />
</code><br />
Cette suite de commandes vous permet de parcourir et d´indexer 1000 adresses issues de votre base.<br />
C&#8217;est un très bon 1er test pour voir si cela fonctionne. </p>
<h4>Shake it, baby!</h4>
<p>Une autre commande intéressante est <em>readdb</em> avec l&#8217;option <em>stats</em>, qui permet d&#8217;obtenir des informations sur le contenu de votre base  :<br />
<code><br />
$ bin/nutch readdb crawl/crawldb/ -stats<br />
CrawlDb statistics start: crawl/crawldb/<br />
Statistics for CrawlDb: crawl/crawldb/<br />
TOTAL urls:     3377315<br />
...<br />
min score:      0.0<br />
avg score:      0.13178158<br />
max score:      401.402<br />
status 1 (db_unfetched):        2966337<br />
status 2 (db_fetched):  300008<br />
status 3 (db_gone):     46659<br />
status 4 (db_redir_temp):       27857<br />
status 5 (db_redir_perm):       36454<br />
</code><br />
Une bonne idées serait de mettre en place un système de monitoring sur ces informations pour suivre le déroulement. Par contre, il faut faire attention car la commande prend plusieurs minutes à s&#8217;exécuter.  (donc hors de question de la placer dans un plugin munin, un mail tous les soirs serait une meilleur méthode). </p>
<h4>Damn&#8230; I&#8217;m looking good!</h4>
<p>Vous pouvez tester en ligne de commande  le fonctionnement du moteur de recherche :<br />
<code>$ bin/nutch org.apache.nutch.searcher.NutchBean apache<br />
Total hits: 6413<br />
 0 20100104001440/http://xmlgraphics.apache.org/fop/<br />
 ... be part of Apache's XML Graphics project . Demonstration ... goals of the Apache FOP project are to ...<br />
 1 20100103201220/http://velocity.apache.org/<br />
 ... Library Site building Site tools Apache Reference Apache Website How the ASF ... way in its field. Apache<br />
...<br />
</code></p>
<p>Voilà cela fonctionne en ligne de commande, nous pouvons passer à l&#8217;interface end user (enfin un moteur de recherche en ligne de commande c&#8217;est très pratique aussi <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  )</p>
<h3>Configuration de l&#8217;interface web</h3>
<p>Nutch fournir un application pour Tomcat / Jboss. Il suffit de la déployer et de lui indiquer l&#8217;emplacement de votre index de la manière suivante :<br />
<code><br />
# cd /opt/nutch<br />
# cp nutch-1.0.war /var/lib/tomcat5.5/webapps<br />
... attendre<br />
# vim /var/lib/tomcat5.5/webapps/nutch-1.0/WEB-INF/classes/nutch-default.xml<br />
... remplacer la value de <em>searcher.dir</em>  par /opt/nutch/crawl<br />
</code><br />
Mais aussi modifier la sécurité de tomcat, via le fichier <em>/etc/default/tomcat5.5</em> en mettant la variable <em>TOMCAT5_SECURITY</em> à no.<br />
Ou bien en créant un fichier policy donnant l&#8217;accès au répertoire <em>/opt/nutch/crawl</em>. (c&#8217;est plus propre <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  )</p>
<p>Vous pouvez ensuite redémarrer tomcat et accèder au moteur de recherche via votre navigateur sur le port 8180.</p>
<h3>Problèmes rencontrés</h3>
<p>Voici quelques problèmes que j&#8217;ai rencontré lors de mes tests de la version 1.0 de Nutch :</p>
<h4>La directive merge ne fonctionne pas</h4>
<p>Impossible de <em>fusionner</em> deux index, il est nécessaire de re-creer l&#8217;ensemble de l&#8217;index à chaque fois.</p>
<h4>La directive fetch flanche</h4>
<p>Lorsque trop nombreux sites sont choisis dans la liste des sites à parcourir par le robot d&#8217;indexation à l&#8217;aide de l&#8217;option <em>topN</em>, le programme produit une erreur et le <em>segement</em> produit est corrompu. (c&#8217;est pour cette raison que je limite le nombre de site dans un segment à 5000)</p>
<h3>Maintenance de l&#8217;index</h3>
<p>Une fois le moteur de recherche mise en place, il faut maintenir l&#8217;index à jours. Pour cela, j&#8217;ai mis en place un simple script de crawl avec cron qui se lance tous les soirs :<br />
<code><br />
#!/bin/sh<br />
bin/nutch generate crawl/crawldb crawl/segments -topN 5000<br />
s1=`ls -d crawl/segments/2* | tail -1`<br />
bin/nutch fetch $s1<br />
bin/nutch updatedb crawl/crawldb $s1<br />
bin/nutch invertlinks crawl/linkdb $s1<br />
</code><br />
et un autre qui re-créer l&#8217;index :<br />
<code><br />
#!/bin/sh<br />
rm -rf crawl/indexes/<br />
bin/nutch index crawl/indexes/ crawl/crawldb/ crawl/linkdb/ crawl/segments/*<br />
</code></p>
<h3>Optimisation du robot d&#8217;indexation</h3>
<p>La principale difficulté de ce projet est l&#8217;indexation d&#8217;une énorme quantité de données avec des moyens techniques très limité.<br />
Voici donc quelques idées pour optimiser l&#8217;indexation de votre moteur de recherche. </p>
<h4>Utiliser le serveur mandataire de votre fournisseur d&#8217;accès à Internet</h4>
<p>Vous pouvez ajouter l&#8217;adresse du serveur mandataire de votre FAI dans le fichier <em>conf/nutch-site.xml</em> :<br />
<code><br />
&lt;property><br />
  &lt;name>http.proxy.host&lt;/name><br />
  &lt;value>proxy.free.fr&lt;/value><br />
&lt;/property><br />
&lt;property><br />
  &lt;name>http.proxy.port&lt;/name><br />
  &lt;value>3128&lt;/value><br />
&lt;/property><br />
</code></p>
<p>Note : On me signale dans l&#8217;oreillette, que <a href="http://www.freenews.fr/spip.php?article7300">mon FAI à fermer son proxy</a> à cause d&#8217;une sombre histoire de <a href="http://fr.wikipedia.org/wiki/Loi_Cr%C3%A9ation_et_Internet">Haute Autorité De l&#8217;Ouverture Postale Inopinée</a>.</p>
<h4>Mise en place d&#8217;un serveur DNS locale</h4>
<p>Vous avez besoin de mettre en place un serveur cache DNS locale qui prend en charge les requêtes du robot. Vous pouvez faire cela avec <a href="https://www.isc.org/products/BIND/">ISC BIND</a> ou bien <a href="http://www.phys.uu.nl/~rombouts/pdnsd.html">pdnsd</a>. </p>
<h4>Augmentation du nombre de Threads</h4>
<p>Vous pouvez aussi augmenter le nombre de processus utiliser par le robot d&#8217;indexation en modifiant les variables du fichier de configuration :</p>
<ul>
<li><em>fetcher.threads.fetch</em> : nombre de threads au total (42) ;</li>
</ul>
<p>Pour plus d&#8217;informations, vous pouvez voir sur le wiki du projet : <a href="http://wiki.apache.org/nutch/OptimizingCrawls">OptimizingCrawls</a>.</p>
<h3>Imposer^WIntégrer Nutch</h3>
<p>Voici quelques astuces pour intégrer Nutch à votre architecture. </p>
<h4>Mozilla Firefox</h4>
<p>Pour Mozilla Firefox, le système de plugin permet d&#8217;inclure votre <a href="https://developer.mozilla.org/en/Creating_OpenSearch_plugins_for_Firefox">propre moteur de recherche</a>.<br />
Pour faire cela, il faut placer le fichier <a href="/wp-content/contrib/nutch.xml">nutch.xml</a> dans votre profile Firefox : <em>~/.mozilla/firefox/*.default/searchplugins</em> (en remplacant par l&#8217;addresse de votre instance ) .</p>
<h4>DNS Menteur</h4>
<p>Vous pouvez modifier la configuration de votre DNS pour résoudre le domaine google avec l&#8217;adresse de votre moteur de recherche. (Ouais, je sais Net Neutrality, toussa <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ). En modifiant la feuille de style de l&#8217;interface web certains utilisateurs ne verront surement pas la diffèrence.</p>
<h3>Est-ce bien raisonnable ?</h3>
<p>Vous allez me dire. Héberger son propre moteur de recherche chez soit, quelle drôle d&#8217;idée  <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Je pousse, le concept d&#8217;<a href="http://fr.wikipedia.org/wiki/Auto-h%C3%A9bergement">Auto-hébergement</a> au maximum, mais il est clair que j&#8217;ai fait cette article <em>&#8220;Just for fun&#8221;</em>, car même si je ne peut indexer que 5000 sites par jours (le script fonctionne durant les heures creuses) , soit 1 825 000 en un an, je vais avoir beaucoup de mal à indexer les 4 446 480 urls de DMOZ.</p>
<h3>Références</h3>
<p>Voici quelques références intéressantes sur le sujet :</p>
<ul>
<li><a href="http://infolab.stanford.edu/~backrub/google.html">The Anatomy of a Large-Scale Hypertextual Web Search Engine</a> : description de l&#8217;architecture de Google ;</li>
<li><a href="http://www.schneier.com/blog/archives/2009/12/my_reaction_to.html">La réponse de Bruce Schneier</a> à Eric Schmidt ;</li>
<li>Le <a href="http://lucene.apache.org/nutch/tutorial8.html">tutorial</a> pour les versions 0.8.x de Nutch ;</li>
<li>Le <a href="http://wiki.apache.org/nutch/FrontPage">Wiki</a> du projet Nutch ; </li>
<li>Un <a href="http://www.bustedtees.com/skynet">tee short</a> très googlitude ;</li>
<li>Un autre tutorial similaire pour une version plus ancienne : <a href="http://goupil.arnaud.free.fr/nutch.php">Installation de Nutch 0.8.1 sous Ubuntu 6.10</a> d&#8217;Arnaud Goupil ;</li>
<li>Le blog du groupe de travail francophone : <a href="http://frutch.blogspot.com/">Frutch</a> ;</li>
<li><a href="http://www.motrech.com/">Motrech</a>, le blog consacré aux moteurs de recherche. </li>
</ul>
<h3>Conclusion</h3>
<p>Vous avez maintenant à votre disposition un moteur de recherche personnel.<br />
Et vous êtes libre de rechercher des choses sans que personne ne puisse le savoir <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
L&#8217;étape la plus dure est de se passer de l&#8217;utilisation google <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Si vous voulez aller plus loin dans le monde des moteurs de recherche libre vous pouvez intégrer Nutch avec <a href="http://lucene.apache.org/solr/features.html">Solr</a>, comme décrit dans cette article : <a href="http://www.lucidimagination.com/blog/2009/03/09/nutch-solr/">Using Nutch with Solr</a>.<br />
Afin d&#8217;obtenir un moteur de recherche professionnel pour une entreprise. (principalement pour éviter la fuite d&#8217;information).<br />
Ou bien si vous si êtes intéressé par un produit similaire aux <a href="http://www.google.com/enterprise/intranet_search.html">Solutions d&#8217;entreprise</a> de Google.</p>
<p>Pour finir, la petite cerise sur la gâteau, comme Nutch utilise <a href="http://hadoop.apache.org/">Hadoop</a>, il <em>scale</em> comme un troupeau éléphants <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2010/01/11/nutch/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Présentation du standard Zigbee</title>
		<link>http://www.csquad.org/2009/12/19/zigbee/</link>
		<comments>http://www.csquad.org/2009/12/19/zigbee/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 13:00:50 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Home automation]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[ZigBee]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=893</guid>
		<description><![CDATA[



Je reviens des mercredis de la RFID organisé par filrfid, le sujet de la présentation était le protocole ZigBee. 
Lors de la présentation faite par Véranith Ly de la société oRFIDée, j&#8217;ai appris beaucoup de choses sur ce protocole. 
J&#8217;aimerai donc vous en faire profiter et parler des domaines qui m&#8217;intéressent à savoir la domotique, [...]]]></description>
			<content:encoded><![CDATA[<table>
<tr valign='top'>
<td valign='top'><img src="http://www.csquad.org/wp-content/uploads/2009/12/ZigBee_Network_Design-za-web.jpg" alt="ZigBee_Network_Design" title="ZigBee_Network_Design" width="257" height="200" class="alignleft size-full wp-image-936" /></td>
<td>
<p>Je reviens des <a href="http://www.filrfid.org/article-16-decembre-un-mercredi-special-zigbee-venez-nombreux--40848259.html">mercredis de la RFID</a> organisé par <a href="http://www.filrfid.org/">filrfid</a>, le sujet de la présentation était le protocole <a href="http://fr.wikipedia.org/wiki/Zigbee">ZigBee</a>. </p>
<p>Lors de la présentation faite par Véranith Ly de la société <a href="http://www.orfidee.com/">oRFIDée</a>, j&#8217;ai appris beaucoup de choses sur ce protocole. </p>
<p>J&#8217;aimerai donc vous en faire profiter et parler des domaines qui m&#8217;intéressent à savoir la domotique, la robotique et la topologie des réseaux maillés.
</p>
</td>
</tr>
</table>
<h3>Description rapide du standard</h3>
<p><a href="http://fr.wikipedia.org/wiki/Zigbee">ZigBee</a>, est un standard de communication sans-fils comme le <a href="http://fr.wikipedia.org/wiki/Wi-Fi">Wifi</a> ou le <a href="http://fr.wikipedia.org/wiki/Bluetooth">Bluetooth</a>.<br />
Les principaux avantages du standard sont :</p>
<ul>
<li>Autonomie de l&#8217;émetteur, il est possible de le faire fonctionner durant <strong>plusieurs années</strong> à l&#8217;aide d&#8217;une batterie ;</li>
<li>La possibilité de mettre en place une <a href="http://fr.wikipedia.org/wiki/Topologie_maill%C3%A9e">topologie de réseaux maillés</a> ;</li>
<li><strong>65535 nœuds</strong> sont <em>addressable</em> sur le réseau ; </li>
<li>le standard définie : les méthodes de communication sur le réseau, <strong>mais aussi</strong> les fonctionnement des applications ;</li>
<li>l&#8217;ensemble des produits sont certifiés par <a href="http://www.zigbee.org/">l&#8217;Alliance ZigBee</a> et soutenus par de <a href="http://www.zigbee.org/zigbee/About/OurMembers/tabid/191/Default.aspx">nombreuses entreprises industriels</a> ;</li>
</ul>
<p>Ce qui est intéressant, c&#8217;est que le standard définit un ensemble de caractéristiques pour un équipement.<br />
Regroupé sous forme de famille :</p>
<ul>
<li><a href="http://www.zigbee.org/Markets/ZigBeeSmartEnergy/ZigBeeSmartEnergyOverview/tabid/431/Default.aspx">ZigBee Smart Energy</a> ;</li>
<li><a href="http://www.zigbee.org/Markets/ZigBeeRemoteControl/ZigBeeRemoteControlOverview/tabid/475/Default.aspx">ZigBee Remote Control</a> ; </li>
<li><a href="http://www.zigbee.org/Markets/ZigBeeRemoteControl/ZigBeeRemoteControlOverview/tabid/475/Default.aspx">ZigBee Home Automation</a> ;</li>
<li><a href="http://www.zigbee.org/Markets/ZigBeeHealthCare/ZigBeeHealthCareOverview/tabid/426/Default.aspx">ZigBee Health Care</a>, non disponible;</li>
<li><a href="http://www.zigbee.org/Markets/ZigBeeBuildingAutomation/tabid/226/Default.aspx">ZigBee Building Automation</a>, pas encore définie ;</li>
<li>ZigBee Telecommunication Services, non encore définie.</li>
</ul>
<h3>Domaines d&#8217;application du protocole</h3>
<p>Les domaines d&#8217;applications du protocole sont les suivants :</p>
<ul>
<li>la gestion de l&#8217;énergie et les réseaux de <a href="http://fr.wikipedia.org/wiki/Smart_grid">distribution d&#8217;électricité « intelligent »</a> ;  </li>
<li>la médecine, avec le <a href="http://fr.wikipedia.org/wiki/WSN#Applications_m.C3.A9dicales_et_v.C3.A9t.C3.A9rinaire">suivi des indicateurs physiologiques</a> sur le long terme pour les maladies chroniques.</li>
<li>Les réseaux de capteurs en général : <a href="http://fr.wikipedia.org/wiki/R%C3%A9seau_de_capteurs_sans-fil">WSN</a> ; </li>
<li>Les télécommandes, le protocole est amené à remplacer les télécommandes infrarouge à moyen terme.</li>
<li>La domotique, pour le contrôle et la gestion des appareils dans une maison ;</li>
<li>La <a href="http://en.wikipedia.org/wiki/Real-time_locating_system">localisation en temps réel</a> ;</li>
<li>Et enfin la robotique, pour le contrôle à distance ;</li>
</ul>
<h3>La promesse du standard</h3>
<p>Les équipements qui respectent le standard et sont <a href="http://www.zigbee.org/Products/CertifiedProducts/CertifiedProductsOverview/tabid/463/Default.aspx">certifiés par l&#8217;Alliance ZigBee</a> sont théoriquement interchangeable et peuvent communiquer ensemble. </p>
<p>Cela signifie, qu&#8217;il est possible d&#8217;allumer à l&#8217;aide d&#8217;une télécommande de marque A, une douille d&#8217;ampoule de marque B et un lecteur de DVD de marque C. </p>
<p>Cela parait trivial dit comme cela, mais dans l&#8217;état actuel de développement de la domotique, cela releve du <strong>miracle</strong> &#8230;</p>
<p>Même, s&#8217;il existe des protocoles propriétaires pour faire cela, il est nécessaire de vendre <em>son âme</em> à un constructeur (<a href="http://fr.wikipedia.org/wiki/Enfermement_propri%C3%A9taire">Vendor lock-in</a> garantie sur facture <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) ou bien mettre en place des protocoles de <a href="http://fr.wikipedia.org/wiki/Middleware">Middleware</a> comme <a href="http://xplproject.org.uk/">xPL</a> et une belle galaxie de protocoles hétérogènes. (cf. le schéma de ma <a href="http://www.csquad.org/installation-domotique/">petite installation perso</a> <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ).</p>
<h3>La gestion des <em>binding</em></h3>
<p>La couche applicatif du standard ZigBee, inclut une possibilité très intéressante pour la domotique : le <em>binding</em>. </p>
<p>L&#8217;idée est de <strong>relier deux équipements</strong> du réseau de manière <strong>automatique et transparente</strong> pour l&#8217;utilisateur. </p>
<p>L&#8217;un des meilleur exemple pour comprendre est celui d&#8217;une ampoule et un d&#8217;un interrupteur.</p>
<p>Lorsque l&#8217;utilisateur active physiquement le <em>binding</em>, à l&#8217;aide d&#8217;un bouton par exemple. </p>
<p>Les deux <em>devices</em> se mettent en relation avec le coordinateur du réseau, qui détermine si oui ou non les profils applicatifs sont compatibles et de les lier. </p>
<p>Ce qui permet aux  équipements d&#8217;être liés automatiquement et il n&#8217;est pas nécessaire de configurer les adresses des équipements, etc&#8230;</p>
<h3>L&#8217;état actuel de la certification </h3>
<p>Pour l&#8217;instant, il y a peu d&#8217;équipements qui sont certifiés par l&#8217;Alliance :</p>
<ul>
<li><a href="http://www.zigbee.org/Products/CertifiedProducts/ZigBeeSmartEnergy/tabid/271/Default.aspx">ZigBee Smart Energy Certified Products</a> ;</li>
<li><a href="http://www.zigbee.org/Products/CertifiedProducts/ZigBeeHomeAutomation/tabid/455/Default.aspx">ZigBee Home Automation Certified Products</a>.</li>
</ul>
<p>Mais on trouve pas mal de vendeurs d&#8217;autres produits que ne sont pas forcement entièrement certifiés mais qui respectent la partie communication du standard. </p>
<h3>Problématique du sans-fils</h3>
<p>Comme toutes technologies sans-fils, elle présente quelques problématiques particulières : </p>
<h4>La source d&#8217;énergie</h4>
<p>Bien que le module ZigBee nécessite très peu d&#8217;énergie pour fonctionner (20mA pour émettre une trame sur le réseau), se pose la question de la source d&#8217;énergie. </p>
<p>Lorsque celle-ci est fournie par une pile cela pose de problématique de :</p>
<ul>
<li>fiabilité / qualité de la source d&#8217;énergie  ;</li>
<li>la nécessité de remplacer régulièrement la source d&#8217;énergie ; </li>
<li>la nécessité de mettre en place un dispositif pour notifier l&#8217;utilisateur du statut de la pile. </li>
</ul>
<h4>La sécurité</h4>
<p>La sécurité du standard ZigBee repose tout d’abord, sur la sécurité du protocole de communication IEEE 802.15.4. Pour mieux comprendre les méthodes de sécurisation mises en place par le protocole, vous pouvez lire cet article de vulgarisation : <a href="http://www.sensor-networks.org/index.php?page=0903503549">Security in 802.15.4 and ZigBee networks</a> ; ou bien cet excellent papier <a href="http://naveen.ksastry.com/papers/15.4-wise04.pdf">Security Considerations for IEEE 802.15.4 Networks</a>. Mais dans ce domaine, rien de nouveau, ce sont toujours les mêmes principes qui s’appliquent, à savoir :</p>
<ul>
<li>Plus la puce dispose de puissance et plus le niveau de chiffrement est fort (au maximum <a href="http://fr.wikipedia.org/wiki/Standard_de_chiffrement_avanc%C3%A9">AES128</a> pour ZigBee) ;</li>
<li>La qualité des composants et du générateur de nombre aléatoire ( <a href="http://digitaloffense.net/tools/debian-openssl/">merci de ne pas utiliser le PID du programme</a> <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) ;</li>
<li>La qualité de l’implémentation du code de chiffrement.</li>
</ul>
<p>Bref, vous vous doutez bien que les modules ZigBee qui seront vendus au grand publique ne seront pas d’un niveau de sécurité militaire et n’embarqueront sûrement pas <a href="http://enginova.com/radioactive_random_number_genera.htm">pas un compteur Geiger</a> comme source d&#8217;entropie <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>D&#8217;autant plus que le standard n&#8217;impose pas forcement un niveau de chiffrement fort à tous les profils applicatifs. </p>
<h3>Robotique</h3>
<p>Pour la robotique, il n&#8217;existe pas de profil dans le standard, mais la plupart des amateurs dans le domaine ont déjà compris les nombreux intérêts de ZigBee et on voit de plus en plus d&#8217;interfaces apparaître (<a href="http://www.trossenrobotics.com/bioloid-zigbee-wireless-module-set.aspx">Bioloid</a>, <a href="http://www.circuitcellar.com/library/print/0306/leland-188/leland-188.pdf">WowWee</a>, etc&#8230; )</p>
<h3>Logiciels libres</h3>
<p>Du coté des logiciels libres, nous avons :</p>
<ul>
<li>Un projet mort : <a href="http://zigbuzz.sourceforge.net/fr/index.html">ZigBuzz</a> ;</li>
<li>Le projet <a href="http://sourceforge.net/apps/trac/linux-zigbee/wiki">IEEE802.15.4/ZigBee Stack for Linux</a>, dont l&#8217;objectif est l&#8217;intégration de la pile ZigBee dans le noyau Linux, commiter dans la version 2.6.30-rc7 ;</li>
<li>Le projet <a href="http://freakz.sourceforge.net/">FreakZ</a>, dont l&#8217;objectif est l&#8217;implémentation du pile ZigBee libre pour l&#8217;embarque ;</li>
</ul>
<p>Malheureusement, il y a une incompatibilité entre la licence des spécifications du standard ZigBee et la licence <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>. en effet celle-ci ne prend pas en compte un usage non commercial. </p>
<p>Pour plus de détails sur ce point : <a href="http://freaklabs.org/index.php/Blog/Zigbee/Zigbee-Linux-and-the-GPL.html">Zigbee, Linux, and the GPL</a>.</p>
<p>Néanmoins, le code du protocole IEEE 802.15.4 est <a href="http://lwn.net/Articles/334666/">déjà le noyau</a> et bénéficie d&#8217;un niveau de protection <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Matériel</h3>
<p>Le matériel ZigBee disponible se découpe en plusieurs familles de la plus simple à la plus complexe :</p>
<h4>Émetteur-récepteur</h4>
<p>Les principaux constructeurs d&#8217;émetteur-récepteur sont <a href="http://www.ti.com/">Texas instruments</a> et <a href="http://www.freescale.com/">Freescale</a>.</p>
<h4>Puce</h4>
<p>Les puces prennent en charge la norme IEEE 802.15.4, elles sont produites par : <a href="http://www.ember.com/">Ember</a>, <a href="http://www.jennic.com/">Jennic</a>, <a href="http://www.ti.com/">Texas instruments</a> et <a href="http://www.freescale.com/">Freescale</a>.</p>
<h4>Modules</h4>
<p>Les modules prennent en charge le standard ZigBee et sont produites par : <a href="http://www.digi.com/">Digi</a>, <a href="http://www.one-rf.com/">One-RF</a>, <a href="http://www.telegesis.com/">Telegesis</a>, <a href="http://www.meshnetics.com/">Meshnetrics</a>, <a href="http://www.radiocrafts.com/">Radiocrafts</a>&#8230;</p>
<h4>Produit fini</h4>
<ul>
<li><a href="http://www.tritech.se/sv/start/tritech.php">Tritech</a> : dongles USB et routeurs Ethernet/Zigbee ;</li>
<li><a href="http://www.digi.com/">Digi</a> : passerelles RS232/485, USB, Ethernet, GPIO, routeurs autonomes</li>
<li><a href="http://www.telegesis.com/">Telegesis</a> : dongles USB et CF, routeurs autonomes et Ethernet</li>
<li><a href=""></a><a href="http://www.alektrona.com/">Alektrona</a> : gateway ethernet / zigbee;</li>
<li><a href="http://www.libelium.com/">Libelium</a> : capteurs et routeurs multi-protocoles Wifi, Bluetooth, GPRS et GPS ;</li>
<li>Des <em>shields</em> pour la carte <a href="http://www.arduino.cc/">Arduino</a> et ses dérivées.
</li>
</ul>
<h4>Offre packagée</h4>
<p>Pour les produits packagés, il existe les solutions suivantes :</p>
<ul>
<li><a href='http://www.control4.com/'>Control4</a> : gamme de produits domotiques ; </li>
<li><a href='http://www.alertme.com/'>AlerteMe</a> : système de suivi de la consommation électrique et  alarme.</li>
</ul>
<h3>Déploiements importants de ces technologies</h3>
<p>Il y a pas mal de déploiements de ces technologies aux USA dans le cadre des réseau de distribution d&#8217;électricité « intelligent » en Californie et au Texas principalement. </p>
<p>En Europe, le ville de <a href="http://www.openstreetmap.org/?mlat=57.706407&#038;mlon=11.968631&#038;zoom=10">Gothenburg en Suède</a> a déployé un réseau de <a href="http://tdworld.com/info_systems/highlights/gothenberg-ge-smart-meters-0609/">90 000 compteurs intelligents</a>. </p>
<p>En France, le déploiement est encore à l&#8217;état de recherche avec le projet <a href="http://www.senslab.info/index.php/Main_Page">SensLab</a>, le projet de localisation fait par <a href="http://www.orfidee.com/">Orfidée</a> pour la <a href="http://www.defense.gouv.fr/marine">Marine Nationale</a>.</p>
<p>Et d&#8217;autres projets couverts par des accords de non divulgation <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Références</h3>
<p>Voici quelques références pour approfondir le sujet :</p>
<ul>
<li>Le site de la <a href="http://www.zigbee.org/">ZigBee Alliance</a> ; </li>
<li>le site <a href="http://www.sensor-networks.org/">sensor-networks</a> ;</li>
<li>l’article de Sensor-networks sur les différence entre <a href="http://www.sensor-networks.org/index.php?page=0823123150">802.15.4 vs ZigBee</a> ;</li>
<li>le site du projet <a href="http://sourceforge.net/apps/trac/linux-zigbee/wiki">IEEE802.15.4/ZigBee Stack for Linux</a> ;</li>
</ul>
<h3>Conclusion</h3>
<p>Voilà, ceci est une petite présentation standard ZigBee, que j&#8217;ai voulu la plus succincte possible. Le sujet étant très vaste et passionnant. J&#8217;ai forcement fait des erreurs et oublié des références.  Merci de m&#8217;en faire part par mail ou via les commentaires.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2009/12/19/zigbee/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Notifications Nagios par Téléphone</title>
		<link>http://www.csquad.org/2009/12/09/notifications-nagios-par-telephone/</link>
		<comments>http://www.csquad.org/2009/12/09/notifications-nagios-par-telephone/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 19:39:02 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Nagios]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[Text-to-Speech]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=780</guid>
		<description><![CDATA[J&#8217;ai configuré mon instance de Nagios pour recevoir une notification par téléphone en cas d&#8217;incident. (déclenchement d&#8217;une alarme ou d&#8217;un détecteur d&#8217;eau / fumée dans mon installation domotique). 
Ce billet décrit comment mettre en place un système de  la notification par téléphone avec Nagios.
Pré-requis
Vous avez besoin des composants suivants :

Une distribution Debian GNU/Linux ;
Une [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai configuré mon instance de <a href="http://www.nagios.org/">Nagios</a> pour recevoir une notification par téléphone en cas d&#8217;incident. (déclenchement d&#8217;une alarme ou d&#8217;un détecteur d&#8217;eau / fumée dans mon <a href="/installation-domotique/">installation domotique</a>). </p>
<p>Ce billet décrit comment mettre en place un système de  la notification par téléphone avec Nagios.</p>
<h3>Pré-requis</h3>
<p>Vous avez besoin des composants suivants :</p>
<ul>
<li>Une distribution <a href="http://www.debian.org/">Debian GNU/Linux</a> ;</li>
<li>Une installation fonctionnelle de <a href="http://www.nagios.org/">Nagios</a> ; </li>
<li>Une PABX IP avec le support du protocole SIP, comme <a href="http://www.asterisk.org/">Asterisk</a> ;</li>
<li>Un système de Synthèse vocale fonctionnelle, comme <a href="http://espeak.sourceforge.net/">eSpeak</a> + <a href="http://tcts.fpms.ac.be/synthesis/mbrola.html">MBROLA</a> ;</li>
<li>Un client SIP en ligne de commande comme <a href="http://www.pjsip.org/pjsua.htm">PJSUA</a>. </li>
</ul>
<h3>Installation</h3>
<p>Le client SIP en ligne de commande PJSUA n&#8217;est pas disponible dans les paquets du projet Debian.<br />
Il est donc nécessaire de l&#8217;installer manuellement à l&#8217;aide du classique : <em>configure, make, make install</em>.<br />
La procédure est décrite dans ce billet : <a href="http://blog.nicolargo.com/2009/02/un-client-sip-en-ligne-de-commande.html">Un client SIP en ligne de commande</a>.</p>
<p>Pour l&#8217;installation du système de synthèse vocale, vous pouvez vous référer à mon précèdent billet sur le sujet : <a href="http://www.csquad.org/2009/08/27/text-to-speech-avec-espeak-mbrola-et-speech-dispatcher/">Text-to-Speech avec eSpeak, MBROLA et Speech Dispatcher</a>.</p>
<h3>Configuration</h3>
<p>Vous devez créer un compte SIP pour Nagios sur votre PABX et tester que l&#8217;enregistrement est fonctionnel. </p>
<p>Pour cela vous avez besoin d&#8217;un fichier de configuration spécifique à Nagios pour PJSUA, dans <em>/etc/nagios/sip.cfg</em> par exemple :<br />
<code><br />
--id sip:nagios@pabx.csquad.lan<br />
--registrar sip:pabx.csquad.lan<br />
--realm *<br />
--username nagios<br />
--password secret<br />
</code></p>
<p>Vous pouvez ensuite tester l&#8217;enregistrement en ligne de commande :<br />
<code>$ pjsua --config-file /etc/nagios/sip.cfg<br />
...<br />
 11:17:05.376    pjsua_acc.c  sip:nagios@pabx.csquad.lan: registration success, status=200 (OK), will re-register in 300 seconds</code></p>
<p>Un appel de test :<br />
<code>$ pjsua --config-file /etc/nagios/sip.cfg --null-audio sip:secretariat@pabx.csquad.lan</code></p>
<p>Ensuite un appel de test audio avec un message :<br />
<code> $ espeak -v mb/mb-fr1 "E.T. téléphone maison" | /usr/local/bin/mbrola /usr/share/mbrola/fr1/fr1 - test.wav<br />
$ pjsua --config-file /etc/nagios/sip.cfg --play-file=test.wav --auto-play --null-audio sip:secretariat@pabx.csquad.lan<br />
$ rm -f test.wav<br />
</code></p>
<p>On met le tout dans un petit script <a href="http://expect.nist.gov/">expect</a> pour prendre en charge la déconnections de manière polie :<br />
<code><br />
#!/usr/bin/expect  --<br />
set timeout 45<br />
set addr [lindex $argv 0]<br />
set text [lindex $argv 1]<br />
exec /usr/bin/espeak -v mb/mb-fr1 $text | /usr/local/bin/mbrola /usr/share/mbrola/fr1/fr1 - /tmp/phone-call.wav;<br />
spawn /usr/local/bin/pjsua --app-log-level=3 --config-file /etc/nagios/sip.cfg --play-file /tmp/phone-call.wav --auto-play --null-audio --max-calls 1 sip:$addr<br />
expect {<br />
        "DISCONNCTD" {<br />
                exit<br />
        }<br />
        timeout {<br />
                send "h\n"<br />
                exit<br />
        }<br />
        eof {<br />
                exit<br />
        }<br />
}<br />
</code><br />
Et voilà <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Il ne nous reste plus qu&#8217;à configurer ce type de notification dans Nagios.<br />
Pour cela, il faut modifier le fichier <em>contacts.cfg</em> :<br />
<code># 'nagios-phone' contact definition<br />
define contact{<br />
        contact_name                    nagios-phone<br />
        alias                           Nagios Admin via Phone<br />
        service_notification_period     24x7 ; mouahahahahahaha<br />
        host_notification_period        24x7 ; moiahahahahahahah<br />
        service_notification_options    w,u,c,r<br />
        host_notification_options       d,u,r<br />
        service_notification_commands   notify-by-phone<br />
        host_notification_commands      host-notify-by-phone<br />
        email sip:secretariat@pabx.csquad.lan<br />
        }<br />
</code><br />
Puis le fichier <em>misccommands.cfg</em> :<br />
<code># 'notify-by-phone' personnal command definition<br />
define command{<br />
  command_name notify-by-phone<br />
  command_line /usr/local/bin/phone-call.sh $CONTACTEMAIL$ "$NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$"<br />
}<br />
# 'host-notify-by-phone' personnal command definition<br />
define command{<br />
  command_name host-notify-by-phone<br />
  command_line /usr/local/bin/phone-call.sh $CONTACTEMAIL$ "Host $HOSTSTATE$ alert for $HOSTNAME$!"<br />
}<br />
</code><br />
Ensuite, vous pouvez définir <em>nagios-phone</em> comme un contact pour des services ou hosts. </p>
<p>Il faut aussi modifier la valeur de la variable <a href="http://nagios.sourceforge.net/docs/2_0/configmain.html#notification_timeout">notification_timeout</a> dans le fichier de configuration <em>nagios.cfg</em>, pour avoir le temps de décrocher le téléphone et d&#8217;en tendre le message. </p>
<h3>Conclusion</h3>
<p>Vous n&#8217;avez plus aucune excuse pour ne pas brancher vos esclaves^Wéquipe d&#8217;administrateurs systèmes directement sur le système de surveillance de vos serveurs <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<p>Plus sérieusement, la notification par téléphone est une méthode très intrusive. Il est nécessaire de décrocher le téléphone. Il faut donc l&#8217;utiliser avec parcimonie. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2009/12/09/notifications-nagios-par-telephone/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Blacklister chez SpamHause à cause de la signature de mon serveur mail &#8230;</title>
		<link>http://www.csquad.org/2009/08/25/blacklister-chez-spamhause-a-cause-de-la-signature-de-mon-serveur-mail/</link>
		<comments>http://www.csquad.org/2009/08/25/blacklister-chez-spamhause-a-cause-de-la-signature-de-mon-serveur-mail/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 16:51:48 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Coup de gueule]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Network neutrality]]></category>
		<category><![CDATA[SPAM]]></category>
		<category><![CDATA[SpamHaus]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=437</guid>
		<description><![CDATA[Les services comme SpamHaus sont vraiment mauvais. 
Mon serveur de mail a été blacklister à cause de sa signature :
$ telnet mail.csquad.org 25
Trying 82.247.220.114...
Connected to mail.csquad.org.
Escape character is '^]'.
220 Microsoft ESMTP MAIL Service, Version: 5.0.2195.6713

Et à votre avis, j&#8217;utilise un serveur Microsoft Exchange pour la gestion des mails?
Ne faites pas confiance aux services qui vous [...]]]></description>
			<content:encoded><![CDATA[<p>Les services comme <a href="http://www.spamhaus.org/">SpamHaus</a> sont vraiment mauvais. </p>
<p>Mon serveur de mail a été blacklister à cause de sa signature :</p>
<p><code>$ telnet mail.csquad.org 25<br />
Trying 82.247.220.114...<br />
Connected to mail.csquad.org.<br />
Escape character is '^]'.<br />
220 Microsoft ESMTP MAIL Service, Version: 5.0.2195.6713<br />
</code><br />
Et à votre avis, j&#8217;utilise un serveur Microsoft Exchange pour la gestion des mails?</p>
<p>Ne faites pas confiance aux services qui vous proposent des listes d&#8217;adresse ip à blacklister &#8230;</p>
<p>Ces entreprises portent atteinte directement à la <a href="http://en.wikipedia.org/wiki/Network_neutrality">Network neutrality</a>.</p>
<p>A chaque fois que vous installez ce genre de service sur une machine vous :</p>
<ul>
<li>augmentez le pouvoir de nuisance de ses services ;</li>
<li>transformez l&#8217;Internet en Minitel. </li>
</ul>
<p>Pour combattre le spam, les techniques suivantes sont largement suffisantes  :</p>
<ul>
<li>Le <a href="http://en.wikipedia.org/wiki/Greylisting">Greylisting</a> ;</li>
<li><a href="http://en.wikipedia.org/wiki/Sender_Policy_Framework">Sender Policy Framework</a> ;</li>
<li><a href="http://en.wikipedia.org/wiki/DKIM">DomainKeys Identified Mail</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2009/08/25/blacklister-chez-spamhause-a-cause-de-la-signature-de-mon-serveur-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laconica, un twitter libre!</title>
		<link>http://www.csquad.org/2009/08/01/laconica-un-twitter-libre/</link>
		<comments>http://www.csquad.org/2009/08/01/laconica-un-twitter-libre/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 13:00:27 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Jabber]]></category>
		<category><![CDATA[Laconica]]></category>
		<category><![CDATA[OpenID]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=272</guid>
		<description><![CDATA[




Pour ceux qui me côtoient tous les jours, j&#8217;ai principalement deux gros défauts:

Je m&#8217;intéresse à trop de choses &#8230;   
J&#8217;envoie de la &#8220;propagande&#8221; par Jabber à mes contacts.




Du coup, le principe du Micro-blogging et du service Twitter m&#8217;a beaucoup séduit. 
Mais comme je suis un Ayatollah du logiciel libre et que je prône [...]]]></description>
			<content:encoded><![CDATA[<table>
<tr>
<td><img src="http://laconi.ca/logo.png"/></td>
<td valign="top">
<p>
Pour ceux qui me côtoient tous les jours, j&#8217;ai principalement deux gros défauts:</p>
<ul>
<li>Je m&#8217;intéresse à trop de choses &#8230; <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </li>
<li>J&#8217;envoie de la &#8220;propagande&#8221; par Jabber à mes contacts.</li>
</ul>
</td>
</tr>
</table>
<p>Du coup, le principe du <a href="http://en.wikipedia.org/wiki/Micro-blogging">Micro-blogging</a> et du service <a href="http://en.wikipedia.org/wiki/Twitter">Twitter</a> m&#8217;a beaucoup séduit. </p>
<p>Mais comme je suis un Ayatollah du logiciel libre et que je prône <a href="http://wiki.auto-hebergement.fr/">l&#8217;auto-hébergement</a>.<br />
Mon inscription sur un service web deux points zéro centralisé aurait fait un peu tâche dans ma pratique du logiciel libre radical (vu le nombre de mots clés dans cette phrase, je pense que je vais avoir droit à une décente des RG <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ).</p>
<p>Je viens de trouver la solution, Laconica (prononcé &#8220;luh-KAWN-ih-kuh&#8221;), un logiciel de micro-blogging libre écrit en PHP. L&#8217;objet de cet article est de décrire l&#8217;installation, la configuration et la mise en place de passerelles (mail, twitter, sms, et jabber) sur un serveur Debian GNU/Linux.</p>
<h3>Les Fonctionnalités</h3>
<p>Le logiciel dispose des fonctionnalités suivantes :</p>
<ul>
<li>Micro-blogging ; </li>
<li>Export des données au format RSS / Atom ;</li>
<li>Authentification via <a href="http://en.wikipedia.org/wiki/OpenID">OpenID</a> ;</li>
<li>Gestion de plusieurs comptes ;</li>
<li>Interface Jabber : notification et post ;</li>
<li>Interface avec Twitter ;</li>
<li>Notification via SMS ;</li>
<li>Feuille de style pour les mobiles ;</li>
<li>Une traduction de qualité en Français ;</li>
<li>Gestion du format <a href="http://www.foaf-project.org/">FOAF</a> ; </li>
<li>Intégration avec de nombreuses <a href="http://laconi.ca/trac/wiki/Apps">application</a> ;</li>
<li>Affichage des messages via un &#8220;badge&#8221; directement dans le code de votre site web : <a href="http://kentbrewster.com/identica-badge/">Identica Badge</a> ;</li>
<li>Génération automatique de <a href="http://www.sitemaps.org/protocol.php">Sitemaps</a> pour le référencement ;</li>
<li>Support du protocole <a href="http://openmicroblogging.org/">OpenMicroBlogging</a> pour le suivi décentralisé des messages. </li>
</ul>
<h3>Pré-requis</h3>
<p>Pour l&#8217;installation de Laconica vous avez besoin :</p>
<ul>
<li>d&#8217;un serveur sous Debian GNU/Linux ;</li>
<li>serveur HTTP comme Apache 2 ;</li>
<li>base de donné comme MySQL ou bien Postgresql ;</li>
<li>d&#8217;un serveur de Mail ;</li>
<li>d&#8217;un serveur Jabber (optionnel) ;</li>
</ul>
<h3>Installation des dépendances</h3>
<p>Le programme nécessite les dépendances suivantes :<br />
<code><br />
# apt-get install apache2-mpm-prefork libapache2-mod-php5 php5-mysql php5-gd php5-cli php-pear php-mail php-db php-http php-xml-parser php5-curl<br />
</code></p>
<h3>Installation du logiciel</h3>
<p>Laconica, est une application web, l&#8217;installation consiste simplement à extraire le fichier tgz dans le répertoire <em>/var/www</em> et configurer Apache.<br />
<code><br />
# cd /var/www<br />
# wget http://laconi.ca/laconica-0.8.0.tar.gz<br />
# tar xvf laconica-0.8.0.tar.gz<br />
# ln -s laconica-0.8.0  laconica<br />
# chown www-data: laconica-0.8.0<br />
# cd laconica<br />
# mv htaccess.sample .htaccess<br />
</code><br />
Il faut éditer le fichier .htaccess pour modifier la règle <em>RewriteBase</em>.</p>
<p>Vous devez ensuite configurer le site web pour Apache en mettant le contenu suivant dans le fichier <em>/etc/apache2/sites-available/laconica</em> :<br />
<code><br />
&lt;virtualhost *:80><br />
ServerName mblog.nom_de_domaine<br />
ErrorLog /var/log/apache2/mblog.nom_de_domaine/error.log<br />
CustomLog /var/log/apache2/mblog.nom_de_domaine/access.log common<br />
DocumentRoot /var/www/laconica<br />
&lt;/virtualhost><br />
</code></p>
<p>Il faut créer le répertoire pour les logs du site, activer le site et le module rewrite dans Apache :</p>
<p><code><br />
# mkdir /var/log/apache2/mblog.nom_de_domaine/<br />
# a2enmod rewrite<br />
Enabling module rewrite.<br />
Run '/etc/init.d/apache2 restart' to activate new configuration!<br />
# a2ensite laconica<br />
Enabling site laconica.<br />
Run '/etc/init.d/apache2 reload' to activate new configuration!<br />
# /etc/init.d/apache2 restart</code></p>
<p>Vous devez créer une base de données avec MySQL ou PostgreSQL et attribuer tous les droits sur la base à un utilisateur.</p>
<p>Vous pouvez ensuite pointer votre navigateur sur l’adresse de votre site : <em>http://mblog.nom_de_domaine/install.php</em></p>
<p>La procédure d’installation vous demande simplement les informations de connexion à la base de données.</p>
<p>Une fois l&#8217;installation effectuée, vous pouvez vous enregistrer et utiliser l&#8217;application.</p>
<h3>Configuration Mono-utilisateurs</h3>
<p>Une fois que vous avez créer votre compte et que vous êtes le seul à utiliser l&#8217;application; il faut interdire les enregistrements de nouveau compte en modifiant le fichier <em>config.php</em> :<br />
<code>$config['site']['closed'] = true;</code></p>
<h3>Configuration de la passerelle Twitter</h3>
<p>Mouahah, et puis quoi encore? Non, je n&#8217;ai pas testé, je n&#8217;ai pas réussi à créer un compte &#8230;<br />
Mais d&#8217;après la documentation de Laconica, il suffit de saisir son login et mot de passe.</p>
<h3>Configuration de la passerelle de Messagerie</h3>
<p>Pour cette partie, il faut créer un alias spécial sur votre serveur de messagerie.<br />
Voici ma configuration pour Postfix.<br />
Dans le fichier <em>/etc/aliases</em>, il faut ajouter la ligne suivante :<br />
<code>*:|/var/www/laconica/scripts/maildaemon.php</code><br />
Refaire la base des alias de postfix :<br />
<code># postalias /etc/aliases</code><br />
Rendre le fichier <em>maildaemon.php</em> exécutable.<br />
<code>chmod +x /var/www/laconica/scripts/maildaemon.php</code><br />
Ce script pour fonctionner nécessite l&#8217;extension <a href="http://pecl.php.net/package/mailparse">PECL mailparse</a> de PHP.<br />
La procédure d&#8217;installation est la suivante :<br />
<code># apt-get install dh-make-php php5-dev xsltproc<br />
# cd /usr/src/<br />
# dh-make-pecl  --only 5 mailparse<br />
downloading mailparse-2.1.5.tgz ... Starting to download mailparse-2.1.5.tgz (37,332 bytes) ..........done: 37,332 bytes File /var/www/laconica/scripts/mailparse-2.1.5.tgz downloaded<br />
Creating debian source package: php-mailparse-2.1.5<br />
Upstream is: Wez Furlong, Brian Shire<br />
Guessing Maintainer: root<br />
# cd php-mailparse-*/<br />
# dpkg-buildpackage -b<br />
...<br />
# dpkg -i ../php5-mailparse_2.1.5-1_i386.deb<br />
</code></p>
<p>Une fois la passerelle en place, il faut créer une adresse &#8220;incoming&#8221; :<br />
Pour cela, il faut aller dans la configuration e-mail de votre compte et cliquer sur nouveau pour obtenir une adresse de type : <em>XMWY7QTL3MR42@votre_nom_de_domaine</em>.</p>
<p>Vous pouvez ensuite envoyer un mail à cette adresse et vérifier que tout ce passe bien dans les logs de postfix :<br />
<code><br />
Jul 31 11:02:50 mail postfix/local[30821]: E76C8F40FB: to=&lt;XMWY7QTL3MR42@csquad.org&gt;, relay=local, delay=0.56, delays=0.01/0/0/0.55, dsn=2.0.0, status=sent (delivered to command: /var/www/laconica/scripts/maildaemon.php)<br />
</code></p>
<p>Une petite astuce pour une installation perso, est de faire un seul alias et de modifier le contenu de la table <em>user.incomingemail</em> dans la base de données.</p>
<h3>Configuration de la passerelle Jabber</h3>
<p>Il faut modifier le fichier de configuration <em>config.php</em> et ajouter les lignes suivantes :<br />
<code><br />
$config['xmpp']['enabled'] = true;<br />
$config['xmpp']['server'] = "jabber.csquad.lan";<br />
$config['xmpp']['port'] = 5222;<br />
$config['xmpp']['user'] = "laconica";<br />
$config['xmpp']['password'] = "***********";<br />
$config['xmpp']['encryption'] = true;<br />
$config['daemon']['user'] = "www-data";<br />
$config['daemon']['group'] = "www-data";<br />
</code></p>
<p>Laconica, ne sait pas s&#8217;enregistrer auprès du serveur, ni s&#8217;ajouter dans votre <em>roaster,</em> il faut donc le faire manuellement,<br />
soit à l&#8217;aide d&#8217;un client Jabber classique ou bien à l&#8217;aide de l&#8217;interface d&#8217;administration de votre serveur.<br />
Ejabberd permet de le faire directement via l&#8217;interface Web.  </p>
<p>Vous pouvez ensuite lancer le daemon à l&#8217;aide de php en ligne de commande :<br />
<code><br />
# cd /var/www/laconica/<br />
# php scripts/xmppdaemon.php -f<br />
2009-07-31 06:59:42 LOG_INFO: XMPPDaemon(uniquenamedaemon): INITIALIZE XMPPDaemon laconica@jabber.csquad.lan/uniquenamedaemon<br />
2009-07-31 06:59:42 LOG_INFO: XMPPDaemon(uniquenamedaemon): Connecting to jabber.csquad.lan on port 5222<br />
2009-07-31 06:59:42 LOG_INFO: XMPPDaemon(uniquenamedaemon): Connected<br />
2009-07-31 06:59:42 LOG_INFO: XMPPDaemon(uniquenamedaemon): Sending initial presence.<br />
2009-07-31 06:59:42 LOG_INFO: XMPPDaemon(uniquenamedaemon): Done connecting.<br />
2009-07-31 06:59:42 LOG_DEBUG: XMPPDaemon(uniquenamedaemon): Initializing stanza handlers.<br />
2009-07-31 06:59:42 LOG_DEBUG: XMPPDaemon(uniquenamedaemon): Beginning processing loop.<br />
</code><br />
Une fois lancé, le contact du micro blog doit apparaître dans votre client Jabber.<br />
Mais lorsque vous lui parlez, il ne vous reconnait pas. Il faut donc associé le compte Jabber à votre compte Laconica.<br />
Pour cela, rendez-vous sur l&#8217;interface de configuration à l&#8217;adresse suivante : <em>http://mblog.votre_nom_de_domaine/settings/im</em>,<br />
et saisissez votre adresse Jabber que Laconica vous demandera de confirmer à l&#8217;aide d&#8217;une url de vérification.</p>
<p>Et voila, tous les messages que vous envoyez à ce contact Jabber se retrouvent directement sur votre micro blog <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /><br />
Et lorsqu&#8217;un utilisateur poste un message vous recevez celui-ci sur votre compte Jabber.</p>
<h3>Suivre une personne de manière distribuée</h3>
<p>Pour suivre une personne sur Laconica de manière distribuée, il suffit de cliquer sur le bouton <strong>subscribe</strong> du profil.<br />
L&#8217;application vous demande, le pseudo de la personne et l&#8217;url de votre profil.<br />
Celle-ci est de la forme : <em>http://laconica.&lt;votre_domaine&gt;/&lt;nickname&gt;/</em>.</p>
<h3>Conclusion</h3>
<p>Et voilà ! Laconica ça poutre les ours ! <img src='http://www.csquad.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2009/08/01/laconica-un-twitter-libre/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>FON, un accès Internet Wifi communautaire</title>
		<link>http://www.csquad.org/2006/09/13/fon-un-acces-internet-wifi-communautaire/</link>
		<comments>http://www.csquad.org/2006/09/13/fon-un-acces-internet-wifi-communautaire/#comments</comments>
		<pubDate>Wed, 13 Sep 2006 19:49:43 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[FON]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=47</guid>
		<description><![CDATA[




FON est une entreprise qui vous propose le marché suivant:
Partager votre connection haut débit à l&#8217;aide de la technologie Wifi, pour gagnier de l&#8217;argent ou bien accéder au reseau des autres membres de la communauté.
L&#8217;idée est très séduisante et permet de construire un réseau sans investir des sommes d&#8217;argent astronomiques dans son déploiement. Elle permet [...]]]></description>
			<content:encoded><![CDATA[<table>
<tr>
<td><img src='/wp-content/fon.jpg' alt='FON Logo' /></td>
<td valign="top">
<p>
<a href="http://fr.fon.com/">FON</a> est une entreprise qui vous propose le marché suivant:<br />
<em>Partager votre connection haut débit à l&#8217;aide de la technologie Wifi, pour gagnier de l&#8217;argent ou bien accéder au reseau des autres membres de la communauté.</em><br />
L&#8217;idée est très séduisante et permet de construire un réseau sans investir des sommes d&#8217;argent astronomiques dans son déploiement. Elle permet aux utilisateurs de profiter d&#8217;une connection internet mobile via 6000 hotspot Wifi disponibles en France.  </p>
<p>
Pour ma part, je cherchais une solution alternative au réseau <a href="http://www.orange-wifi.com/">Wifi d&#8217;Orange</a> qui est hors de prix (70 euros par mois pour un accès illimité à 17000 hotspot Wifi et au reseau 3G). J&#8217;ai été vite séduit par la proposition de  FON, et du coup, j&#8217;ai déployé deux hotspot Wifi dans ma ville (<a href="http://fr.maps.fon.com/recenter/2.5877952575683594/48.867537821737564/">Chelles</a>).
</p>
</td>
</tr>
</table>
<p>
La procédure à suivre est assez simple, il suffit de s&#8217;enregister sur le site de FON et d&#8217;acheter un routeur pour moins de 15 euros (5 euro le routeur et 10 euros de frais de port UPS / PayPal). Ensuite, une fois le routeur recu, il suffit de l&#8217;installer et de l&#8217;enregistrer dans le réseau FON.<br />
Le routeur est un <a href="http://es.fon.com/shop-eu/images/RouterTienda1.gif">LinkSys WRT54GL</a> équipé du logiciel <a href="http://openwrt.org/">OpenWRT</a> et personalisé par FON. Celui-ci est entièrement configurable et fonctionne comme un routeur &#8220;normal&#8221;.
</p>
<p>
Je trouve que c&#8217;est plutôt une bonne opération :</p>
<ul>
<li>un accès Wifi sur près de 80000 hotspot Wifi dans le monde ;</li>
<li>un bon routeur Wifi à prix réduit (le routeur coûte 50 euros dans le commerce) ;</li>
<li>pas d&#8217;engagement.</li>
</ul>
<p>L&#8217;entreprise propose de gagner de l&#8217;argent avec votre routeur en partagant les revenus générés par celui-ci. (Grâce aux itinérants qui utilisent votre hotspot).<br />
Mais je pense qu&#8217;à moins de vivre au dessus d&#8217;un cafe ou tout autre endroit public fortement peuplé cela ne presente pas beaucoup d&#8217;intérêt.</p>
<p>Je pense que ce genre de réseau va se développer dans le futur et accompagner la migration vers &#8220;le tout IP&#8221; de notre société.<br />
Cette migration et la technologie Wifi donne la chance aux utilisateurs de devenir <strong>propriètaire du réseau</strong> et ne plus faire office de vache à lait pour les opérateurs, comme c&#8217;est actuellement le cas du réseau GSM.</p>
<p>Donc si l&#8217;idée vous intéresse, je vous propose de rejoindre le réseau.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2006/09/13/fon-un-acces-internet-wifi-communautaire/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>dbus-daemon, how to listen on TCP/IP socket?</title>
		<link>http://www.csquad.org/2006/05/26/dbus-daemon-how-to-listen-on-tcpip-socket/</link>
		<comments>http://www.csquad.org/2006/05/26/dbus-daemon-how-to-listen-on-tcpip-socket/#comments</comments>
		<pubDate>Fri, 26 May 2006 10:18:21 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Network]]></category>
		<category><![CDATA[D-BUS]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=37</guid>
		<description><![CDATA[This feature is not well documented, so there is the configuration ligne to add in your /etc/dbus-1/system.conf file :

&#60;listen&#62;tcp:host=localhost,port=12434&#60;/listen&#62;

]]></description>
			<content:encoded><![CDATA[<p>This feature is not well documented, so there is the configuration ligne to add in your <em>/etc/dbus-1/system.conf</em> file :<br />
<quote><br />
&lt;listen&gt;tcp:host=localhost,port=12434&lt;/listen&gt;<br />
</quote></p>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2006/05/26/dbus-daemon-how-to-listen-on-tcpip-socket/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Configuration automatique des interfaces réseaux sous Debian GNU/Linux.</title>
		<link>http://www.csquad.org/2006/05/10/configuration-automatique-des-interfaces-reseaux-sous-debian-gnulinux/</link>
		<comments>http://www.csquad.org/2006/05/10/configuration-automatique-des-interfaces-reseaux-sous-debian-gnulinux/#comments</comments>
		<pubDate>Wed, 10 May 2006 20:21:17 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=34</guid>
		<description><![CDATA[Le Saint Graal de l&#8217;informaticien en déplacement consiste en une solution technique pour configurer automatiquement l&#8217;ensemble des interfaces réseaux (Ethernet + Wifi) sous Debian GNU/Linux.
Problèmatique




Je dispose d&#8217;un portable évoluant parmis plusieurs réseaux informatiques : 

le travail
 la maison
etc.

La configuration réseau  de ses environnements est diffèrente  ( type de liaison, routeur par défaut, netmask, [...]]]></description>
			<content:encoded><![CDATA[<p>Le Saint Graal de l&#8217;informaticien en déplacement consiste en une solution technique pour configurer automatiquement l&#8217;ensemble des interfaces réseaux (Ethernet + Wifi) sous Debian GNU/Linux.</p>
<h3>Problèmatique</h3>
<table>
<tr valign="top">
<td><img src='/wp-content/laptop.png' alt='laptop' /></td>
<td>
Je dispose d&#8217;un portable évoluant parmis plusieurs réseaux informatiques : </p>
<ul>
<li>le travail</li>
<li> la maison</li>
<li>etc.</li>
</ul>
<p>La configuration réseau  de ses environnements est diffèrente  ( type de liaison, routeur par défaut, netmask, etc&#8230;) et demande la reconfiguration des interfaces à chaque déplacement. </p>
<p>Il s&#8217;agit d&#8217;une tâche pénible et laborieuse, c&#8217;est pour cela que je me  interessé au problème afin de trouver une solution simple, ne nécessitant aucune intervention de ma part. </p>
<p>Celle-ci ne se base pas sur le logiciel <a href="http://www.gnome.org/projects/NetworkManager/">NetworkManager</a>, car ce dernier ne permet pas encore de détecter automatiquement sur quel réseau se trouve la machine.
</td>
</tr>
</table>
<h3>Solution</h3>
<p>Ma solution se base sur plusieurs logiciels diffèrents ayant chacun un rôle bien définit :</p>
<ul>
<li><a href="http://hostap.epitest.fi/wpa_supplicant/">wpasupplicant</a> : daemon prennant en charge le réseau Wifi (détection, configuration, authentification et <a href="http://fr.wikipedia.org/wiki/Roaming">roaming</a>) </li>
<li><a href="http://0pointer.de/lennart/projects/ifplugd/">ifplugd</a> : système de détection des interfaces réseaux, permettant de détecter le branchement d&#8217;un cable rj45 ou l&#8217;apparition d&#8217;un point d&#8217;accés Wifi.</li>
<li><a href="http://guessnet.alioth.debian.org/">guessnet</a> : système de détection réseau basé sur l&#8217;utilisation de trames ARP</li>
<li><a href="http://packages.debian.org/stable/net/resolvconf">resolvconf</a> : système de gestion des serveurs de noms</li>
<li><a href="http://packages.debian.org/stable/base/ifupdown">ifupdown</a> : scripts de configuration réseau de la distribution Debian</li>
</ul>
<h3>Interfaces réseau</h3>
<p>Mon portable dispose de deux interfaces réseaux :</p>
<ul>
<li>eth0 : interface ethernet prise en charge par le driver <strong>r8169</strong>.</li>
<li>eth1 : interface wifi prise en charge par le driver <strong>ipw2200</strong>.</li>
</ul>
<p>Il vaut mieux disposer de drivers libres (exit ndiswrapper et co &#8230; ;0)</p>
<h3>Installation</h3>
<p>L&#8217;installation des pâquets nécessaires est extrêment simple à l&#8217;aide de apt-get ou d&#8217;aptitude :</p>
<blockquote><p>#aptitude install wpasupplicant  ifplugd guessnet resolvconf</p></blockquote>
<h3>Emplacement des fichiers de configuration</h3>
<p>L&#8217;ensemble de la configuration réseau se trouve dans deux fichiers :</p>
<ul>
<li>/etc/network/inerfaces : configuration des toutes les interfaces</li>
<li>/etc/wpa_supplicant.conf : spécificitées liées aux réseaux sans fils</li>
</ul>
<h3>Configuration</h3>
<p>Il faut tout d&#8217;abord configurer<em> wpasupplicant</em> afin que celui-ci soit lancé au démarrage de votre machine, la procédure est diffèrente en fonction de la version de votre distribution :</p>
<ul>
<li>Sarge (version 0.3.8)<br />
        Editez le fichier <em>/etc/default/wpasupplicant</em> de la manière suivante :</p>
<blockquote><p>
# /etc/default/wpasupplicant</p>
<p># WARNING! Make sure you have a configuration file!</p>
<p>ENABLED=<em>1</em></p>
<p># Useful flags:<br />
#  -D <driver>          Wireless Driver<br />
#  -i <ifname>          Interface (required, unless specified in config)<br />
#  -c <config file>     Configuration file<br />
#  -d                   Debugging (-dd for more)<br />
#  -w                   Wait for interface to come up</p>
<p>OPTIONS=&#8221;-w -i<em> eth1</em> -D <em>ipw</em> -c /etc/wpa_supplicant.conf&#8221;<br />
</config></ifname></driver></p></blockquote>
<p>       Activez le daemon, indiquez le nom de votre interface réseau et le nom du driver (wpa_supplicant -h pour obtenir la liste des drivers disponibles).<br />
Il faut ensuite configurer les spécificités de vos réseaux Wifi à l&#8217;aide du fichier <em>/etc/wpa_supplicant/wpa_supplicant.conf </em>en vous basant sur l&#8217;exemple fourni par le paquet Debian:</p>
<blockquote><p># gunzip -c /usr/share/doc/wpasupplicant/examples/wpa_supplicant.conf.gz > /etc/wpa_supplicant.conf</p></blockquote>
<p>Une fois la configuration des réseaux Wifi déclarée, il suffit de lancer le programme à partir du script fourni dans /etc/init.d.
       </li>
<li>Autres (version 0.4.8)<br />
        TODO
        </li>
</ul>
<p>Nous allons ensuite passer à la configuration de toutes les interfaces dans le fichier <em>/etc/network/interfaces</em>.</p>
<p>Il faut indiquer à ifplugd de prendre en charge les deux interfaces de la manière suivante :</p>
<pre>
# ifplugd
allow-hotplug eth0 eth1
</pre>
<p>Puis décrire le  mapping des interfaces réseaux avec le script <em>guessnet-ifupdown</em>.</p>
<pre>
# Interface Mapping
mapping eth0 eth1
        script guessnet-ifupdown
        map default: unknown
</pre>
<p>Ensuite indiquer les spécificités de chaque réseau : </p>
<pre>
iface home inet static
        address 192.168.42.42
        netmask 255.255.255.0
        gateway 192.168.42.254

        dns-search csquad.lan
        dns-nameservers 192.168.42.3 192.168.17

        test1 peer address 192.168.42.253 00:12:17:07:C2:C9

iface work inet static
        address 10.0.0.101
        netmask 255.255.255.0
        gateway 10.0.0.1

        dns-search easter-eggs.fr
        dns-nameservers 10.0.0.2 10.0.0.20

        test1 peer address 10.0.0.1 00:50:22:8b:9c:d2

# DHCP par défaut
iface unknown inet dhcp
</pre>
<p>Les directives intéressantes sont :</p>
<ul>
<li>dns-* :  la configuration des serveurs DNS via <em>resolvconf.</em></li>
<li>test*   : les conditions permettant à <em>guessnet</em> d&#8217;identifier le réseau. La plupart du temps, il s&#8217;agit de  l&#8217;adresse MAC du routeur par défaut.</li>
</ul>
<h3>Test de fonctionnement</h3>
<p>Après la configuration, il ne vous reste plus qu&#8217;a tester l&#8217;ensemble en :</p>
<ul>
<li>Branchant/Débranchant le câble réseau.</li>
<li>Activant/Désactivant le point d&#8217;accès Wifi.</li>
</ul>
<p>Si tout se passe bien, vos interfaces réseaux seront configurées automatiquement. Dans le cas contraire, vous trouverez de nombreuses informations dans <em>syslog</em>, vous permettant d&#8217;identifier le problème.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2006/05/10/configuration-automatique-des-interfaces-reseaux-sous-debian-gnulinux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Publication de sites web avec mod_dnssd et Apache2</title>
		<link>http://www.csquad.org/2006/04/03/publication-de-sites-web-avec-mod_dnssd-et-apache2/</link>
		<comments>http://www.csquad.org/2006/04/03/publication-de-sites-web-avec-mod_dnssd-et-apache2/#comments</comments>
		<pubDate>Mon, 03 Apr 2006 21:00:29 +0000</pubDate>
		<dc:creator>cscm</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Zeroconf]]></category>

		<guid isPermaLink="false">http://www.csquad.org/?p=31</guid>
		<description><![CDATA[Je suis actuellement en train de travailler avec le support du protocole Rendez-vous (alias Zeroconf) sous GNU/Linux pour pouvoir configurer de manière automatique l&#8217;ensemble des services qui sont à ma disposition. Ce protocole serait pour moi la meilleure solution pour ne pas à avoir à reconfigurer mon portable lorsque je suis en déplacement.
L&#8217;objectif de ce [...]]]></description>
			<content:encoded><![CDATA[<p>Je suis actuellement en train de travailler avec le support du protocole Rendez-vous (alias Zeroconf) sous GNU/Linux pour pouvoir configurer de manière automatique l&#8217;ensemble des services qui sont à ma disposition. Ce protocole serait pour moi la meilleure solution pour ne pas à avoir à reconfigurer mon portable lorsque je suis en déplacement.<br />
L&#8217;objectif de ce billet est d&#8217;expliquer comment publier un site web à l&#8217;aide du protocole Zeroconf.  </p>
<h3>Zeroconf</h3>
<p><a href="http://fr.wikipedia.org/wiki/Zeroconf">Zeroconf</a> est le nom d&#8217;un ensemble de technologies permettant à plusieurs ordinateurs de communiquer sans configuration.<br />
Le but est d&#8217;obtenir un réseau IP fonctionnel sans dépendance d&#8217;une infrastructure (serveur DHCP, serveur DNS, etc.) ou d&#8217;une expertise réseau. L&#8217;ensemble des ces technologies sont implémantées sous Linux par le projet <a href="http://avahi.org/">Avahi</a>.</p>
<h3>mod_dnssd</h3>
<p>Le module <a href="http://0pointer.de/lennart/projects/mod_dnssd/">mod_dnssd</a> permet d&#8217;intégrer le support de Zeroconf dans Apache2 et de publier par l&#8217;intèrmédiaire d&#8217;Avahi l&#8217;ensemble des sites disponibles sur le serveur.</p>
<h3>Installation du module</h3>
<p>Tout d&#8217;abord vous avez besoin d&#8217;Avahi :</p>
<blockquote><p>
# aptitude install avahi
</p></blockquote>
<p>Des biblithèques de developpement d&#8217;Apache2 :</p>
<blockquote><p>
# aptitude install apache2-dev
</p></blockquote>
<p>Télécharger les sources du modules sur le <a href="http://0pointer.de/lennart/projects/mod_dnssd/">site web</a> de l&#8217;auteur :</p>
<blockquote><p>
$ wget http://0pointer.de/lennart/projects/mod_dnssd/mod_dnssd-0.4.tar.gz
</p></blockquote>
<p>Compiler et installer le module :</p>
<blockquote><p>
$ tar xzf mod_dnssd-0.4.tar.gz<br />
$ cd mod_dnssd-0.4<br />
$ ./configure &#038;&#038; make<br />
# make install
</p></blockquote>
<p>Le module se retrouve dans le répertoire : <em>/usr/lib/apache2/modules/</em></p>
<h3>Configuration d&#8217;Apache</h3>
<p>Pour publier, un site web il faut activer la publication dans le fichier de configuration d&#8217;Apache  :</p>
<blockquote><p>
DNSSDEnable On
</p></blockquote>
<p>Pour publier une URL, il suffit d&#8217;indiquer son nom à l&#8217;aide de la directive  <em>DNSSDServiceName</em> :</p>
<blockquote><p>
&lt;location /foobar&gt;<br />
	DNSSDServiceName &#8220;Documentation&#8221;<br />
&lt;/location&gt;
</p></blockquote>
<p>Vous pouvez aussi publier des flux RSS en précisant le type de services :</p>
<blockquote><p>
&lt;Location /blog.cgi?rss&gt;<br />
	DNSSDServiceName &#8220;The blog&#8221;<br />
	DNSSDServiceTypes _rss._tcp<br />
&lt;/Location&gt;
</p></blockquote>
<h3>Exploitation</h3>
<table>
<tr valign="top">
<td><img src='/wp-content/avahidiscovery_websites.png' alt='' /></td>
<td>Vous pouvez vérifier que les sites ont bien été publié à l&#8217;aide d&#8217;utilitaire <em>avahi-discover</em>.</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.csquad.org/2006/04/03/publication-de-sites-web-avec-mod_dnssd-et-apache2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

