<?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>Emile "iMil" Heitor 's home</title>
	<atom:link href="http://imil.net/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://imil.net/wp</link>
	<description>life, unix and stuff</description>
	<lastBuildDate>Fri, 30 Dec 2011 20:58:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>iwpriv mode et kamikaze 7.09</title>
		<link>http://imil.net/wp/2011/12/26/iwpriv-mode-et-kamikaze-7-09/</link>
		<comments>http://imil.net/wp/2011/12/26/iwpriv-mode-et-kamikaze-7-09/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 19:15:15 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[LiteStation 2]]></category>
		<category><![CDATA[madwifi]]></category>
		<category><![CDATA[OpenWRT]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=693</guid>
		<description><![CDATA[Un p&#8217;tit fix vite fait. J&#8217;utilise, sur une Ubiquiti Litestation 2 le firmware OpenWrt Kamikaze 7.09. Je sais, c&#8217;est vieux, mais plusieurs témoignages de bricking suite à un upgrade en 8.09 ou backfire m&#8217;ont refroidit. Je place généralement mes AP publics en 802.11b afin de porter le plus loin possible. Je réalise ceci via la [...]]]></description>
			<content:encoded><![CDATA[<p>Un p&#8217;tit fix vite fait. J&#8217;utilise, sur une <a href="http://www.ubntstore.eu/ubiquiti-litestation-2.html">Ubiquiti Litestation 2</a> le firmware <a href="https://openwrt.org/">OpenWrt</a> Kamikaze 7.09. Je sais, c&#8217;est vieux, mais plusieurs témoignages de <i>bricking</i> suite à un upgrade en 8.09 ou <i>backfire</i> m&#8217;ont refroidit. Je place généralement mes AP publics en 802.11b afin de porter le plus loin possible. Je réalise ceci via la commande:</p>
<pre># iwpriv ath0 mode 11b</pre>
<p>Sauf que, sur ma LS2, je mangeais l&#8217;erreur suivante:</p>
<pre>Interface doesn't accept private ioctl...
mode (8BE2): Invalid argument</pre>
<p>Rien à faire, ça foire.<br />
J&#8217;ai trouvé un (vilain) hack pour ce problème sur <a href="http://madwifi-project.org/ticket/411">le bug system de madwifi</a>:</p>
<p><i>I get same problem using a Z-COM XG623 minPCI card (AR2413 11b&#038;g modes) in AP mode. The failure is due to ieee80211_check_mode_consistency() that doesn&#8217;t validate 11b (2) mode because current channel (vap->iv_des_channel) is an 11g-dyn (CCK+OFDM) channel. A possible workaround is set current channel to 0 (any channel), select the requested mode (iwpriv athx mode 11b) and then configure again the rigth operating channel. This not fix the problem but allows 11b mode operations.</i></p>
<p>Et effectivement:</p>
<pre># iwconfig ath0 channel 0
# iwpriv ath0 mode 11b
# iwconfig ath0 channel 7</pre>
<p>March.<br />
Reste à rendre ce changement un peu plus élégant en modifiant le fichier <code>/lib/wifi/madwifi.sh</code> à la ligne 105:</p>
<pre>iwconfig "$ifname" channel 0 >/dev/null 2>/dev/null</pre>
<p>puisque de toutes façons, le canal est re-placé un peu plus bas.</p>
<p>Ce bug est probablement une typo et il semble être corrigé dans Kamikaze 8.09.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/12/26/iwpriv-mode-et-kamikaze-7-09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is &#8220;if&#8221; really evil ?</title>
		<link>http://imil.net/wp/2011/12/14/is-if-really-evil/</link>
		<comments>http://imil.net/wp/2011/12/14/is-if-really-evil/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 11:52:20 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[User-Agent]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=690</guid>
		<description><![CDATA[Hier, FRLinux me demande innocemment d&#8217;ajouter le module WPtouch, un chouette plugin pour WordPress, qui permet aux mobiles de visualiser le site sous forme d&#8217;application, bien plus lisible que le blog dans sa forme classique.
Ni une ni deux je m&#8217;execute&#8230; et m&#8217;aperçois que l&#8217;affichage d&#8217;iMil.net ne change pas d&#8217;un iota sur mes devices mobiles. Je [...]]]></description>
			<content:encoded><![CDATA[<p>Hier, <a href="http://weblog.frlinux.net/">FRLinux</a> me demande innocemment d&#8217;ajouter le module <a href="http://wordpress.org/extend/plugins/wptouch/">WPtouch</a>, un chouette <i>plugin</i> pour <a href="http://fr.wordpress.org/">WordPress</a>, qui permet aux mobiles de visualiser le site sous forme d&#8217;application, bien plus lisible que le blog dans sa forme classique.<br />
Ni une ni deux je m&#8217;execute&#8230; et m&#8217;aperçois que l&#8217;affichage d&#8217;<i>iMil.net</i> ne change pas d&#8217;un iota sur mes <i>devices mobiles</i>. Je me rappelle alors que le <a href="http://wiki.nginx.org/Main">nginx</a> placé devant l&#8217;<a href="http://httpd.apache.org/">Apache</a> qui sert ce site cache la <i>homepage</i> pendant 10 minutes. Ceci explique cela.</p>
<p>Après quelques minutes de recherche, j&#8217;ai résolu le problème en plaçant ces quelques règles supplémentaires dans mon <code>nginx.conf</code>:</p>
<pre>
location / {
    set $mobile_ua '0';

    if ($http_user_agent ~* '(iPhone|iPod|mobile|Android|2.0\ MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|hiptop|IEMobile)') {
        set $mobile_ua '1';
    }
    # ...directives proxypass...
    proxy_cache_key imil.net$request_uri$mobile_ua;
    # ...plein d'autres trucs...
}
</pre>
<p>Explication: on initialise une variable <code>$mobile_ua</code> à <code>0</code>, si le <a href="http://fr.wikipedia.org/wiki/User-Agent">User Agent</a> <i>match</i> l&#8217;une des chaînes de caractères listées dans la condition <code>if</code>, la variable <code>$mobile_ua</code> est placée à <code>1</code>.<br />
La clé de cache étant maintenant composée également de cette variable, nous disposons de deux espaces de cache distincts, un pour les mobiles, l&#8217;autre pour le reste.</p>
<p>mmmmm nginx.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/12/14/is-if-really-evil/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Routage IPv6 via freebox</title>
		<link>http://imil.net/wp/2011/12/13/routage-ipv6-via-freebox/</link>
		<comments>http://imil.net/wp/2011/12/13/routage-ipv6-via-freebox/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 22:18:36 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Free]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[IPv6]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=688</guid>
		<description><![CDATA[J&#8217;enquille donc sur le précédent post sur le sujet avec cette fois une configuration qui sied à une passerelle de type GNU/Linux calée en bridge derrière une freebox, voir deux billets plus bas pour l&#8217;explication de fond, nous irons à l&#8217;essentiel ici.
Dans cet exemple, eth0 représente l&#8217;interface raccordée à notre réseau privé, et eth1 celle [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;enquille donc sur <a href="http://imil.net/wp/2011/12/08/routage-ipv6-sur-une-passerelle-chez-ovh-et-probablement-free/">le précédent post sur le sujet</a> avec cette fois une configuration qui sied à une passerelle de type GNU/Linux calée en <a href="http://fr.wikipedia.org/wiki/Pont_(informatique)">bridge</a> derrière une freebox, voir deux billets plus bas pour l&#8217;explication de fond, nous irons à l&#8217;essentiel ici.<br />
Dans cet exemple, <code>eth0</code> représente l&#8217;interface raccordée à notre réseau privé, et <code>eth1</code> celle raccordée à la freebox:</p>
<ul>
<li>Évidemment, il faudra activer le mode IPv6 sur votre interface free</li>
<li>On place les <code>sysctl</code> adéquats:
<pre>net.ipv6.conf.all.forwarding=1
net.ipv6.conf.all.proxy_ndp=1
# pas d'autoconfiguration pour la passerelle
net.ipv6.conf.all.autoconf=0
net.ipv6.conf.all.accept_ra=0</pre>
</li>
<li>On renseigne son IPv6, par exemple pour le sous-réseau 2a01:e35:39d7:e3e0::/64:
<pre>ip -6 addr add 2a01:e35:39d7:e3e0::2/64 dev eth1</pre>
</li>
<li>On déclare sa passerelle:
<pre>ip route add default via 2a01:e35:39d7:e3e0::1 dev eth1</pre>
</li>
<li>Puis on place une IPv6 qui servira de passerelle à notre réseau privé sur <code>eth0</code> avec une longueur de préfixe juste suffisante:
<pre>ip -6 addr add 2a01:e35:39d7:e3e0:1::1/126 dev eth0</pre>
</li>
<li>L&#8217;astuce, ici encore, consiste à <i>proxyiser</i> les adresses du LAN sur l&#8217;interface raccordée à la freebox afin d&#8217;apparaître comme un réseau &#8220;à plat&#8221;:
<pre>ip neigh add proxy 2a01:e35:39d7:e3e0:1::1 dev eth1</pre>
</li>
<li>Il suffit alors de faire de même pour toute machine de votre LAN que vous souhaitez raccorder à l&#8217;IPv6, par exemple, toujours sur la passerelle:
<pre>ip neigh add proxy 2a01:e35:39d7:e3e0:1::2 dev eth1</pre>
</li>
<li>Sur la machine qui portera l&#8217;adresse <code>2a01:e35:39d7:e3e0:1::2</code>, on ajoute à l&#8217;interface son IPv6, et on déclare comme passerelle par défaut <code>2a01:e35:39d7:e3e0:1::1</code>:
<pre>ip -6 addr add 2a01:e35:39d7:e3e0:1::2/126 dev eth0
ip route add default via 2a01:e35:39d7:e3e0:1::1</pre>
</li>
<li>Il conviendra de rajouter tout ce petit monde dans votre <code>/etc/network/interfaces</code> comme il se doit, encore une fois je vous renvoie 2 posts plus bas.</li>
</ul>
<p>La méthode est fastidieuse et pas forcément élégante, mais tant que l&#8217;opérateur free <del>ne se sera pas sorti les</del> ne routera pas plus qu&#8217;un /64 dans les foyers, nous devrons nous contenter de cela&#8230; ou passer la freebox en mode routeur. Nan j&#8217;déconne.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/12/13/routage-ipv6-via-freebox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Par ici ma p&#8217;tite dame</title>
		<link>http://imil.net/wp/2011/12/11/par-ici-ma-ptite-dame/</link>
		<comments>http://imil.net/wp/2011/12/11/par-ici-ma-ptite-dame/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 16:24:32 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[obfuscation]]></category>
		<category><![CDATA[Routing]]></category>
		<category><![CDATA[umad]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=684</guid>
		<description><![CDATA[
Puisque ça fait 2-3 fois qu&#8217;on me le demande, voici un schéma du routage de sortie à la maison:



Ça a l&#8217;air tordu comme ça, mais jvous promets qu&#8217;il y a une bonne raison à tous ces choix :)
]]></description>
			<content:encoded><![CDATA[<p>
Puisque ça fait 2-3 fois qu&#8217;on me le demande, voici un schéma du routage de sortie à la maison:
</p>
<p><a href="http://imil.net/gfx/imilnet-home.png"><img src="/gfx/imilnet-home.png"/></a></p>
<p>
Ça a l&#8217;air tordu comme ça, mais jvous promets qu&#8217;il y a une bonne raison à tous ces choix :)</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/12/11/par-ici-ma-ptite-dame/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Transformer 6</title>
		<link>http://imil.net/wp/2011/12/11/transformer-6/</link>
		<comments>http://imil.net/wp/2011/12/11/transformer-6/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 13:57:57 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[IPv6]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=679</guid>
		<description><![CDATA[
Sans vraiment y croire, je vais sur test-ipv6 avec ma tablette sous Android (une Asus Transformer), et quelle ne fut pas ma surprise de constater:



Pas d&#8217;étonnement, mon HTC Desire HD sous Android montre le même résultat:



Et histoire de me gausser, je fais le même test avec l&#8217;iPoo du boulot&#8230; bah pareil:



Ça commence à sentir bon [...]]]></description>
			<content:encoded><![CDATA[<p>
Sans vraiment y croire, je vais sur <a href="http://test-ipv6.com">test-ipv6</a> avec ma tablette sous Android (une Asus Transformer), et quelle ne fut pas ma surprise de constater:
</p>
<p><a href="http://imil.net/gfx/tranformer-ipv6.png"><img src="/gfx/tranformer-ipv6.png" width="450" alt="Transformer IPv6"/></a></p>
<p>
Pas d&#8217;étonnement, mon HTC Desire HD sous Android montre le même résultat:
</p>
<p><a href="http://imil.net/gfx/htc-ipv6.png"><img src="/gfx/htc-ipv6.png"/></a></p>
<p>
Et histoire de me gausser, je fais le même test avec l&#8217;iPoo du boulot&#8230; bah pareil:
</p>
<p><a href="http://imil.net/gfx/iphone-ipv6.PNG"><img src="/gfx/iphone-ipv6.PNG"/></a></p>
<p>
Ça commence à sentir bon !
</p>
<p>
Je précise qu&#8217;<strong>évidemment</strong>, ces tests ont été menés en mode WiFi et non en passant par l&#8217;opérateur de téléphonie.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/12/11/transformer-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Routage IPv6 sur une passerelle chez OVH (et probablement Free)</title>
		<link>http://imil.net/wp/2011/12/08/routage-ipv6-sur-une-passerelle-chez-ovh-et-probablement-free/</link>
		<comments>http://imil.net/wp/2011/12/08/routage-ipv6-sur-une-passerelle-chez-ovh-et-probablement-free/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 22:27:03 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[Free]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[NDP]]></category>
		<category><![CDATA[OVH]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=677</guid>
		<description><![CDATA[Free et OVH proposent tous deux une connectivité IPv6 depuis un certain temps. Les deux ont ceci de commun que sur le papier, ils fournissent un prefixe /64, il se trouve qu&#8217;OVH fournit en réalité un /56, mais cela a peu d&#8217;intérêt pour l&#8217;astuce qui va suivre.
Les routeurs des deux sociétés s&#8217;attendent donc à recevoir [...]]]></description>
			<content:encoded><![CDATA[<p>Free et OVH proposent tous deux une connectivité IPv6 depuis un certain temps. Les deux ont ceci de commun que <i>sur le papier</i>, ils fournissent un prefixe <i>/64</i>, il se trouve qu&#8217;OVH fournit en réalité un <i>/56</i>, mais cela a peu d&#8217;intérêt pour l&#8217;astuce qui va suivre.</p>
<p>Les routeurs des deux sociétés s&#8217;attendent donc à recevoir du flux IPv6 depuis un réseau &#8220;plat&#8221;, et ceci pose un réel soucis lorsque vous souhaitez distribuer une connectivité IPv6 à votre réseau possiblement NATté derrière votre passerelle. Plusieurs astuces sont disponibles depuis belle lurette, parmi elles <a href="http://ip6.fr/free-broute/">l&#8217;utilisation d&#8217;un bridge associé à une règle ebtables</a>, mais aussi et surtout <a href="http://linux-attitude.fr/post/proxy-ndp-ipv6">la mise en place du proxying NDP</a>. Je me suis basé sur cette dernière méthode, que j&#8217;ai adapté à mon éternel setup: <i>dom0 debian GNU/Linux et domU NetBSD</i>.</p>
<p>La procédure est la suivante:</p>
<p>On active en premier lieu le mode <i>proxy NDP</i> ainsi que le <i>forwarding IPv6</i> sur notre dom0:</p>
<pre>sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv6.conf.all.proxy_ndp=1</pre>
<p>Il conviendra evidemment de rendre cette configuration permanente en ajoutant ces valeurs dans le fichier <code>/etc/sysctl.conf</code><br />
Puis, sur notre interface de <i>bridging</i> Xen, nous ajoutons l&#8217;IPv6 dans le sous-réseau fourni par le fournisseur, cette adresse sera l&#8217;IP passerelle pour nos domUs:</p>
<pre># ifconfig xenbr0 inet6 add 2001:41e8:1:fe10::1/64</pre>
<p>Toute l&#8217;astuce consiste à <i>proxyiser</i> l&#8217;adresse MAC de l&#8217;interface <code>xenbr0</code> sur l&#8217;interface physique de la machine que voit réellement le fournisseur à l&#8217;aide de la commande <code>ip</code>:</p>
<pre>ip neigh add proxy 2001:41e8:1:fe10::1 dev eth0</pre>
<p>Il convient évidemment d&#8217;ajouter une route par défaut pour les adresses IPv6, cette dernière vous est fournie par votre fournisseur, par exemple pour OVH:</p>
<pre>route -A inet6 add default gw 2001:41e8:1:feff:ff:ff:ff:ff</pre>
<p>Nous attribuerons à notre domU l&#8217;IPv6 2001:41e8:1:fe10::2, ainsi, nous <i>proxyisons</i> également cette dernière de cette façon:</p>
<pre>ip neigh add proxy 2001:41e8:1:fe10::2 dev eth0</pre>
<p>Enfin, sur notre domU, nous ajoutons cette IP à l&#8217;interface raccordée au bridge ainsi qu&#8217;une route par défaut pointant vers l&#8217;IP de ce dernier:</p>
<pre>ifconfig xennet0 inet6 2001:41e8:1:fe10::2 prefixlen 64
route -n add -inet6 default 2001:41e8:1:fe10::1</pre>
<p>Et rendons ces paramètres permanents en ajoutant dans le fichier <code>/etc/ifconfig.xennet0</code>:</p>
<pre>inet6 2001:41e8:1:fe10::2 prefixlen 64
!route -n add -inet6 default 2001:41e8:1:fe10::1</pre>
<p>Finalement, nous inscrivons dans le fichier <code>/etc/network/interfaces</code> de notre dom0:</p>
<pre>iface xenbr0 inet6 static
	2001:41e8:1:fe10::1
	netmask 64
	gateway 2001:41e8:1:feff:ff:ff:ff:ff
	# NDP / ARP proxying for xenbr0
	up ip neigh add proxy 2001:41e8:1:fe10::1 dev eth0
	down ip neigh del proxy 2001:41e8:1:fe10::1 dev eth0
	# NDP / ARP proxying for domU 1
	up ip neigh add proxy 2001:41e8:1:fe10::2 dev eth0
	down ip neigh del proxy 2001:41e8:1:fe10::2 dev eth0</pre>
<p>Et le tour est joué.</p>
<p>Notez que je n&#8217;ai pas eu besoin, au contraire de ce qu&#8217;indique <a href="http://linux-attitude.fr/post/proxy-ndp-ipv6">la documentation sur laquelle je me suis appuyé</a>, de passer l&#8217;interface <code>eth0</code> en mode <code>promiscuous</code>, probablement parce que j&#8217;utilise un bridge monté sur une interface de type <code>dummy</code>, dissocié de l&#8217;interface physique, et que les routes IPv6 de mes domU utilisent explicitement l&#8217;IP montée sur ce dernier.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/12/08/routage-ipv6-sur-une-passerelle-chez-ovh-et-probablement-free/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comment chu trop un sage</title>
		<link>http://imil.net/wp/2011/12/04/comment-chu-trop-un-sage/</link>
		<comments>http://imil.net/wp/2011/12/04/comment-chu-trop-un-sage/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 20:22:57 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[IPv6]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=672</guid>
		<description><![CDATA[Voila un week end BIEN productif ! Comme je ne m&#8217;étais pas replongé dans IPv6 depuis la glorieuse époque isdnet, je me suis dit qu&#8217;il était grand temps de me rafraîchir la mémoire; j&#8217;ai donc été au bout de la certification IPv6 de HE qui va de la simple déclaration d&#8217;un tunnel v4/v6 à l&#8217;enregistrement [...]]]></description>
			<content:encoded><![CDATA[<p>Voila un week end BIEN productif ! Comme je ne m&#8217;étais pas replongé dans <a href="http://fr.wikipedia.org/wiki/IPv6">IPv6</a> depuis la glorieuse époque <a href="http://www.reseaux-telecoms.net/actualites/lire-cable-et-wireless-rachet-xe8-te-isdnet-5694.html">isdnet</a>, je me suis dit qu&#8217;il était grand temps de me rafraîchir la mémoire; j&#8217;ai donc été au bout de la <a href="http://ipv6.he.net/certification/">certification IPv6 de HE</a> qui va de la simple déclaration d&#8217;un tunnel v4/v6 à l&#8217;enregistrement d&#8217;une zone DNS IPv6 parfaitement fonctionnelle en passant par un MX et un desktop double pile aux petits oignons. Et ça fait du bien !<br />
Compte tenu de <a href="http://en.wikipedia.org/wiki/IPv4_address_exhaustion">la situation</a>, je ne saurais trop vous encourager à faire de même, et de ramener ce savoir dans vos boulots, c&#8217;est pas comme si le grand mouvement avait lieu demain, mais compte tenu de l&#8217;ampleur de la tâche, il est pas trop tot&#8230;<br />
Allez, jme la pête au laser: <a href="http://ipv6.he.net/certification/scoresheet.php?pass_name=imil"><img src="http://ipv6.he.net/certification/create_badge.php?pass_name=imil&#038;badge=3"/></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/12/04/comment-chu-trop-un-sage/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mmmmm les bons spaghettis</title>
		<link>http://imil.net/wp/2011/12/03/mmmmm-les-bons-spaghettis/</link>
		<comments>http://imil.net/wp/2011/12/03/mmmmm-les-bons-spaghettis/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 13:39:05 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[NetBSD]]></category>
		<category><![CDATA[pf]]></category>
		<category><![CDATA[route-to]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=668</guid>
		<description><![CDATA[Ça commence à sentir le vieux sac de lacets sur ma routing box.
Pour rappel, j&#8217;utilise un domU NetBSD hébergé quelque part pour différencier mon traffic sortant. Ce domU est controllé par un dom0 Debian Squeeze, et a ceci de particulier que sa route par défaut part vers la suède. Seuls quelques services répondent directement sur [...]]]></description>
			<content:encoded><![CDATA[<p>Ça commence à sentir le vieux sac de lacets sur ma <a href="http://imil.net/wp/2011/08/07/mais-tu-tu-tennuies-dans-la-vie-en-fait/">routing box</a>.<br />
Pour rappel, j&#8217;utilise un domU NetBSD hébergé <i>quelque part</i> pour différencier mon traffic sortant. Ce domU est controllé par un dom0 Debian Squeeze, et a ceci de particulier que sa route par défaut part vers la suède. Seuls quelques services répondent directement sur l&#8217;IP publique &#8220;réelle&#8221;, sur laquelle j&#8217;opère du <a href="http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO-6.html">SNAT et du DNAT</a>.</p>
<p>Tout ceci manquait cruellement d&#8217;un soupçon d&#8217;IPv6. Ainsi, après m&#8217;être frotté à SixXs et son système de <a href="http://www.sixxs.net/faq/account/?faq=credits">crédits</a> aussi ingénieux que pénible, j&#8217;ai finalement opté pour <a href="http://tunnelbroker.net">Hurricane Electric</a> qui a en plus le bon goût de posséder un <i>endpoint</i> à <a href="http://en.wikipedia.org/wiki/Coruscant">Paris</a>.</p>
<p>Si la configuration d&#8217;un tunnel v4/v6 se réalise le plus simplement du monde depuis plus de 10 ans via des <a href="http://www.netbsd.org/docs/network/ipv6/">tunnels gif</a>, l&#8217;opération n&#8217;est pas complètement triviale lorsque le endpoint se trouve être NATté et qu&#8217;en plus ce dernier utilise une route par défaut différente de l&#8217;IP publique officielle du dom0.</p>
<p>Ainsi, après avoir souscrit à un <i>endpoint</i> IPv6 chez <i>HE</i>, quelques opérations sont nécessaires au bon fonctionnement du routage. Nous considèrerons que l&#8217;ip du <i>endpoint gif IPv4</i> chez Hurricane est <code>1.2.3.4</code> et que notre IPv4 publique, sur le dom0 donc, est <code>5.6.7.8</code>.</p>
<p>La première chose à faire sur notre dom0 est de rediriger tout le traffic en provenance de HE vers notre domU, dont nous considèrerons que l&#8217;IPv4 privée est <code>192.168.0.1</code>.</p>
<pre># iptables -t nat -A PREROUTING -i eth0 -s 1.2.3.4 -j DNAT --to-destination 192.168.0.1</pre>
<p>Il faudra évidemment, si cela n&#8217;est pas déjà fait, appliquer du <i>SNAT</i> afin que votre domU puisse &#8220;sortir&#8221; et se présenter avec notre IPv4 publique au monde. Par exemple:</p>
<pre># iptables -t nat -A POSTROUTING -s 192.168.0.1/32 -o eth0 -j SNAT --to-source 5.6.7.8</pre>
<p>C&#8217;est l&#8217;unique configuration à effectuer sur le dom0. Jusqu&#8217;ici tout va bien.</p>
<p>Sur notre domU NetBSD, nous créons l&#8217;interface de <i>tunneling</i> comme ceci:</p>
<pre>
# ifconfig gif0 create
# ifconfig gif0 tunnel 192.168.0.1 1.2.3.4
# ifconfig gif0 inet6 2001:470:1e31:b2c::2 2001:470:1e31:b2c::1 prefixlen 128
</pre>
<p>Notez que c&#8217;est bien l&#8217;IPv4 <strong>privée</strong> que nous utilisons pour monter le tunnel <code>gif</code>, le <i>SNAT</i> du dom0 s&#8217;occuppera de transformer cette IP au vol.<br />
Cette seule configuration, compte tenu du <a href="http://imil.net/wp/2011/07/24/jouons-a-cache-cache/">routage particulier</a> de notre domU, ne suffira pas au bon fonctionnement du tunnel. Deux opérations sont nécessaires:</p>
<ul>
<li>Ajouter une route explicite vers le <i>endpoint HE</i></li>
<li>Forcer la sortie vers l&#8217;interface réelle du dom0 lorsqu&#8217;on essaye de joindre une adresse IPv6</li>
</ul>
<p>Execution:</p>
<pre># route add -host 1.2.3.4 192.168.0.254</pre>
<p>Ici, 192.168.0.254 est l&#8217;adresse passerelle du dom0.</p>
<pre># grep he_tunnel /etc/pf.conf-ovpn
he_tunnel="1.2.3.4/32"
pass out quick route-to ($real_if $gateway) from any to $he_tunnel
</pre>
<p><code>$real_if</code> représente l&#8217;interface <code>xennet0</code>, et <code>$gateway</code> l&#8217;adresse de notre passerelle coté dom0, à savoir <code>192.168.0.254</code>.<br />
Reste à appliquer une route par défaut pour les adresses IPv6:</p>
<pre>
route -n add -inet6 default 2001:470:1e31:b2c::1
</pre>
<p>Et nous y sommes. Enfin, il faut evidemment automatiser toutes ces manipulations afin de retrouver notre état fonctionnel à chaque <i>reboot</i>, cela est réalisé en créant le fichier <code>/etc/ifconfig.gif0</code> avec ce contenu:</p>
<pre>create
tunnel 192.168.0.1 1.2.3.4
inet6 2001:470:1e31:b2c::2 2001:470:1e31:b2c::1 prefixlen 128
!route add -host 1.2.3.4 192.168.0.254
!route -n add -inet6 default 2001:470:1e31:b2c::1
</pre>
<p>And voila, Danse petite tortue, danse !</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/12/03/mmmmm-les-bons-spaghettis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tu te CALMES le dom0</title>
		<link>http://imil.net/wp/2011/11/13/tu-te-calmes-le-dom0/</link>
		<comments>http://imil.net/wp/2011/11/13/tu-te-calmes-le-dom0/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 22:58:22 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[oops]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=666</guid>
		<description><![CDATA[Voici ce que crachait l&#8217;un de mes dom0 Debian/Squeeze sous Xen 4.0:

Nov 10 05:32:22 yavin kernel: [838380.839883] BUG: soft lockup - CPU#0 stuck for 61s! [swapper:0]
Nov 10 05:32:22 yavin kernel: [838380.839883] Modules linked in: dummy xt_tcpudp iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack xt_physdev iptable_filter ip_tables x_tables xen_evtchn xenfs bridge stp ext2 w83627hf w83793 hwmon_vid loop [...]]]></description>
			<content:encoded><![CDATA[<p>Voici ce que crachait l&#8217;un de mes <i>dom0</i> Debian/Squeeze sous Xen 4.0:</p>
<pre>
Nov 10 05:32:22 yavin kernel: [838380.839883] BUG: soft lockup - CPU#0 stuck for 61s! [swapper:0]
Nov 10 05:32:22 yavin kernel: [838380.839883] Modules linked in: dummy xt_tcpudp iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack xt_physdev iptable_filter ip_tables x_tables xen_evtchn xenfs bridge stp ext2 w83627hf w83793 hwmon_vid loop snd_pcm snd_timer snd radeon soundcore snd_page_alloc ttm drm_kms_helper parport_pc drm parport pcspkr evdev i2c_i801 i2c_algo_bit rng_core serio_raw i2c_core container shpchp pci_hotplug i3000_edac button processor edac_core acpi_processor ext3 jbd mbcache dm_mod raid1 md_mod sd_mod crc_t10dif ata_generic uhci_hcd ata_piix libata thermal floppy ehci_hcd scsi_mod thermal_sys usbcore nls_base e1000e [last unloaded: dummy]
</pre>
<p>Le tout saupoudré de quelques <i>stack traces</i> du meilleur effet:</p>
<pre>
Nov 11 19:52:20 yavin kernel: [976376.042974]  <irq>  [<ffffffff8119db40>] ? xen_swiotlb_unmap_page+0x0/0x5
Nov 11 19:52:20 yavin kernel: [976376.042974]  [<ffffffff8100e635>] ? xen_force_evtchn_callback+0x9/0xa
Nov 11 19:52:20 yavin kernel: [976376.042974]  [<ffffffff8100ecf2>] ? check_events+0x12/0x20
Nov 11 19:52:20 yavin kernel: [976376.042974]  [<ffffffff8119db40>] ? xen_swiotlb_unmap_page+0x0/0x5
Nov 11 19:52:20 yavin kernel: [976376.042974]  [<ffffffff8100ecdf>] ? xen_restore_fl_direct_end+0x0/0x1
Nov 11 19:52:20 yavin kernel: [976376.042974]  [<ffffffff810e8594>] ? kfree+0xc6/0xcb
Nov 11 19:52:20 yavin kernel: [976376.042974]  [<ffffffff81257bad>] ? skb_release_head_state+0xb4/0xc8
Nov 11 19:52:20 yavin kernel: [976376.042974]  [<ffffffff812578da>] ? __kfree_skb+0x9/0x7d
Nov 11 19:52:20 yavin kernel: [976376.042974]  [<ffffffffa000d2b4>] ? e1000_put_txbuf+0x5a/0x6c [e1000e]
Nov 11 19:52:20 yavin kernel: [976376.042974]  [<ffffffffa000d363>] ? e1000_clean_tx_irq+0x9d/0x21e [e1000e]
Nov 11 19:52:20 yavin kernel: [976376.042974]  [<ffffffffa001165f>] ? e1000_clean+0x5c/0x235 [e1000e]
</ffffffffa001165f></ffffffffa000d363></ffffffffa000d2b4></ffffffff812578da></ffffffff81257bad></ffffffff810e8594></ffffffff8100ecdf></ffffffff8119db40></ffffffff8100ecf2></ffffffff8100e635></ffffffff8119db40></irq></pre>
<p>Et j&#8217;en passe. Bref, ça pue.</p>
<p>Après m&#8217;être documenté quelque peu sur les erreurs constatées, deux actions semblent avoir stabilisé la situation. Premièrement, plusieurs <a href="http://kerneltrap.org/node/2678">posts</a> dans quelques forums indiquent que l&#8217;installation de <code>intel-microcode</code> et <code>microcode.ctl</code> permet de &#8220;réparer&#8221; certains bugs embarqués dans les processeurs Intel. Je m&#8217;execute:</p>
<pre>
# apt-get install intel-microcode microcode.ctl
</pre>
<p>Deuxièmement, comme le conseille la section <a href="http://wiki.xen.org/xenwiki/XenBestPractices">Best Practices</a> de Xen.org, il est de bon ton de:</p>
<ul>
<li>Fixer la quantité de mémoire du dom0 afin d&#8217;éviter le ballooning</li>
<li>Attacher un core (&#8220;cpu pinning&#8221;) au <i>dom0</i></li>
</ul>
<p>Ainsi, j&#8217;ajoute la ligne suivante au fichier <code>/etc/default/grub</code>:</p>
<pre>
GRUB_CMDLINE_XEN="dom0_mem=1024M dom0_max_vcpus=1 dom0_vcpus_pin"
</pre>
<p>Et précise dans <code>/etc/xen/xend-config.sxp</code>:</p>
<pre>
(dom0-min-mem 1024)
</pre>
<p>Ne disposant, sur cette machine, que de deux cores, je n&#8217;exclurai pas le CPU0 de la configuration des <i>domU</i>, mais fais confiance à l&#8217;hyperviseur pour équilibrer les ressources efficacement, sachant que désormais le CPU0 est &#8220;pinné&#8221; au <i>dom0</i>. Reste alors à régénérer la configuration de <code>grub</code>:</p>
<pre>
# update-grub
</pre>
<p>Et, malheureusement, de rebooter. Pas le choix ici.</p>
<p>Moyennant ces ajustements, mon <i>dom0</i> ne semble plus souffir, alors que ses <i>domUs</i> compilent à tour de bras.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/11/13/tu-te-calmes-le-dom0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SMTP AUTH sous NetBSD, vite fait</title>
		<link>http://imil.net/wp/2011/11/11/smtp-auth-sous-netbsd-vite-fait/</link>
		<comments>http://imil.net/wp/2011/11/11/smtp-auth-sous-netbsd-vite-fait/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 12:15:56 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[NetBSD]]></category>
		<category><![CDATA[SASL]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=659</guid>
		<description><![CDATA[Heureux possesseur d&#8217;un téléphone Android, j&#8217;utilise comme bon nombre de mes compères le logiciel K9-mail, probablement le meilleur MUA disponible sur cette plateforme, et qui a le bon goût d&#8217;être Libre, au contraire des centaines de milliers d&#8217;applis merdiques à 0.99€.
Jusqu&#8217;à présent, je n&#8217;utilisais K9 que pour lire mon mail, essentiellement dans le metro, &#8220;on [...]]]></description>
			<content:encoded><![CDATA[<p>Heureux possesseur d&#8217;un téléphone Android, j&#8217;utilise comme bon nombre de mes compères le logiciel <a href="https://github.com/k9mail/k-9/wiki/">K9-mail</a>, probablement le meilleur MUA disponible sur cette plateforme, et qui a le bon goût d&#8217;être Libre, au contraire des centaines de milliers d&#8217;applis merdiques à 0.99€.<br />
Jusqu&#8217;à présent, je n&#8217;utilisais K9 que pour lire mon mail, essentiellement dans le metro, &#8220;on the go&#8221;. Et puis finalement, je suis dit qu&#8217;il serait fort convivial de pouvoir utiliser mon serveur mail perso depuis un peu partout.<br />
Mon serveur mail, est-il besoin de le préciser, est un domU NetBSD sur lequel sont executés <a href="http://www.sendmail.com/sm/open_source/">Sendmail</a> et <a href="http://dovecot.org/">dovecot</a>.<br />
Il y a <a href="http://imil.net/wp/2005/09/18/chula-chupala/">un certain temps de cela</a>, j&#8217;avais documenté la méthode pour FreeBSD, et assez étrangement, jamais pour NetBSD. Je vais donc corriger le tir de ce pas.</p>
<p>La première chose à faire est de préciser que nous souhaitons bénéficier du support TLS et SASL dans sendmail. Ceci est réalisé dans le fichier <code>/etc/mk.conf</code>:</p>
<pre>
PKG_OPTIONS.sendmail=   tls sasl
</pre>
<p>Je ne sais pas si cela est lié au fait que la machine sur laquelle j&#8217;ai mené l&#8217;opération est &#8220;encore&#8221; en 5.0.2, mais la compilation de <i>cyrus-sasl</i> a misérablement échoué dans sa configuration par défaut. Ceci:</p>
<pre>
db_ndbm.c: In function '_sasldb_getdata':
db_ndbm.c:95: warning: passing argument 3 of 'utils->getcallback' from incompatible pointer type
</pre>
<p>M&#8217;a mis sur la voie, et j&#8217;ai donc ajouté dans mon <code>/etc/mk.conf</code> la ligne suivante:</p>
<pre>
SASL_DBTYPE=            berkeley
</pre>
<p>Un <code>make update clean</code> plus loin, tout était installé. Il est à noter que, par défaut, <i>cyrus-sasl</i> ne fournit aucun plugin, aussi, il sera nécessaire d&#8217;en installer au moins un, par exemple:</p>
<pre>
# cd /usr/pkgsrc/security/cy2-login
# make install clean
</pre>
<p>Qui nous permettra d&#8217;utiliser le couple <i>login/password</i> de notre système. Deux étapes sont nécessaires pour utiliser cette méthode, tout d&#8217;abord, il faut installer le démon <code>saslauthd</code>, en charge des échange d&#8217;authentification <i>plain text</i>:</p>
<pre>
# cd /usr/pkgsrc/security/cyrus-saslauthd/
# make install clean
# cp /usr/pkg/share/examples/rc.d/saslauthd /etc/rc.d
# echo "saslauthd=YES" >> /etc/rc.conf
# /etc/rc.d/saslauthd start
</pre>
<p>Puis de préciser au <i>plugin SASL</i> qu&#8217;il devra utiliser le démon <code>saslauthd</code> pour l&#8217;authentification en provenance de <i>sendmail</i>.</p>
<pre>
# cat /usr/pkg/lib/sasl2/Sendmail.conf
pwcheck_method:saslauthd
</pre>
<p>Nous ajoutons maintenant à <i>sendmail</i> la gestion de ces deux nouvelles fonctionnalités:</p>
<pre>
# cd /usr/pkg/share/sendmail/cf
# cat monserveur.mc
[...]
dnl ### SMTP AUTH
define(`confAUTH_MECHANISMS', `LOGIN')dnl
TRUST_AUTH_MECH(`LOGIN')dnl
dnl ### STARTTLS
dnl ### Ces sertificats sont en provenance de CACert.org. Il ne s'agit pas de certificats auto-signés
define(`confCACERT_PATH',`/etc/mail/certs/')dnl
define(`confCACERT', `/etc/mail/certs/cacert.crt')
define(`confSERVER_CERT',`/etc/mail/certs/certificat_serveur.pem')dnl
define(`confSERVER_KEY',`/etc/mail/certs/certificat_privatekey.pem')dnl
[...]
</pre>
<p>Puis nous compilons et installons la nouvelle configuration:</p>
<pre>
# make install-cf CF=monserveur
rm -f monserveur.cf
m4 ../m4/cf.m4 monserveur.mc > monserveur.cf || ( rm -f monserveur.cf &#038;&#038; exit 1 )
echo "### monserveur.mc ###" >>monserveur.cf
sed -e 's/^/# /' monserveur.mc >>monserveur.cf
chmod 444 monserveur.cf
/usr/bin/install -c -o root -g wheel -m 0444 monserveur.cf /etc/mail/sendmail.cf
/usr/bin/install -c -o root -g wheel -m 0444 monserveur.cf /etc/mail/submit.cf
</pre>
<p>À l&#8217;issue d&#8217;un <code>/etc/rc.d/sendmail restart</code>, nous devrions constater les choses suivantes:</p>
<pre>
# sendmail -d0.1 -bv root | grep SASL
                SASLv2 SCANF SOCKETMAP STARTTLS TCPWRAPPERS USERDB XDEBUG
</pre>
<p>Et également:</p>
<pre>
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220monserveur ESMTP Sendmail 8.14.5/8.14.5; Fri, 11 Nov 2011 13:13:17 +0100 (CET)
ehlo localhost
250-monserveur Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE 5000000
250-DSN
250-ETRN
250-AUTH LOGIN
250-STARTTLS
250-DELIVERBY
250 HELP
</pre>
<p>Ne reste alors qu&#8217;à configurer votre MUA pour qu&#8217;il utilise votre serveur SMTP sur le port 587 <b>en TLS</b> avec la méthode LOGIN, avec les <i>login/passwd</i> de l&#8217;utilisateur souhaité.</p>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/11/11/smtp-auth-sous-netbsd-vite-fait/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: imil.net @ 2012-02-04 17:33:19 by W3 Total Cache -->
