<?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>blog de mattieu</title>
	<atom:link href="http://blog.brimbelle.org/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.brimbelle.org</link>
	<description>... un blog inutile de plus !</description>
	<lastBuildDate>Sat, 19 May 2012 22:12:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>OpenBSD PF : &#8216;match&#8217; et priorité des ACK</title>
		<link>http://blog.brimbelle.org/index.php/2012/05/18/openbsd-pf-match-altq-et-priorite-des-ack/</link>
		<comments>http://blog.brimbelle.org/index.php/2012/05/18/openbsd-pf-match-altq-et-priorite-des-ack/#comments</comments>
		<pubDate>Fri, 18 May 2012 13:19:43 +0000</pubDate>
		<dc:creator>mattieu</dc:creator>
				<category><![CDATA[Geekage]]></category>
		<category><![CDATA[ack]]></category>
		<category><![CDATA[altq]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[openbsd]]></category>
		<category><![CDATA[pf]]></category>
		<category><![CDATA[pfstat]]></category>
		<category><![CDATA[priority]]></category>
		<category><![CDATA[priq]]></category>
		<category><![CDATA[queueing]]></category>
		<category><![CDATA[téléchargement]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://blog.brimbelle.org/?p=199</guid>
		<description><![CDATA[Du fait du fonctionnement du protocole TCP, il arrive très souvent que lorsque l&#8217;on télécharge et reçoit simultanément plusieurs fichiers, la vitesse soit fortement réduite, bien en deçà des capacités de notre connexion internet. Ce comportement est très amplifié par les connexions ADSL, par nature asymétriques. Je propose dans cet article une manière efficace et [...]]]></description>
			<content:encoded><![CDATA[<p><img title="ppuf100X91.gif" src="/wp-content/uploads/ppuf100X91.gif" alt="ppuf100X91.gif" width="100" height="91" align="left" border="0" hspace="10" />Du fait du fonctionnement du protocole TCP, il arrive très souvent que lorsque l&#8217;on télécharge et reçoit simultanément plusieurs fichiers, la vitesse soit fortement réduite, bien en deçà des capacités de notre connexion internet. Ce comportement est très amplifié par les connexions ADSL, par nature asymétriques.</p>
<p>Je propose dans cet article une manière efficace et rapide de corriger cela sur une passerelle <a title="OpenBSD website" href="http://www.openbsd.org/" target="_blank">OpenBSD</a> à l&#8217;aide de quelques règles <a title="FAQ de PF" href="http://www.openbsd.org/faq/pf/index.html" target="_blank">PF</a> en utilisant une première approche avec le <a title="FAQ de ALTQ" href="http://www.openbsd.org/faq/pf/queueing.html" target="_blank">moteur de priorisation ALTQ</a> et la nouvelle souplesse des règles <em>match</em> depuis la version 4.6, puis en utilisant le nouveau moteur de priorisation intégré disponible à partir de la version 5.1.</p>
<p><span id="more-199"></span></p>
<p style="padding-left: 30px;"><strong>1. Détail du problème</strong></p>
<p>Lorsque l&#8217;on télécharge un fichier en utilisant le protocole TCP, les données que nous recevons sont contenues dans des paquets TCP ayant des données &laquo;&nbsp;utiles&nbsp;&raquo;. Selon le fonctionnement du protocole TCP, nous devons acquitter au fur et à mesure les données reçues, en envoyant au serveur des paquets TCP vides, mais acquittant de la réception des données (ces paquets contiennent le drapeau ACK). Lorsque nous envoyons un fichier sur internet, c&#8217;est le mécanisme inverse qui se produit : la machine recevant notre fichier nous envoie des paquets d&#8217;acquittement. Pour plus de détails, lire la <a title="TRANSMISSION CONTROL PROTOCOL" href="https://www.ietf.org/rfc/rfc793.txt" target="_blank">RFC 793</a>.</p>
<p>Si à un moment donné, les paquets d&#8217;acquittement sont ralentis ou perdus, alors le trafic est ralenti puisque la machine envoyant les données, doit attendre voir ré-émettre les données : car les paquets auront été acquittés tardivement ou pas du tout. Avec les connexions ADSL, fortement asymétriques, que nous avons aujourd&#8217;hui, on voit aisément le problème qui peut survenir : si nous lançons sur notre connexion internet, plusieurs envois/réceptions de fichiers simultanés, il est facile de saturer notre débit d&#8217;émission. Ce qui a pour effet de ralentir l&#8217;émission des paquets d&#8217;acquittement pour les fichiers que l&#8217;on télécharge, et donc de ralentir la vitesse de téléchargement de nos fichiers.</p>
<p style="padding-left: 30px;"><strong>2. Solution A</strong></p>
<p>Le filtre de paquets PF d&#8217;OpenBSD possède depuis longtemps un moteur très souple, ALTQ, permettant de prioriser les flux suivant différents algorithmes et paramètres. Sa configuration est détaillée dans la page de manuel <a title="PF.CONF(5)" href="http://www.openbsd.org/cgi-bin/man.cgi?query=pf.conf&amp;apropos=0&amp;sektion=0&amp;manpath=OpenBSD+Current&amp;arch=i386&amp;format=html" target="_blank">pf.conf(5)</a>. Nous ne détaillerons pas sa syntaxe, juste les quelques règles qui nous intéressent. Voyons tout d&#8217;abord comment créer une queue permettant de prioriser les paquets. Ajoutons cette section au fichier /etc/pf.conf :<br />
<code><br />
ext_if = vr3<br />
altq on $ext_if priq bandwidth 920Kb queue { q_pri, q_def }<br />
queue q_pri priority 7<br />
queue q_def priority 1 priq(default)</code></p>
<p>Ici nous avons créé une macro <em>ext_if</em>, nommant notre interface externe <em>vr3</em> sur laquelle nous allons prioriser nos paquets. Puis, nous créons une queue mère sur l&#8217;interface <em>$ext_if</em> en utilisant l&#8217;algorithme <em>priq</em> (simple algorithme de priorité). Cette queue mère se voit affecter 820Kb et deux queues filles : <em>q_pri</em> ayant une priorité élevée de 7 et <em>q_def</em> la queue par défaut ayant une priorité plus basse de 1.</p>
<p>L&#8217;algorithme priq est le plus simple présent dans ALTQ : on affecte une priorité différente aux sous-queues (de 0 à 15), les paquets de la queue ayant la priorité la plus élevée sont traités en premier.</p>
<p>Dans la déclaration de la queue mère, j&#8217;ai réservé 920Kb de bande passante. Ma connexion internet synchronise à environ 6Mb en réception et 1Mb en émission. Avec l&#8217;encapsulation IPoA chez Free, j&#8217;ai un débit effectif d&#8217;environ 920Kb. Je vous conseille de faire quelques essais : si vous ne réservez pas assez de bande passante, la priorisation sera inefficace, et si vous réservez trop de débit, vous allez brider inutilement votre connexion.</p>
<p>Une fois les queues déclarées, passons maintenant à leur affectation dans nos règles de filtrage. J&#8217;écrivais précédemment que depuis OpenBSD 4.6, une nouvelle façon de filtrer est apparue avec le mot clé <em>match</em>. En effet, depuis cette version, de profonds changements structurels ont été apportés à PF, résultant en une bien meilleure souplesse d&#8217;écriture. Le mot clé &#8216;match&#8217; permet ainsi de &laquo;&nbsp;matcher&nbsp;&raquo; certains flux pour modifier leur filtrage à la volée, sans arrêter leur évaluation dans le fichier de règles : c&#8217;est à dire sans modifier l&#8217;action finale <em>block</em> ou <em>pass</em>.</p>
<p>Alors que précédemment, l&#8217;affectation des queues ALTQ aux flux se faisait à chaque règle de filtrage, il est maintenant possible d&#8217;affecter nos queues par une simple règle <em>match</em> au début des règles de filtrage :<br />
<code>match on $ext_if inet proto tcp queue (q_def, q_pri)</code></p>
<p>Ainsi, toutes les connexions TCP sur l&#8217;interface externe <em>$ext_if</em> se verront affecter nos deux queues : <em>q_def</em> et <em>q_pri</em>. L&#8217;évaluation des règles continuera ensuite normalement.</p>
<p>Notons que l&#8217;ordre dans lequel nous avons mis les deux queues est indispensable. La première queue précisée dans la règle <em>match</em> est la queue par défaut : <em>q_def</em>. Si nous précisons une deuxième queue (c&#8217;est ce que nous avons fait), <em>q_pri</em>, alors PF lui affecte automatiquement les paquets ayant l&#8217;option IP ToS positionnée à &laquo;&nbsp;nodelay&nbsp;&raquo; ainsi que les paquets TCP sans charge utile ayant le drapeau ACK. C&#8217;est exactement le comportement que nous recherchons : nos acquittements TCP seront ainsi priorisés par rapport aux autres paquets et nous diminuerons les risques de ralentissement.</p>
<p style="padding-left: 30px;"><strong>3. Solution B</strong></p>
<p>La solution précédente relativement simple, peut être encore beaucoup plus simplifiée, depuis OpenBSD 5.1. En effet, de gros travaux sont en cours pour intégrer totalement à PF les fonctionnalités de ALTQ. Aujourd&#8217;hui, ALTQ peut être très pénalisant en terme de performance et sa complexité rend difficile son évolution.</p>
<p>Ainsi, le mot-clé <em>prio</em> est apparu, permettant à chaque règle d&#8217;affecter une priorité au trafic visé. Ce nouveau système de priorisation peut être combiné avec les règles <em>match</em>. Ainsi, les quelques lignes précédentes avec ALTQ peuvent être simplifiées en :<br />
<code>match on $ext_if inet proto tcp prio (2, 5)</code></p>
<p>Ici, plus besoin de déclaration de queues et d&#8217;algorithme. Nous affectons une priorité 2 au trafic normal et une priorité 5 aux paquets ayant un champ IP TOS <em>nodelay</em>, ou les paquets TCP ACK sans donnée utile.</p>
<p>A noter qu&#8217;en utilisant ce nouveau mécanisme de priorisation, nous avons à notre disponibilité 8 queues (priorité de 0 à 7. De plus, certains trafics sont automatiquement priorisés :</p>
<ul>
<li>Les priorités des VLAN sont héritées,</li>
<li>Le trafic CARP est priorisé.</li>
</ul>
<p><em><strong>Attention :</strong> la syntaxe est sujette à évolution, puisque l&#8217;intégration des autres parties de ALTQ est en cours.</em></p>
<p style="padding-left: 30px;"><strong>4. Illustration</strong></p>
<p>Voici maintenant en pratique le résultat. Le premier graphe correspond à notre politique de filtrage sans ALTQ, le second avec ALTQ.</p>
<p><img title="vr3_ackpri_off.jpg" src="/wp-content/uploads/altq_ackpri/vr3_ackpri_off.jpg" alt="vr3_ackpri_off.jpg" width="740" height="300" align="left" border="0" /></p>
<p>Dans ce premier graphe, les trois premières minutes consistent à télécharger quelques fichiers. Ensuite, je lance une émission de fichier simultanée aux téléchargements durant les quatre minutes suivantes. On peut voir que non seulement la réception de mes fichiers (en vert) est perturbée par rapport à la première partie du graphe, mais également l&#8217;émission de mon fichier qui n&#8217;utilise pas les 1Mb de bande passante disponible.</p>
<p><img title="vr3_ackpri_on.jpg" src="/wp-content/uploads/altq_ackpri/vr3_ackpri_on.jpg" alt="vr3_ackpri_on.jpg" width="740" height="300" align="left" border="0" /></p>
<p>Dans ce second graphe, les deux premières minutes correspondent à plusieurs téléchargements de fichiers. Puis, je lance une émission de fichier durant quatre minutes. On peut voir que ALTQ fait correctement son travail : la réception de mes fichiers n&#8217;est absolument pas perturbée par l&#8217;émission de mon autre fichier qui se fait en utilisant au maximum les 1Mb de capacité d&#8217;émission de mon lien internet.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brimbelle.org/index.php/2012/05/18/openbsd-pf-match-altq-et-priorite-des-ack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passerelle VPN L2TP/IPsec pour smartphone avec OpenBSD</title>
		<link>http://blog.brimbelle.org/index.php/2012/02/15/passerelle-vpn-l2tpipsec-pour-smartphone-avec-openbsd/</link>
		<comments>http://blog.brimbelle.org/index.php/2012/02/15/passerelle-vpn-l2tpipsec-pour-smartphone-avec-openbsd/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 22:43:18 +0000</pubDate>
		<dc:creator>mattieu</dc:creator>
				<category><![CDATA[Geekage]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipsec]]></category>
		<category><![CDATA[l2tp]]></category>
		<category><![CDATA[npppd]]></category>
		<category><![CDATA[openbsd]]></category>
		<category><![CDATA[pf]]></category>
		<category><![CDATA[psk]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://blog.brimbelle.org/?p=133</guid>
		<description><![CDATA[Dans cet article, je vais présenter la marche à suivre pour configurer une passerelle VPN utilisant les protocoles L2TP/IPsec sur un système OpenBSD (en version 5.1). Cette passerelle vous permettra de vous y connecter à l&#8217;aide de votre smartphone Android (testé avec Android 4.0 ICS) ou iPhone, puisque ces terminaux supportent maintenant nativement ces types [...]]]></description>
			<content:encoded><![CDATA[<p><a onclick="ps_imagemanager_popup(this.href,'logo.png','400','400');return false" onfocus="this.blur()" href="/wp-content/uploads/VPN_L2TP_IPsec/logo.png" rel="lightbox[133]"><img title="logo.png" src="/wp-content/uploads/VPN_L2TP_IPsec/.thumbs/.logo.png" alt="logo.png" width="96" height="96" align="left" border="0" hspace="10" /></a>Dans cet article, je vais présenter la marche à suivre pour configurer une passerelle VPN utilisant les protocoles L2TP/IPsec sur un système OpenBSD (en version 5.1). Cette passerelle vous permettra de vous y connecter à l&#8217;aide de votre smartphone Android (testé avec Android 4.0 ICS) ou iPhone, puisque ces terminaux supportent maintenant nativement ces types de VPN.</p>
<p>Le protocole L2TP (Layer 2 Tunneling Protocol) est un protocole de tunneling à la popularité grandissante, car supporté nativement par de nombreux OS : Windows, MacOS X, Linux, etc. mais également par les plate-formes mobiles populaires que sont Android et iOS. De plus, L2TP permet aisément de réaliser des VPN au dessus d&#8217;infrastructures existantes puisqu&#8217;il est transporté dans des paquets IP/UDP sur le port 1701. Dans la suite du document, nous allons utiliser le nouveau <em>daemon</em> <a title="Sources de npppd(8)" href="http://www.openbsd.org/cgi-bin/cvsweb/src/usr.sbin/npppd/" target="_blank">npppd(8)</a>, inclus dans le système de base d&#8217;OpenBSD.</p>
<p>Afin de rendre le VPN plus sûr, la méthode est de chiffrer le trafic L2TP dans un tunnel IPsec. Ici rien de bien nouveau, nous nous reposerons sur l&#8217;extrême simplicité de configuration offerte par OpenBSD.</p>
<p><span id="more-133"></span>Un petit HOWTO est disponible avec les sources du &#8216;daemon&#8217; npppd(8) que nous allons utiliser à <a title="HOWTO fourni avec les sources de npppd(8)" href="http://www.openbsd.org/cgi-bin/cvsweb/~checkout~/src/usr.sbin/npppd/HOWTO_PIPEX_NPPPD.txt?rev=1.8;content-type=text%2Fplain" target="_blank">cette adresse</a>. Seulement, cet exemple de configuration ne s&#8217;intéresse qu&#8217;au cas générique et ne peut pas être repris tel quel dans certains scénarios.</p>
<p style="padding-left: 30px;"><strong>1. Eléments d&#8217;architecture</strong></p>
<p>Mon opérateur internet est Free. J&#8217;utilise une Freebox Revolution (v6) en mode routeur afin d&#8217;utiliser toutes les fonctionnalités multimedia qu&#8217;elle offre. Il faut donc noter que ma passerelle VPN possède une adresse IPv4 privée (192.168.0.1) sur le réseau interne de ma Freebox. Il ne faut donc pas oublier de configurer la Freebox pour rediriger le trafic IPsec et L2TP (chiffré avec IPsec) sur la passerelle VPN, en utilisant une IP &laquo;&nbsp;DMZ&nbsp;&raquo; dans l&#8217;interface de configuration de la Freebox.</p>
<p><em><strong>Note :</strong> Les simples redirections de ports ne fonctionnent pas, car il faut non seulement rediriger le trafic UDP sur les ports 500 et 4500 (pour respectivement les protocoles ISAKMP et NAT-Traversal concernant la gestion de clés) mais également le trafic ESP (Encap Security Payload), qui a le numéro de protocole IP n°50 ; et qui concerne nos données utiles chiffrées.</em></p>
<p>Ensuite, mon opérateur mobile est également Free. Free ne pouvant techniquement pas assigner une adresse IP publique à chaque équipement mobile sur son réseau, lorsque vous utilisez des connexions pour de la donnée, vous vous retrouvez avec une IP en adressage privé (10.X.X.X).</p>
<p>Ces points sont à prendre en compte, surtout concernant la configuration IPsec qui devient légèrement plus complexe sur notre passerelle.</p>
<p style="padding-left: 30px;"><strong>2. Configuration de la passerelle VPN</strong></p>
<p>L&#8217;étape d&#8217;installation de l&#8217;OS OpenBSD ne sera pas détaillée puisque c&#8217;est une installation tout ce qu&#8217;il y a de plus standard. Deux points sont cependant à noter.</p>
<p>D&#8217;une part, vous aurez besoin d&#8217;utiliser au minimum OpenBSD 5.1 dont la date de sortie est comme d&#8217;habitude (cycles de développement de 6 mois) fixée au 1er mai 2012. A l&#8217;heure où je rédige cet article, OpenBSD 5.1 est seulement taggé dans le CVS, vous pouvez donc utiliser un <a title="Snapshots OpenBSD" href="http://ftp.fr.openbsd.org/pub/OpenBSD/snapshots/">snapshot</a> de -current.</p>
<p>D&#8217;autre part, vous aurez besoin d&#8217;installer les sources de l&#8217;OS (src, pas xenocara ni les ports). J&#8217;utilise pour ma part une machine à base de <a title="Carte Soekris net5501" href="http://soekris.com/products/net5501.html" target="_blank">Soekris net5501</a> avec le système installé sur une carte flash. Ne pouvant pas vraiment installer les sources et compiler les outils nécessaires, du fait de l&#8217;utilisation d&#8217;une carte flash, je monte les répertoires (/usr/obj et /usr/src) via un partage NFS exporté par une autre machine.</p>
<p>Je vous invite à lire la <a title="FAQ d'OpenBSD" href="http://www.openbsd.org/faq/fr/" target="_blank">FAQ d&#8217;OpenBSD</a> qui est un modèle du genre pour de plus amples informations sur l&#8217;installation de l&#8217;OS.</p>
<p>Une fois l&#8217;OS OpenBSD 5.1 installé, ainsi que ses sources, il faut modifier le fichier /etc/sysctl.conf pour autoriser certaines fonctionnalités au niveau du noyau d&#8217;OpenBSD. Pour cela, il faut s&#8217;assurer que ces lignes soient dé-commentées :<br />
<code>net.inet.ip.forwarding=1 # transfert IP entre interfaces<br />
net.inet.gre.allow=1 # autorise le protocole de tunneling GRE<br />
net.pipex.enable=1 # accélérateur de transfert IP pour PPP</code></p>
<p style="padding-left: 30px;"><strong>4. Installation et configuration de npppd(8)</strong></p>
<p>Ensuite, il faut compiler le <em>daemon</em> npppd(8). Celui-ci est déjà stable ; il n&#8217;est cependant pas compilé par défaut, suite à un manque de documentation mais également à une configuration qui doit être ré-écrite, afin de coller à la syntaxe des autres <em>daemons</em> d&#8217;OpenBSD. Pour compiler npppd(8) :<br />
<code>$ cd /usr/src/usr.sbin/npppd<br />
$ make<br />
$ sudo make install</code></p>
<p>Pour compiler npppdctl(8), son outil de contrôle :<br />
<code>$ cd /usr/src/usr.sbin/npppctl<br />
$ make<br />
$ sudo make install</code></p>
<p>Créer le fichier npppd.conf (issu du HOWTO évoqué précédemment) :<br />
<code>interface_list: tun0<br />
interface.tun0.ip4addr: 10.0.0.1<br />
pool.dyna_pool: 10.0.0.0/25<br />
pool.pool: 10.0.0.128/25<br />
auth.local.realm_list: local<br />
auth.local.realm.acctlist: /etc/npppd/npppd-users.csv<br />
realm.local.concentrate: tun0<br />
lcp.mru: 1400<br />
auth.method: mschapv2 chap<br />
pptpd.enabled: true<br />
pptpd.ip4_allow: 0.0.0.0/0<br />
l2tpd.enabled: true<br />
l2tpd.ip4_allow: 0.0.0.0/0<br />
l2tpd.require_ipsec: false</code></p>
<p>Adapter ce fichier à votre convenance, en particulier les paramètres :</p>
<ul>
<li><code>interface_list</code> : l&#8217;interface tun(4) à utiliser, &laquo;&nbsp;tun0&#8243; si aucun autre tunnel n&#8217;existe.</li>
<li><code>interface.tunX.ip4addr</code> : l&#8217;adresse de l&#8217;interface tun(4).</li>
<li><code>pool.dyna_pool</code> : la plage dynamique des IP attribuées à vos utilisateurs.</li>
<li><code>pool.pool</code> : la plage utilisée pour les utilisateurs disposant d&#8217;adresses statiques (précisé plus bas).</li>
<li><code>realm.local.concentrate</code> : doit correspondre à l&#8217;interface tun(4) configurée précédemment.</li>
</ul>
<p>Créer le fichier npppd-users.csv (issu du HOWTO évoqué précédemment) :<br />
<code>Username,Passwd,IP-Address,IP-Netmask,Descr,Calling-Id<br />
user1,user1's secret,10.0.0.129,,memo for user1</code></p>
<p>Ce fichier contiendra les noms d&#8217;utilisateurs, leur mot de passe, l&#8217;adresse IP statique qui leur est affectée, ainsi que des informations optionnelles.</p>
<p>Une fois ces fichiers créés et ajustés à vos besoins, placez-les à l&#8217;endroit approprié :<br />
<code>$ sudo mkdir -m 0755 /etc/npppd<br />
$ sudo cp npppd.conf /etc/npppd/<br />
$ sudo cp npppd-users.csv /etc/npppd/</code></p>
<p>Ensuite, nous pouvons démarrer npppd(8) :<br />
<code>$ sudo npppd -D</code></p>
<p style="padding-left: 30px;"><strong>5. Confiruration IPsec</strong></p>
<p>Sous OpenBSD, la configuration IPsec est extrêmement simple et se trouve centralisée dans le fichier /etc/ipsec.conf. Éditer ce fichier, pour y ajouter la configuration IPsec :<br />
<code>ike dynamic esp transport \<br />
proto udp from AA.AA.AA.AA (192.168.0.1) to any port 1701 \<br />
aggressive auth "hmac-sha" enc "3des" group modp1024 \<br />
quick auth "hmac-sha" enc "aes" \<br />
srcid "server@my.domain" dstid "client@my.domain" \<br />
psk "myandroidpsk"</code></p>
<p>Quelques précisions :</p>
<ul>
<li><code>dynamic</code> : aide les configurations dans lequel le client a une IP qui change constemment.</li>
<li><code>AA.AA.AA.AA</code> : adresse IP publique de la connexion internet de notre passerelle VPN.</li>
<li><code>192.168.0.1</code> : adresse IP privée de notre passerelle VPN.</li>
<li><code>aggressive</code> : ce mode est nécessaire lors de l&#8217;utilisation d&#8217;ID spécifiques pour la connexion.</li>
<li><code>srcid "server@my.domain"</code> : ID IPsec du serveur, utilisé comme identité de la passerelle.</li>
<li><code>dstid "client@my.domain"</code> : ID IPsec du client, à configurer dans le client VPN du smartphone.</li>
</ul>
<p><em><strong>Note :</strong> ici, nous utilisons des ID spécifiques (srcid et dstid) car par défaut, les ID utilisés sont les IP des machines : c&#8217;est-à-dire les IP privées du smartphone et de la passerelle sur leur réseau respectif. Or, nos deux connexions à internet (celle du smartphone et celle de la passerelle VPN) sont derrière du NAT. Donc les ID utilisés par défaut ne sont pas reconnus par la machine distante, puisque la machine locale ne voit que l&#8217;IP publique de la machine distante.</em></p>
<p>Une fois la configuration IPsec effectuée, il faut :</p>
<ul>
<li>Démarrer l&#8217;interface virtuelle enc(4), sur laquelle le trafic IPsec déchiffré va circuler,</li>
<li>Démarrer le &#8216;daemon&#8217; isakmpd(8) qui a pour but d&#8217;assurer la gestion des clés IPsec avec le protocole IKEv1,</li>
<li>Charger la configuration IPsec.</li>
</ul>
<p>Cela se traduit par les commandes :<br />
<code>$ sudo ifconfig enc0 up<br />
$ sudo isakmpd -Kv<br />
$ sudo ipsecctl -f /etc/ipsec.conf</code></p>
<p style="padding-left: 30px;"><strong>6. Le filtrage avec PF</strong></p>
<p>Je ne vais pas détailler l&#8217;utilisation de Packet Filter (PF), le filtre de paquets d&#8217;OpenBSD ; pour celà vous pouvez vous référer à l&#8217;excellente <a title="FAQ de PF" href="http://www.openbsd.org/faq/pf/fr/" target="_blank">FAQ de PF</a>.</p>
<p>Je vais par contre détailler les points importants concernant notre utilisation dans le cadre de cette passerelle VPN L2TP/IPsec.</p>
<p>PF est maintenant activé par défaut dans OpenBSD, il est seulement nécessaire d&#8217;éditer sa configuration qui se fait dans le fichier /etc/pf.conf.</p>
<p>Tout d&#8217;abord, commençons par établir quelques variables utiles :<br />
<code># Interface réseau physique<br />
$ext_if = vr3<br />
# Interface réseau virtuelle tun(4)<br />
$tun_if = tun0<br />
# Plage des clients VPN<br />
$vpn_net = "10.0.0.0/24"<br />
# Ports pour IPsec en UDP<br />
$serv_udp = "{ isakmp, ipsec-nat-t }"<br />
# Ports pour IPsec en TCP ainsi que SSH pour le management<br />
$serv_tcp = "{ ssh, ipsec-nat-t }"</code></p>
<p>Notre règle par défaut bloque tout en entrée, mais pas en sortie ; par défaut avec PF, ce qui n&#8217;est pas bloqué est autorisé :<br />
<code>block in all</code></p>
<p>Ensuite, définissons une règle de NAT pour que les clients VPN qui arrivent sur l&#8217;interface virtuelle, puissent sortir sur l&#8217;interface physique, et donc les réseaux locaux de notre passerelle (et internet).<br />
<code>match out on $ext_if inet from $vpn_net nat-to $ext_if</code></p>
<p>Passons maintenant au filtrage à proprement dit. Commençons par autoriser le trafic IPsec sur notre interface physique :</p>
<ul>
<li>Le protocole ESP (le trafic L2TP chiffré avec IPsec),</li>
<li>Les protocoles IKEv1 et NAT-Traversal pour les échanges de clés</li>
</ul>
<p>Cela se traduit par les règles :<br />
<code>pass in on $ext_if proto esp to $ext_if<br />
pass in on $ext_if proto udp to $ext_if port $serv_udp<br />
pass in on $ext_if proto tcp to $ext_if port $serv_tcp</code></p>
<p>Puis, autorisons le trafic déchiffré, c&#8217;est à dire le trafic L2TP venant du smartphone vers notre passerelle, à passer sur l&#8217;interface enc(4) :<br />
<code>pass in on enc0 proto udp to $ext_if port l2tp keep state (if-bound)</code></p>
<p><em><strong>Note :</strong> le mot clé &#8216;keep state (if-bound)&#8217; est nécessaire sur une interface enc(4). Il permet de lier l&#8217;état créé dans PF à l&#8217;interface enc0 (par défaut, les états sont flottants), évitant ainsi d&#8217;avoir des flux non chiffrés sur d&#8217;autres interfaces.</em></p>
<p>Pour finir, autorisons le trafic utile de notre VPN : le trafic encapsulé dans le VPN, à destination de notre réseau local, d&#8217;internet, etc. à entrer sur l&#8217;interface virtuelle tun0. Celui-ci sera ensuite automatiquement routé vers la bonne interface :<br />
<code>pass in on $tun_if inet proto { icmp, tcp, udp } from $vpn_net</code></p>
<p style="padding-left: 30px;"><strong>7. Rendre permanente la configuration</strong></p>
<p>Pour configurer l&#8217;interface enc0 à chaque démarrage :<br />
<code>$ sudo sh -c "echo up &gt; /etc/hostname.enc0"<br />
$ sudo chmod 640 /etc/hostname.enc0</code></p>
<p>Pour démarrer isakmpd(8) au démarrage, ajouter ces lignes au fichier /etc/rc.conf.local :<br />
<code>ipsec=YES<br />
isakmpd_flags="-K"</code></p>
<p>Pour démarrer npppd(8) automatiquement, ajouter ces lignes au fichier /etc/rc.local :<br />
<code>echo -n 'starting site daemons:'<br />
if [ -x /usr/sbin/npppd ] ; then<br />
/usr/sbin/npppd -D<br />
echo -n ' npppd'<br />
fi<br />
echo '.'</code></p>
<p style="padding-left: 30px;"><strong>8. Configuration du client</strong></p>
<p>La configuration d&#8217;un VPN sur un téléphone Android est très simple. Pour cela, allons dans les paramètres, puis les paramètres sans fil, puis dans la section VPN :</p>
<p><a onclick="ps_imagemanager_popup(this.href,'01_parametres.png','720','1280');return false" onfocus="this.blur()" href="/wp-content/uploads/VPN_L2TP_IPsec/01_parametres.png" rel="lightbox[133]"><img title="01_parametres.png" src="/wp-content/uploads/VPN_L2TP_IPsec/.thumbs/.01_parametres.png" alt="01_parametres.png" width="96" height="171" border="0" hspace="10" /></a><a onclick="ps_imagemanager_popup(this.href,'02_sans_fil.png','720','1280');return false" onfocus="this.blur()" href="/wp-content/uploads/VPN_L2TP_IPsec/02_sans_fil.png" rel="lightbox[133]"><img title="02_sans_fil.png" src="/wp-content/uploads/VPN_L2TP_IPsec/.thumbs/.02_sans_fil.png" alt="02_sans_fil.png" width="96" height="171" border="0" hspace="10" /></a><a onclick="ps_imagemanager_popup(this.href,'03_ajout_VPN.png','720','1280');return false" onfocus="this.blur()" href="/wp-content/uploads/VPN_L2TP_IPsec/03_ajout_VPN.png" rel="lightbox[133]"><img title="03_ajout_VPN.png" src="/wp-content/uploads/VPN_L2TP_IPsec/.thumbs/.03_ajout_VPN.png" alt="03_ajout_VPN.png" width="96" height="171" border="0" hspace="10" /></a></p>
<p>Ajoutons maintenant un nouveau VPN en sélectionnant le type &laquo;&nbsp;L2TP/IPsec PSK&nbsp;&raquo;, puis remplissons les données que nous avons indiquées précédemment :</p>
<p><a onclick="ps_imagemanager_popup(this.href,'04_l2tpipsec_psk.png','720','1280');return false" onfocus="this.blur()" href="/wp-content/uploads/VPN_L2TP_IPsec/04_l2tpipsec_psk.png" rel="lightbox[133]"><img title="04_l2tpipsec_psk.png" src="/wp-content/uploads/VPN_L2TP_IPsec/.thumbs/.04_l2tpipsec_psk.png" alt="04_l2tpipsec_psk.png" width="96" height="171" border="0" hspace="10" /></a></p>
<ul>
<li>Nom : peut être ce que vous souhaitez,</li>
<li>Type : doit être &laquo;&nbsp;L2TP/IPsec PSK&nbsp;&raquo;,</li>
<li>Adresse du serveur : l&#8217;adresse IP publique de votre connexion internet ou alors votre nom de domaine si vous en possédez un,</li>
<li>Secret L2TP : laissez vide,</li>
<li>Identifiant IPsec : doit correspondre à ce que vous avez indiqué pour le paramètre &laquo;&nbsp;dstid&nbsp;&raquo; dans le fichier /etc/ipsec.conf de la passerelle,</li>
<li>Clé pré-partagée IPsec : doit correspondre à ce que vous avez indiqué pour le paramètre &laquo;&nbsp;psk&nbsp;&raquo; dans le fichier /etc/ipsec.conf de la passerelle.</li>
</ul>
<p>Une fois les paramètres renseignés, démarrons la connexion, en fournissant le nom d&#8217;utilisateur et le mot de passe indiqués dans le fichier npppd-users.conf :</p>
<p><a onclick="ps_imagemanager_popup(this.href,'05_connexion.png','720','1280');return false" onfocus="this.blur()" href="/wp-content/uploads/VPN_L2TP_IPsec/05_connexion.png" rel="lightbox[133]"><img title="05_connexion.png" src="/wp-content/uploads/VPN_L2TP_IPsec/.thumbs/.05_connexion.png" alt="05_connexion.png" width="96" height="171" border="0" /></a></p>
<p>La connexion VPN est démarrée une fois que la petite clé est présente dans la barre de notification en haut à gauche :</p>
<p><a onclick="ps_imagemanager_popup(this.href,'06_connecte.png','720','1280');return false" onfocus="this.blur()" href="/wp-content/uploads/VPN_L2TP_IPsec/06_connecte.png" rel="lightbox[133]"><img title="06_connecte.png" src="/wp-content/uploads/VPN_L2TP_IPsec/.thumbs/.06_connecte.png" alt="06_connecte.png" width="96" height="171" border="0" /></a></p>
<p style="padding-left: 30px;"><strong>9. Gestion de la passerelle</strong></p>
<p>Pour avoir une vision de ce qu&#8217;il se passe en temps réel sur notre passerelle VPN, deux commandes sont très utiles.</p>
<p>Tout d&#8217;abord, pour consulter les sessions IPsec en cours et en particulier la Security Association Database (SAD) :<br />
<code>$ sudo ipsecctl -sa<br />
FLOWS:<br />
flow esp in proto udp from BB.BB.BB.BB to 192.168.0.1 peer BB.BB.BB.BB srcid server@my.domain dstid client@my.domain type use<br />
flow esp out proto udp from 192.168.0.1 to BB.BB.BB.BB peer BB.BB.BB.BB srcid server@my.domain dstid client@my.domain type require</code></p>
<p><code>SAD:<br />
esp transport from 192.168.0.1 to BB.BB.BB.BB spi 0x026f944d auth hmac-sha1 enc aes-256<br />
esp transport from BB.BB.BB.BB to 192.168.0.1 spi 0x20510079 auth hmac-sha1 enc aes-256</code></p>
<p>Et ensuite pour consulter les sessions L2TP démarrées dans npppd(8) ainsi que des statistiques utiles :<br />
<code>$ sudo npppctl session all<br />
Ppp Id = 14<br />
Ppp Id : 14<br />
Username : user1<br />
Realm Name : local<br />
Concentrated Interface : tun0<br />
Assigned IPv4 Address : 10.0.0.129<br />
Tunnel Protocol : L2TP<br />
Tunnel From : BB-BB-BB-BB.romanichel.net:43682<br />
Start Time : 2012/02/15 16:48:57<br />
Elapsed Time : 114 sec (1 minute)<br />
Input Bytes : 3214 (3.1 KB)<br />
Input Packets : 45<br />
Input Errors : 0 (0.0%)<br />
Output Bytes : 6861 (6.7 KB)<br />
Output Packets : 25<br />
Output Errors : 0 (0.0%)</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brimbelle.org/index.php/2012/02/15/passerelle-vpn-l2tpipsec-pour-smartphone-avec-openbsd/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Offrez-vous une connectivité IPv6 Internet, LAN et DMZ pour 0 euro</title>
		<link>http://blog.brimbelle.org/index.php/2010/03/12/offrez-vous-une-connectivite-ipv6-internet-lan-et-dmz-pour-0-euro/</link>
		<comments>http://blog.brimbelle.org/index.php/2010/03/12/offrez-vous-une-connectivite-ipv6-internet-lan-et-dmz-pour-0-euro/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 22:23:59 +0000</pubDate>
		<dc:creator>mattieu</dc:creator>
				<category><![CDATA[Geekage]]></category>
		<category><![CDATA[/48]]></category>
		<category><![CDATA[/64]]></category>
		<category><![CDATA[Free]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[ftp-proxy]]></category>
		<category><![CDATA[hurricane electric]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[openbsd]]></category>
		<category><![CDATA[passerelle]]></category>
		<category><![CDATA[pf]]></category>
		<category><![CDATA[tunnel broker]]></category>

		<guid isPermaLink="false">http://blog.brimbelle.org/?p=110</guid>
		<description><![CDATA[En ces temps où toutes économies sont bonnes à prendre, je me suis attelé à mettre en place chez moi un &#171;&#160;vrai&#160;&#187; accès IPv6. Par vrai, je n&#8217;entends pas un accès natif (ce serait trop beau, aucun opérateur grand public français ne le propose à l&#8217;heure actuelle hormis Nerim dont l&#8217;offre est tout de même [...]]]></description>
			<content:encoded><![CDATA[<p>En ces temps où toutes économies sont bonnes à prendre, je me suis attelé à mettre en place chez moi un &laquo;&nbsp;vrai&nbsp;&raquo; accès IPv6. Par vrai, je n&#8217;entends pas un accès natif (ce serait trop beau, aucun opérateur grand public français ne le propose à l&#8217;heure actuelle hormis Nerim dont l&#8217;offre est tout de même plus orientée vers les TPE), mais un accès offrant un espace d&#8217;adressage correct, ie. un /48.</p>
<p>Même Free qui propose de l&#8217;IPv6 à ses clients ne propose qu&#8217;un semblant d&#8217;accès natif, avec du <a href="http://tools.ietf.org/html/rfc5569" target="_blank">6rd</a> mais il se limite à donner un /64.</p>
<p>Dans ce billet, je vais donc m&#8217;attacher à présenter les grandes lignes pour mettre en place à la maison (et même ailleurs) un accès IPv6 avec différents sous-réseaux, en utilisant un tunnel broker. Pour y arriver je présenterai des exemples de configuration pour une passerelle OpenBSD, ainsi que des astuces.</p>
<p><span id="more-110"></span>Tout d&#8217;abord, revenons sur quelques bases. Avec IPv4 il se pratique depuis de nombreuse années un routage ne se basant plus sur les classes avec CIDR (Classless Inter Domain Routing). Ceci est rendu possible par l&#8217;utilisation de masques réseau à taille variable (VLSM, Variable Length Subnet Masking). Avec IPv6, les masques disparaissent au profit de préfixes. Un préfixe IPv6 est l&#8217;équivalent d&#8217;un masque, qui permet de router un sous-réseau à travers internet. D&#8217;un point de vue routage, un préfixe a une taille maximale de 64 bits (une adresse IPv6 ayant une taille de 128 bits). Les opérateurs peuvent localement découper plus finement cet espace d&#8217;adressage, mais sur internet, les règles de routage seront communes au /64.</p>
<p>Ainsi, Free qui propose un /64 à ses clients, ne donne la possibilité d&#8217;adresser qu&#8217;un seul sous-réseau. Si vous souhaitez vous amuser avec les joies de l&#8217;IPv6 qui vous permet de posséder pour chaque machine une adresse publique routable, alors la solution de Free montre vite ses limites. Il vous sera en effet impossible (comme c&#8217;est également le cas de tous les autres FAIs grand public français) de segmenter votre réseau pour séparer vos clients de vos serveurs en mettant par exemple en place un LAN local, une DMZ, un accès Wifi, etc. le tout sur un espace d&#8217;adressage IPv6 public.</p>
<p>Mais comme sur internet on trouve de tout, il existe des &laquo;&nbsp;tunnel brokers&nbsp;&raquo; qui fournissent des points d&#8217;accès IPv6 un peu partout dans le monde. La technique est simple : depuis votre accès IPv4 natif, on va encapsuler jusqu&#8217;au point de présence du tunnel broker l&#8217;intégralité du trafic IPv6 sur de l&#8217;IPv4. Il y a quelques années, les points de présence étaient bien souvent situés aux États Unis ou assez loin géographiquement de l&#8217;Europe. Mais désormais, de nombreux tunnel brokers ont fait leur apparition proposant des services très intéressants comme :</p>
<ul>
<li>Une présence de proximité avec des points de présence en France et à travers l&#8217;Europe,</li>
<li>Un sous-réseau IPv6 large : /48 ou plus,</li>
<li>La délégation de la zone DNS de votre sous-réseau, vous permettant de personnaliser vos enregistrements PTR (pour les résolutions inverses),</li>
<li>Des possibilités de peering BGP si vous disposez de votre AS.</li>
</ul>
<p>Même si toutes ces fonctionnalités sont loin d&#8217;être indispensables pour un accès personnel&#8230; (c&#8217;est le moins que l&#8217;on puisse dire <img src='http://blog.brimbelle.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), les deux premières sont très alléchantes. Chez moi, j&#8217;ai choisi d&#8217;utiliser <a href="http://www.he.net/" target="_blank">Hurricane Electric</a> (HE). Il propose l&#8217;ensemble des services ci-dessus, pour la très modique somme de 0 euros&#8230;</p>
<p>La première étape est bien évidemment de s&#8217;inscrire sur le site, puis de créer un tunnel (en choisissant le point d&#8217;accès le plus proche de chez sois). Ce tunnel, comme je le disais précédemment consiste à encapsuler sur votre passerelle, tout le trafic IPv6 dans de l&#8217;IPv4. Pour cela, il faudra donc établir une lisaison point à point IPv4 entre votre passerelle et l&#8217;autre bout du tunnel chez HE. Une fois celui-ci créé depuis l&#8217;interface web du site, HE vous indique alors les différents paramètres d&#8217;accès.</p>
<ul>
<li>Client IPv4 address : l&#8217;adresse IPv4 de votre bout du tunnel (l&#8217;adresse fournie par votre opérateur),</li>
<li>Server IPv4 address : l&#8217;adresse IPv4 de l&#8217;autre bout du tunnel (chez HE),</li>
<li>Client IPv6 address : l&#8217;adresse IPv6 publique que vous assigne HE,</li>
<li>Server IPv6 address : l&#8217;adresse IPv6 faisant office de passerelle chez HE (liaison point à point).</li>
</ul>
<p>Ces paramètres, vous l&#8217;aurez compris, vont vous permettre de monter le tunnel vers le point d&#8217;accès HE. Sous OpenBSD, ce tunnel se concrétisera par une interface virtuelle <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=gif&amp;apropos=0&amp;sektion=0&amp;manpath=OpenBSD+Current&amp;arch=i386&amp;format=html" target="_blank">gif(4)</a>. Elle se configure très simplement en ligne de commande (remplacez évidemment les adresses par celles fournies par HE) :<br />
<code><br />
$ sudo ifconfig gif0 tunnel &lt;client_ipv4&gt; &lt;server_ipv4&gt;<br />
$ sudo ifconfig gif0 inet6 alias &lt;client_ipv6&gt; &lt;server_ipv6&gt; prefixlen 128<br />
$ sudo route -n add -inet6 default &lt;server_ipv6&gt;<br />
</code><br />
Et pour automatiquement monter le tunnel au démarrage, par un fichier &laquo;&nbsp;/etc/hostname.gif0&#8243; :<br />
<code><br />
tunnel &lt;client_ipv4&gt; &lt;server_ipv4&gt;<br />
inet6 &lt;client_ipv6&gt; 128 &lt;server_ipv6&gt;<br />
! /sbin/route add -inet6 default &lt;server_ipv6&gt;<br />
</code><br />
Lorsque le tunnel est monté sur votre passerelle, cela signifie qu&#8217;il est fonctionnel et que la passerelle dispose maintenant d&#8217;un accès public IPv6. A noter que si vous souhaitez filtrer finement les flux du tunnel avec PF (ce qui est plus que recommandé), des lignes similaires (à adapter en fonction de votre config) permettront d&#8217;autoriser le tunnel sur votre interface physique en IPv4 (l&#8217;interface gif0 verra le trafic IPv6 non encapsulé, comme s&#8217;il venait d&#8217;une connexion native) :<br />
<code><br />
pass in on $ext_if proto ipv6 from $server_ipv4 to $ext_if<br />
pass out on $ext_if proto ipv6 from $ext_if to $server_ipv4<br />
</code><br />
Pour le moment, nous disposons simplement d&#8217;un accès IPv6 sur la passerelle. Pour votre réseau interne, par défaut, HE vous propose un sous-réseau /64 routé. Mais comme je l&#8217;expliquais en début de l&#8217;article, c&#8217;est insuffisant dans notre cas car nous souhaitons un /48 pour pouvoir le fractionner et le router sur internet. Il sera donc nécessaire de demander l&#8217;assignation d&#8217;un /48 routé. Cette opération ne prend que quelques secondes et s&#8217;effectue en un clique sur l&#8217;interface de gestion de votre compte HE.</p>
<p>Ce /48 se présente sous la forme xxxx:yyyy:zzzz::/48. C&#8217;est ce sous-réseau que nous allons fractionner. Ainsi on peut imaginer :</p>
<ul>
<li>xxxx:yyyy:zzzz:1::/64 : réseau local LAN,</li>
<li>xxxx:yyyy:zzzz:2::/64 : DMZ hébergeant nos serveurs,</li>
<li>xxxx:yyyy:zzzz:3::/64 : réseau Wifi personnel (si vous prenez le risque d&#8217;utiliser IPv6 sur du wifi&#8230;),</li>
<li>etc.</li>
</ul>
<p>Une adresse de ces sous-réseaux est à assigner à chaque interface de la passerelle, dans un fichier &laquo;&nbsp;/etc/hostname.if&nbsp;&raquo; approprié. Si vous souhaitez bénéficier de l&#8217;autoconfiguration &laquo;&nbsp;stateless&nbsp;&raquo;, <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=rtadvd&amp;apropos=0&amp;sektion=0&amp;manpath=OpenBSD+Current&amp;arch=i386&amp;format=html" target="_blank">rtadvd(8)</a> est fait pour vous. Par exemple, si vous souhaitez configurer vos machines du LAN local, ajoutez cette ligne au fichier &laquo;&nbsp;/etc/rtadvd.conf&nbsp;&raquo; (remplacer &laquo;&nbsp;if&nbsp;&raquo; par l&#8217;interface sur laquelle vous souhaitez activer l&#8217;autoconfiguration) :<br />
<code><br />
if:\<br />
:addr="xxxx:yyyy:zzzz:1::":prefixlen#64:</code></p>
<p>Ensuite vous pouvez activer définitivement rtadvd en ajoutant cette ligne dans le fichier &laquo;&nbsp;/etc/rc.conf.local&nbsp;&raquo; (remplacer &laquo;&nbsp;if&nbsp;&raquo; par l&#8217;interface sur laquelle vous souhaitez activer l&#8217;autoconfiguration) :<br />
<code><br />
rtadvd_flags="if"</code></p>
<p>Selon le trafic que vous souhaitez autoriser sur votre passerelle avec PF, il faut noter qu&#8217;IPv6 n&#8217;utilise pas le protocole ARP d&#8217;IPv4 pour faire la résolution entre adresse MAC et adresse IP sur un segment réseau. Il utilise au contraire une nouvelle fonctionnalité apportée par ICMPv6 (version d&#8217;ICMP pour IPv6) qui est la découverte du voisinage (ND, Neighbor Discovery). Ce mécanisme repose sur deux types de paquets :</p>
<ul>
<li>La machine souhaitant communiquer avec une autre envoie un paquet de type &laquo;&nbsp;Neighbor solicitation&nbsp;&raquo; (icmp6-type neighbrsol dans PF),</li>
<li>La machine concernée répond par un paquet de type &laquo;&nbsp;Neighbor advertisement&nbsp;&raquo; (icmp-type neighbradv dans PF).</li>
</ul>
<p>Il faudra donc absolument autoriser ces paquets pour que les machines puissent communiquer. Des règles PF peuvent ainsi être :<br />
<code><br />
pass in on gif0 inet6 proto icmp6 icmp6-type neighbrsol<br />
</code></p>
<p>Ici on autorise juste le paquet neighbrsol : le paquet neighbradv retourné par l&#8217;autre machine sera autorisé par l&#8217;état créé par le premier paquet.</p>
<p>De même que si vous utilisez rtadvd et que vous souhaitez effectuer un filtrage fin, il faudra autoriser les paquets du mécanisme de découverte de routeur. Le principe :</p>
<ul>
<li>Le client envoie un paquet &laquo;&nbsp;Router solicitation&nbsp;&raquo; (icmp6-type routersol dans PF),</li>
<li>Le routeur répond par un paquet &laquo;&nbsp;Router advertisement&nbsp;&raquo; (icmp6-type routeradv dans PF).</li>
</ul>
<p>Les règles peuvent ainsi être :<br />
<code><br />
pass in on $int_if inet6 proto icmp6 icmp6-type routersol</code></p>
<p>De la même façon que pour le mécanisme de ND présenté précédemment, la réponse routeradv est automatiquement acceptée par PF, un état étant créé par le premier paquet.</p>
<p>Il faut également noter qu&#8217;avec IPv6, filtrer l&#8217;ICMP est très délicat. La bonne pratique avec IPv4 est de ne pas le bloquer. Mais pour IPv6, plus qu&#8217;une bonne pratique c&#8217;est également une règle pour éviter d&#8217;aller vers de gros problèmes. Le meilleur exemple est le <a href="http://tools.ietf.org/html/rfc1981" target="_blank">&laquo;&nbsp;Path MTU Discovery&nbsp;&raquo; (PMTU)</a> qui se base sur les paquets ICMP &laquo;&nbsp;Packet too big&nbsp;&raquo;.</p>
<p>Enfin, le dernier point à aborder, le FTP. C&#8217;est souvent le protocole qui pose problème. OpenBSD offre un outil très utile pour automatiquement gérer les connexions de donnée avec PF : <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ftp-proxy&amp;apropos=0&amp;sektion=0&amp;manpath=OpenBSD+Current&amp;arch=i386&amp;format=html" target="_blank">ftp-proxy(8)</a>. En IPv4 le fonctionnement est assez naturel, mais avec IPv6 il y a quelques particularités à prendre en compte. Prenons comme exemple un server FTP hébergé dans notre DMZ, que nous souhaitons rendre accessible en IPv6 depuis l&#8217;extérieur.</p>
<p>La page de manuel indique que lorsque ftp-proxy fonctionne en IPv6, l&#8217;adresse par défaut sur laquelle il écoute est ::1 (équivalent de 127.0.0.1 pour IPv6). Or, un bug rend impossible les redirections IPv6 vers ::1. Il faudra donc rediriger avec PF le trafic sur une adresse globale, et non sur le localhost. Par exemple :<br />
<code><br />
anchor "ftp-proxy/*"<br />
pass in quick inet6 proto tcp to port ftp rdr-to $client_ipv6 port 8021</code></p>
<p>Ensuite, lorsque l&#8217;on démarre ftp-proxy, il faut lui passer les bons arguments pour qu&#8217;il écoute sur l&#8217;adresse en question et redirige le trafic sur notre serveur FTP :<br />
<code><br />
$ sudo /usr/sbin/ftp-proxy -6 -b &lt;client_ipv6&gt; -R &lt;ftp_server&gt;</code></p>
<p>Pour conclure cet article, il faut bien garder à l&#8217;esprit que les extraits de configuration dont je parle sont uniquement là pour améliorer la compréhension. Ils doivent être finement adaptés selon votre configuration, vos buts et la topologie de votre réseau.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brimbelle.org/index.php/2010/03/12/offrez-vous-une-connectivite-ipv6-internet-lan-et-dmz-pour-0-euro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Statistiques OpenVPN automatiques</title>
		<link>http://blog.brimbelle.org/index.php/2009/08/23/statistiques-openvpn-automatiques/</link>
		<comments>http://blog.brimbelle.org/index.php/2009/08/23/statistiques-openvpn-automatiques/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 23:29:13 +0000</pubDate>
		<dc:creator>mattieu</dc:creator>
				<category><![CDATA[Geekage]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<category><![CDATA[page]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[statistique]]></category>
		<category><![CDATA[status]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.brimbelle.org/?p=102</guid>
		<description><![CDATA[Je suis un grand fan d&#8217;OpenVPN pour avoir un accès complet à internet lorsque celà n&#8217;est pas possible avec la connexion que j&#8217;utilise. Quand je me déplace avec mon portable j&#8217;ai souvent à passer par des proxys en tout genre, avec ou sans authentification (voir pire&#8230; avec authentification NTLM&#8230;) et c&#8217;est là qu&#8217;OpenVPN est vraiment [...]]]></description>
			<content:encoded><![CDATA[<p>Je suis un grand fan d&#8217;OpenVPN pour avoir un accès complet à internet lorsque celà n&#8217;est pas possible avec la connexion que j&#8217;utilise. Quand je me déplace avec mon portable j&#8217;ai souvent à passer par des proxys en tout genre, avec ou sans authentification (voir pire&#8230; avec authentification NTLM&#8230;) et c&#8217;est là qu&#8217;OpenVPN est vraiment indispensable.</p>
<p>Ma configuration marche tellement bien que plusieurs personnes de mon entourage m&#8217;ont demandé des accès. Mais j&#8217;ai rapidement eu envie de surveiller la consommation relative à OpenVPN ainsi que les utilisateurs connectés à un instant T.</p>
<p><span id="more-102"></span></p>
<p>OpenVPN ne facilite pas vraiment la tâche pour récupérer des informations. Elles sont de plus très minimales. Deux moyens sont possibles : envoyer un signal SIGUSR2 au processus OpenVPN ou consulter le fichier défini par l&#8217;option <em>status</em> dans la configuration du serveur.</p>
<p>La solution la plus simple que j&#8217;ai trouvé est de réaliser un petit script qui parcourt le ou les fichiers de configuration d&#8217;OpenVPN (pour ma part deux instances fonctionnent donc j&#8217;ai deux fichiers à analyser). Ce script est écrit en Perl et génère une page HTML classique contenant un tableau avec des informations comme le nom de l&#8217;utilisateur, son adresse IP source, son adresse IP virtuelle, les quantités de données envoyées et reçues et enfin le temps de connexion.</p>
<p>Je l&#8217;utilise dans un cronjob qui réécrit la page en question toutes les minutes.</p>
<p>Pour l&#8217;utiliser :</p>
<p><code>openvpnstatus.pl fichier_log1 [fichier_log2...] &gt; webpage.html</code></p>
<p>Il permet d&#8217;utiliser des en-têtes et pieds de page personnalisés. Il faut positionner les variables <code>header</code> et <code>footer</code>.</p>
<p>Voici le script <a href="http://www.brimbelle.org/mattieu/stuff/openvpnstatus.pl">openvpnstatus.pl</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brimbelle.org/index.php/2009/08/23/statistiques-openvpn-automatiques/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Izia ou le meilleur album rock du moment</title>
		<link>http://blog.brimbelle.org/index.php/2009/06/15/izia-ou-le-meilleur-album-rock-du-moment/</link>
		<comments>http://blog.brimbelle.org/index.php/2009/06/15/izia-ou-le-meilleur-album-rock-du-moment/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 19:21:51 +0000</pubDate>
		<dc:creator>mattieu</dc:creator>
				<category><![CDATA[Zic]]></category>
		<category><![CDATA[france]]></category>
		<category><![CDATA[izia]]></category>
		<category><![CDATA[rock]]></category>

		<guid isPermaLink="false">http://blog.brimbelle.org/?p=72</guid>
		<description><![CDATA[Cet article est le premier de la rubrique Zic qui viendra selon mes découvertes alimenter ce blog. Pour le premier, il fallait quelque chose de gros, d&#8217;énorme. J&#8217;ai choisi Izia. Qui est Izia ? C&#8217;est une chanteuse française âgée de seulement 18 ans qui a sorti son premier album la semaine dernière, le 8 juin [...]]]></description>
			<content:encoded><![CDATA[<p><a onclick="ps_imagemanager_popup(this.href,'cover_izia_123x123_500x500.jpg','500','500');return false" href="/wp-content/uploads/cover_izia_123x123_500x500.jpg" onfocus="this.blur()" rel="lightbox[72]"><img title="cover_izia_123x123_500x500.jpg" src="/wp-content/uploads/.thumbs/.cover_izia_123x123_500x500.jpg" border="0" alt="cover_izia_123x123_500x500.jpg" hspace="10" width="96" height="96" align="left" /></a>Cet article est le premier de la rubrique Zic qui viendra selon mes découvertes alimenter ce blog. Pour le premier, il fallait quelque chose de gros, d&#8217;énorme. J&#8217;ai choisi Izia. Qui est Izia ? C&#8217;est une chanteuse française âgée de seulement 18 ans qui a sorti son premier album la semaine dernière, le 8 juin 2009.</p>
<p>Fille de Jacques Higelin et soeur d&#8217;Arthur H, l&#8217;artiste parcourt les scènes françaises depuis environ 2 ans, avec des dates impressionnantes comme une première partie d&#8217;Iggy Pop &amp; The Stooges. Elle est à l&#8217;affiche des plus gros festivals cet été : Vieilles Charrues, Printemps de Bourges, Solidays, etc. Le cadre est posé.</p>
<p><span id="more-72"></span>Que dire de cet album, tant les qualificatifs manquent pour exprimer à quel point il est excellent. Du Janis Joplin version 2009, de la rage à en avoir des frissons, les titres s&#8217;enchaînent, chaque morceau est meilleur que le précédent. Et puis l&#8217;album repart, repart, repart&#8230;</p>
<p>Du rock comme on en a pas écouté depuis des lustres, au temps où la soupe commerciale inonde tous les médias.</p>
<p>Izia est sans aucun doute une artiste avec un grand avenir. Mais j&#8217;en ai déjà beaucoup trop dit. La meilleure chose à faire est d&#8217;acheter l&#8217;album&#8230;</p>
<p>Quelques liens utils :</p>
<ul>
<li>Son <a href="http://www.myspace.com/iziamusic" target="_blank">MySpace</a>,</li>
<li>Sa <a href="http://fr.wikipedia.org/wiki/Iz%C3%AFa_Higelin" target="_blank">page Wikipédia</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.brimbelle.org/index.php/2009/06/15/izia-ou-le-meilleur-album-rock-du-moment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenBSD &amp; PF : ouverture de ports NFS automatique</title>
		<link>http://blog.brimbelle.org/index.php/2009/05/17/openbsd-pf-ouverture-de-ports-nfs-automatique/</link>
		<comments>http://blog.brimbelle.org/index.php/2009/05/17/openbsd-pf-ouverture-de-ports-nfs-automatique/#comments</comments>
		<pubDate>Sun, 17 May 2009 15:15:04 +0000</pubDate>
		<dc:creator>mattieu</dc:creator>
				<category><![CDATA[Geekage]]></category>
		<category><![CDATA[anchor]]></category>
		<category><![CDATA[nfs]]></category>
		<category><![CDATA[openbsd]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[pf]]></category>
		<category><![CDATA[rpc]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://blog.brimbelle.org/?p=63</guid>
		<description><![CDATA[D&#8217;habitude, sur le serveur NFS qui me permet de booter en réseau mes différentes stations, je n&#8217;activais pas PF : tout le trafic pouvait atteindre la machine en entrée. Ayant activé l&#8217;IPv6 sur toutes mes machines et étant donné que la Freebox route tout le trafic IPv6 sur l&#8217;interne, je suis dans l&#8217;obligation de restreindre [...]]]></description>
			<content:encoded><![CDATA[<p>D&#8217;habitude, sur le serveur NFS qui me permet de booter en réseau mes différentes stations, je n&#8217;activais pas PF : tout le trafic pouvait atteindre la machine en entrée.</p>
<p>Ayant activé l&#8217;IPv6 sur toutes mes machines et étant donné que la Freebox route tout le trafic IPv6 sur l&#8217;interne, je suis dans l&#8217;obligation de restreindre les accès en utilisant PF (en IPv4 je n&#8217;avais pas ce souci puisqu&#8217;elles étaient derrière du NAT).</p>
<p>Le problème avec NFS c&#8217;est que certains ports sont alloués de manière statique : nfsd sur le 2049 et le portmapper sur le 111, mais certains autres sont alloués dynamiquement : j&#8217;utilise bootparam et mountd pour ma part.</p>
<p>Il me fallait donc une solution pour détecter au démarrage de la machine les ports utilisés par ces services.</p>
<p><span id="more-63"></span>La solution que j&#8217;utilise est relativement simple. On suppose que PF tourne sur la machine avec un fichier pf.conf valide.</p>
<p>Le principe retenu est d&#8217;utiliser une ancre (<em>PF anchor</em>) placée dans les règles de filtrage :</p>
<p><code>anchor nfs</code></p>
<p>Ainsi au démarrage de la machine, PF sera démarré avec une ancre d&#8217;affectée, à cet instant vide.</p>
<p>Ensuite il reste à lancer mon script Perl permettant de découvrir les ports utilisés et peupler l&#8217;ancre PF à l&#8217;aide de la commande <em>pfctl</em>.</p>
<p>Pour ce faire, j&#8217;utilise le script de démarrage <em>rc.local</em> en ajoutant ceci avant le <em>echo &#8216;.&#8217;</em> final :</p>
<p><code># RPC script<br />
if [ -x /home/scripts/rpcports.pl ] ; then<br />
/home/scripts/rpcports.pl<br />
echo -n ' rpcports.pl'<br />
fi</code></p>
<p>Attention cependant, ce script s&#8217;appuie sur la sortie de la commande <em>rpcinfo -p</em> et se base sur les longueurs fixes des chaînes de caractères en sortie.</p>
<p>Pour finir, le script <a title="rpcports.pl" href="http://www.brimbelle.org/mattieu/stuff/rpcports.pl">rpcports.pl</a> en question.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brimbelle.org/index.php/2009/05/17/openbsd-pf-ouverture-de-ports-nfs-automatique/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>In Picon we trust</title>
		<link>http://blog.brimbelle.org/index.php/2009/03/10/in-picon-we-trust/</link>
		<comments>http://blog.brimbelle.org/index.php/2009/03/10/in-picon-we-trust/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 19:32:04 +0000</pubDate>
		<dc:creator>mattieu</dc:creator>
				<category><![CDATA[Perso]]></category>
		<category><![CDATA[gérardmer]]></category>
		<category><![CDATA[la bresse]]></category>
		<category><![CDATA[neige]]></category>
		<category><![CDATA[ski]]></category>
		<category><![CDATA[station]]></category>
		<category><![CDATA[vosges]]></category>

		<guid isPermaLink="false">http://blog.brimbelle.org/?p=45</guid>
		<description><![CDATA[Après plusieurs années sans trop de neige, les Vosges sont à nouveau très gâtées par le temps, et la neige. Profitant probablement de la meilleure journée de la saison, ce samedi 7 mars fut mémorable que ce soit par le temps ou la qualité et la quantité de neige. La saison dernière, j&#8217;avais parlé de [...]]]></description>
			<content:encoded><![CDATA[<p><a onclick="ps_imagemanager_popup(this.href,'Ski001.JPG','80','53');return false" href="/wp-content/uploads/Ski001.JPG" onfocus="this.blur()" rel="lightbox[45]"><img title="Ski001.JPG" src="/wp-content/uploads/.thumbs/.Ski001.JPG" border="0" alt="Ski001.JPG" hspace="10" width="96" height="64" align="left" /></a>Après plusieurs années sans trop de neige, les Vosges sont à nouveau très gâtées par le temps, et la neige. Profitant probablement de la meilleure journée de la saison, ce samedi 7 mars fut mémorable que ce soit par le temps ou la qualité et la quantité de neige.</p>
<p>La saison dernière, j&#8217;avais parlé de la station de Gérardmer, je propose maintenant quelques photos de La Bresse.</p>
<p><span id="more-45"></span></p>
<p align="center"><a onclick="ps_imagemanager_popup(this.href,'Ski002.JPG','53','80');return false" href="/wp-content/uploads/Ski002.JPG" onfocus="this.blur()" rel="lightbox[45]"><img title="Ski002.JPG" src="/wp-content/uploads/.thumbs/.Ski002.JPG" border="0" alt="Ski002.JPG" hspace="10" width="64" height="96" align="bottom" /></a><a onclick="ps_imagemanager_popup(this.href,'Ski003.JPG','53','80');return false" href="/wp-content/uploads/Ski003.JPG" onfocus="this.blur()" rel="lightbox[45]"><img title="Ski003.JPG" src="/wp-content/uploads/.thumbs/.Ski003.JPG" border="0" alt="Ski003.JPG" hspace="10" width="64" height="96" align="bottom" /></a><a onclick="ps_imagemanager_popup(this.href,'Ski004.JPG','53','80');return false" href="/wp-content/uploads/Ski004.JPG" onfocus="this.blur()" rel="lightbox[45]"><img title="Ski004.JPG" src="/wp-content/uploads/.thumbs/.Ski004.JPG" border="0" alt="Ski004.JPG" hspace="10" width="64" height="96" align="bottom" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brimbelle.org/index.php/2009/03/10/in-picon-we-trust/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IPv6 for fun without profit</title>
		<link>http://blog.brimbelle.org/index.php/2009/02/21/ipv6-for-fun-without-profit/</link>
		<comments>http://blog.brimbelle.org/index.php/2009/02/21/ipv6-for-fun-without-profit/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 00:22:23 +0000</pubDate>
		<dc:creator>mattieu</dc:creator>
				<category><![CDATA[Geekage]]></category>
		<category><![CDATA[/48]]></category>
		<category><![CDATA[/64]]></category>
		<category><![CDATA[cvs]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[FAI]]></category>
		<category><![CDATA[Free]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[mirroir]]></category>
		<category><![CDATA[ntp]]></category>
		<category><![CDATA[openbsd]]></category>
		<category><![CDATA[pool.ntp.org]]></category>
		<category><![CDATA[tcpdump]]></category>

		<guid isPermaLink="false">http://blog.brimbelle.org/?p=27</guid>
		<description><![CDATA[Cela fait maintenant un bon bout de temps que je voulais me mettre à IPv6 (vous savez, le protocole censé remplacer IPv4 depuis 15 ans). J&#8217;ai finalement trouvé pris le temps&#8230; et voici mes remarques. Les différentes études récentes montrent clairement que IPv6 est pour le moment très très peu utilisé (il représente 0.01% du [...]]]></description>
			<content:encoded><![CDATA[<p>Cela fait maintenant un bon bout de temps que je voulais me mettre à <a href="http://fr.wikipedia.org/wiki/IPv6">IPv6</a> (vous savez, le protocole censé remplacer IPv4 depuis 15 ans). J&#8217;ai finalement <span style="text-decoration: line-through;">trouvé</span> pris le temps&#8230; et voici mes remarques.</p>
<p>Les différentes <a href="http://asert.arbornetworks.com/2008/08/the-end-is-near-but-is-ipv6/">études récentes</a> montrent clairement que IPv6 est pour le moment très très peu utilisé (il représente 0.01% du trafic Internet IPv4) sans compter que les adresses IPv4 seront bientôt <a href="http://www.potaroo.net/tools/ipv4/index.html">complètement épuisées</a>.</p>
<p>Pour vérifier ces études je me suis donc décidé à passer ma connexion internet et les deux machines principales que j&#8217;utilise  en IPv6.</p>
<p><span id="more-27"></span>Première étape, activer IPv6 sur ma freeboîte : connexion au portail free, activation de la fonctionnalité, récupération de mon subnet IPv6 et reboot de la freeboîte. Et la surprise : free ne donne qu&#8217;un /64.  Moi qui espérais me faire un subnet local, une dmz, un subnet pour le wifi, etc., ce ne sera pas en passant par chez free (oui, il existe des bidouilles pour faire du subnetting avec un masque plus grand que /64, mais ici pas question de bidouiller). Je n&#8217;exclus pas de passer par un tunnel broker dans le futur.</p>
<p>Je continue mes expérimentations. Mon poste de travail principal est sous OpenBSD. Tout est de base prévu pour IPv6. Il me faut récupérer une adresse. Pour ça on utilise la commande rtsol, qui correspond à l&#8217;auto-configuration stateless en IPv6 :</p>
<p><code>$ sudo sh -c 'echo  "!/sbin/rtsol \\\$if" &gt;&gt; /etc/hostname.bge0'<br />
$ sudo rtsol bge0<br />
$ ifconfig bge0<br />
bge0: flags=8843 mtu 1500<br />
lladdr aa:aa:bb:bb:cc:cc<br />
priority: 0<br />
groups: egress<br />
media: Ethernet autoselect (1000baseT full-duplex)<br />
status: active<br />
inet6 fe80::aaaa:bbbb:cccc:dddd%bge0 prefixlen 64 scopeid 0x1<br />
inet 192.168.1.20 netmask 0xffffff00 broadcast 192.168.1.255<br />
inet6 2a01:e35:xxxx:yyyy:aaaa:bbbb:cccc:dddd prefixlen 64 autoconf pltime 86381 vltime 86381</code></p>
<p>Pour le moment tout se passe bien. Un petit tour sur <a href="http://www.kame.net/">www.kame.net</a> et miracle, la tortue bouge <img src='http://blog.brimbelle.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Maintenant, pour continuer à faire joujou, je me dis que ce serait intéressant de passer ma seconde machine (la <a href="http://www.brimbelle.org/machines.html">blade 1500</a>) en full IPv6. Je boot sur un ramdisk du dernier snapshot pour une netinstall. Je paramètre le réseau : pas d&#8217;IPv4, IPv6 avec rtsol.</p>
<p>Et là, problème&#8230; quels sont les serveurs DNS joignables en IPv6 ?!? Sur ma machine principale je continuais d&#8217;utiliser les DNS IPv4 de Free, qui me répondaient avec les enregistrements AAAA correspondants, mais ici, plus d&#8217;IPv4. Je dois donc trouver un moyen pour les récupérer, et comme je l&#8217;ai dit plus haut, la freeboîte ne donne pas d&#8217;adresse en utilisant DHCPv6, mais à l&#8217;aide de l&#8217;auto-configuration stateless.</p>
<p>La station envoie un message ICMPv6 <em>router solicitation</em> sur l&#8217;adresse multicast <em>all routers</em> (ff02::2) en scope <em>Link-Local</em>. Le routeur présent répond alors à la station par un message ICMPv6 <em>router advertisement</em> sur l&#8217;adresse multicast <em>all nodes</em> (ff02::1) toujours en scope <em>Link-Local</em>. Ces messages de réponse contiennent différentes options. </p>
<p>Une option appelée <em>IPv6 Router Advertisement Option for DNS Configuration</em> est apparue avec la <a href="http://www.ietf.org/rfc/rfc5006.txt">RFC 5006</a>  expérimentale sortie en 2007. Seulement cette option n&#8217;est supportée à ma connaissance pour le moment que par linux, et problème, c&#8217;est ce mécanisme que Free utilise pour annoncer ses serveurs DNS.</p>
<p>Comment alors récupérer mes DNS ? Facile !!! retour sur ma machine principale, tcpdump dans un terminal, rtsol dans un autre :</p>
<p><code>$ sudo tcpdump -n -i bge0 -s 1600 -X icmp6<br />
tcpdump: listening on bge0, link-type EN10MB<br />
23:56:13.087743 fe80::211:25ff:fed3:542c &gt; ff02::2: icmp6: router solicitation<br />
[...]</code><br />
<code><br />
23:56:13.094789 fe80::207:cbff:feb1:aacd &gt; ff02::1: icmp6: router advertisement<br />
[...]<br />
0060: <span style="color: #ff0000;">2a01 0e00 0000 0000 0000 0000 0000 0002</span> *...............<br />
0070: <span style="color: #ff0000;">2a01 0e00 0000 0000 0000 0000 0000 0001</span> *...............<br />
[...]</code></p>
<p>Les DNS sont donc 2a01:e00::1 et 2a01:e00::2. Ok, maintenant j&#8217;ai les DNS, je peux poursuivre l&#8217;install. Je suis chanceux, mes miroirs favoris en France ont une connectivité IPv6. L&#8217;installation se termine, je reboot, et hop, me voilà avec un OpenBSD tout frais en full IPv6.</p>
<p>Prochaine étape, récupérer les sources de -current. Et la autre problème, après pas mal d&#8217;interrogations DNS sur les différents <a href="http://www.openbsd.org/anoncvs.html">dépôts CVS</a> :</p>
<p><code>$ host -t AAAA foo.bar</code></p>
<p>Il se trouve qu&#8217;il n&#8217;y en a pour le moment qu&#8217;un seul en Europe accessible sur IPv6. Ça vaut donc le coup de le signaler :</p>
<p><code>anoncvs@anoncvs.netbsd.se:/cvs</code></p>
<p>Je récupère les sources, je recompile un -current tout propre, je redémarre et je commence la config. Je veux synchroniser ma machine avec <a href="http://www.openntpd.org/">OpenNTPD</a>. J&#8217;ai l&#8217;habitude d&#8217;utiliser <a href="http://www.pool.ntp.org/">fr.pool.ntp.org</a>. Mais encore une fois surprise, quand je regarde les logs, aucune machine n&#8217;est joignable en IPv6. Je recherche un peu sur le net : pool.ntp.org ne distribue actuellement aucun serveur en IPv6. Ils commencent tout juste en ce début 2009 à les répertorier&#8230; Je continue alors mes recherches et après pas mal de temps j&#8217;obtiens une liste de cinq serveurs accessibles. Je la partage ici pour les intéressés :</p>
<p><code>server ntp2.cines.fr<br />
server ntp6.space.net<br />
server ntp.pouf.org<br />
server ntp.via.ecp.fr<br />
server ntp6.bsdsx.fr</code></p>
<p>Je peux maintenant utiliser ma machine correctement. Je me lance alors à l&#8217;assaut du web en IPv6. Je savais que le web en IPv6 était triste mais à ce point&#8230; je l&#8217;aurais jamais imaginé : google s&#8217;y met seulement, pas de yahoo, pas de lefigaro.fr, pas de lemonde.fr, etc. Bref, 99% des sites sur lesquels j&#8217;ai l&#8217;habitude d&#8217;aller ne passent pas.</p>
<p>Petite réflexion personnelle : que l&#8217;on aime ou pas IPv6 et j&#8217;ai mon avis sur la question&#8230; le jour où l&#8217;on pourra abandonner IPv4 est encore bien loin. Quand on voit comment les FAI traînent les pieds pour fournir de l&#8217;IPv6 décent (natif avec au moins un /48), la faible proportion de ressources disponibles sur internet en IPv6 et la pénurie approchante d&#8217;adresses IPv4, on se dit que le futur va devenir assez hilarant.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brimbelle.org/index.php/2009/02/21/ipv6-for-fun-without-profit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Port d&#8217;ioquake3 1.35 sous OpenBSD</title>
		<link>http://blog.brimbelle.org/index.php/2008/11/17/port-dioquake3-135-sous-openbsd/</link>
		<comments>http://blog.brimbelle.org/index.php/2008/11/17/port-dioquake3-135-sous-openbsd/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 00:13:25 +0000</pubDate>
		<dc:creator>mattieu</dc:creator>
				<category><![CDATA[Geekage]]></category>
		<category><![CDATA[ioquake3]]></category>
		<category><![CDATA[openbsd]]></category>
		<category><![CDATA[port]]></category>

		<guid isPermaLink="false">http://blog.brimbelle.org/?p=23</guid>
		<description><![CDATA[Pour ceux qui suivent OpenBSD-current et la prise en charge de l&#8217;accélération graphique matérielle, voici le port d&#8217;ioquake3, le moteur libre et largement amélioré du jeu Quake III Arena. Il est basé sur le port déjà existant d&#8217;OpenArena, mais comme je préfère le &#171;&#160;vrai&#160;&#187; ioquake3, j&#8217;ai fait un port séparé. La version d&#8217;ioquake3 est un [...]]]></description>
			<content:encoded><![CDATA[<p>Pour ceux qui suivent <a href="http://www.openbsd.org/">OpenBSD</a>-current et la prise en charge de l&#8217;<a href="http://www.undeadly.org/cgi?action=article&#038;sid=20081029164221">accélération graphique matérielle</a>, voici le port d&#8217;<a href="http://ioquake3.org/">ioquake3</a>, le moteur libre et largement amélioré du jeu Quake III Arena.</p>
<p>Il est basé sur le port déjà existant d&#8217;<a href="http://openarena.ws/">OpenArena</a>, mais comme je préfère le &laquo;&nbsp;vrai&nbsp;&raquo; ioquake3, j&#8217;ai fait un port séparé. La version d&#8217;ioquake3 est un checkout du svn officiel du 16 novembre 2008.</p>
<p><span id="more-23"></span></p>
<p>Pour jouer, il faut le CD officiel avec le pak0.pk3 ainsi que la point release 1.32 contenant les pak[1-8].pk3. Il faut placer ces fichiers soit dans <code>$HOME/.q3a/baseq3</code>, soit dans <code>/var/local/share/ioquake3/baseq3</code>.</p>
<p>Le port est disponible <a href="http://www.brimbelle.org/mattieu/stuff/ioquake3-port-20081116.tar.gz">ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brimbelle.org/index.php/2008/11/17/port-dioquake3-135-sous-openbsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exposition Alpine sur les Champs-Elysées</title>
		<link>http://blog.brimbelle.org/index.php/2008/03/09/exposition-alpine-sur-les-champs-elysees/</link>
		<comments>http://blog.brimbelle.org/index.php/2008/03/09/exposition-alpine-sur-les-champs-elysees/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 22:38:50 +0000</pubDate>
		<dc:creator>mattieu</dc:creator>
				<category><![CDATA[Perso]]></category>
		<category><![CDATA[A110]]></category>
		<category><![CDATA[A442B]]></category>
		<category><![CDATA[Alpine]]></category>
		<category><![CDATA[Berlinette]]></category>
		<category><![CDATA[Champs-Elysées]]></category>
		<category><![CDATA[F2]]></category>
		<category><![CDATA[Formule]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[Renault]]></category>

		<guid isPermaLink="false">http://blog.brimbelle.org/index.php/2008/03/09/exposition-alpine-sur-les-champs-elysees/</guid>
		<description><![CDATA[Après un long moment sans activité sur mon blog suite à mon déménagement sur Paris, voici quelques belles photos de l&#8217;exposition Alpine située à l&#8217;Atelier Renault sur les Champs-Elysées. Cette exposition intéressante propose les modèles les plus mythiques de la marque française, comme cette A442 B qui remporta les 24H du Mans en 1978 avec [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.brimbelle.org/wp-content/uploads/1978_Alpine_A442_B.JPG" onclick="ps_imagemanager_popup(this.href,'1978_Alpine_A442_B.JPG','1280','1024');return false" onfocus="this.blur()" rel="lightbox[22]"><img src="http://blog.brimbelle.org/wp-content/uploads/.thumbs/.1978_Alpine_A442_B.JPG" alt="1978_Alpine_A442_B.JPG" title="1978_Alpine_A442_B.JPG" align="left" border="0" height="77" hspace="10" width="96" /></a>Après un long moment sans activité sur mon blog suite à mon déménagement sur Paris, voici quelques belles photos de l&#8217;exposition Alpine située à l&#8217;Atelier Renault sur les Champs-Elysées. Cette exposition intéressante propose les modèles les plus mythiques de la marque française, comme cette A442 B qui remporta les 24H du Mans en 1978 avec l&#8217;équipage Jaussaud/Pironi.</p>
<p><span id="more-22"></span></p>
<p><a href="http://blog.brimbelle.org/wp-content/uploads/1973_Alpine_Berlinette_A110.JPG" onclick="ps_imagemanager_popup(this.href,'1973_Alpine_Berlinette_A110.JPG','1280','1024');return false" onfocus="this.blur()" rel="lightbox[22]"><img src="http://blog.brimbelle.org/wp-content/uploads/.thumbs/.1973_Alpine_Berlinette_A110.JPG" alt="1973_Alpine_Berlinette_A110.JPG" title="1973_Alpine_Berlinette_A110.JPG" align="right" border="0" height="77" hspace="10" width="96" /></a></p>
<p>On peut également y observer cette Berlinette A110 qui fut championne du monde des rallyes en 1973, et remporta tous les rallyes en son temps dont de très nombreuses éditions du Rallye Monte Carlo.</p>
<p>D&#8217;autres modèles qui furent l&#8217;histoire de la marque sont présents comme respectivement cette Formule Renault A366 ou cette Formule 2.</p>
<p align="center"><a href="http://blog.brimbelle.org/wp-content/uploads/Alpine_A366.JPG" onclick="ps_imagemanager_popup(this.href,'Alpine_A366.JPG','1280','1024');return false" onfocus="this.blur()" rel="lightbox[22]"><img src="http://blog.brimbelle.org/wp-content/uploads/.thumbs/.Alpine_A366.JPG" alt="Alpine_A366.JPG" title="Alpine_A366.JPG" align="bottom" border="0" height="77" hspace="10" width="96" /></a><a href="http://blog.brimbelle.org/wp-content/uploads/Alpine_Formule2.JPG" onclick="ps_imagemanager_popup(this.href,'Alpine_Formule2.JPG','1280','1024');return false" onfocus="this.blur()" rel="lightbox[22]"><img src="http://blog.brimbelle.org/wp-content/uploads/.thumbs/.Alpine_Formule2.JPG" alt="Alpine_Formule2.JPG" title="Alpine_Formule2.JPG" align="bottom" border="0" height="77" hspace="10" width="96" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.brimbelle.org/index.php/2008/03/09/exposition-alpine-sur-les-champs-elysees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

