<?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>Le blog à Nono &#187; Linux</title>
	<atom:link href="http://blogs.glou.org/arnaud/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.glou.org/arnaud</link>
	<description>C'est l'histoire d'un geek...</description>
	<lastBuildDate>Sat, 04 Feb 2012 15:46:24 +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>Nouvel article : Plague</title>
		<link>http://blogs.glou.org/arnaud/2012/02/04/nouvel-article-plague/</link>
		<comments>http://blogs.glou.org/arnaud/2012/02/04/nouvel-article-plague/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 15:46:24 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[article]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Plague]]></category>
		<category><![CDATA[RPM]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=435</guid>
		<description><![CDATA[Ça fait un bon moment que je devais le publier ici-même : mon article sur Plague initialement publié dans GNU/Linux Magazine France est en ligne.]]></description>
			<content:encoded><![CDATA[<p>Ça fait un bon moment que je devais le publier ici-même : mon <a title="Plague : une infrastructure de fabrication de paquets RPM" href="http://blogs.glou.org/arnaud/plague-une-infrastructure-de-fabrication-de-paquets-rpm/">article sur Plague</a> initialement publié dans GNU/Linux Magazine France est en ligne.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2012/02/04/nouvel-article-plague/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Déplacer une VM KVM «à la main»</title>
		<link>http://blogs.glou.org/arnaud/2012/01/18/deplacer-une-vm-kvm-a-la-main/</link>
		<comments>http://blogs.glou.org/arnaud/2012/01/18/deplacer-une-vm-kvm-a-la-main/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 12:12:37 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LVM]]></category>
		<category><![CDATA[stockage]]></category>
		<category><![CDATA[virtualisation]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=412</guid>
		<description><![CDATA[Le contexte J&#8217;ai une petite ferme de serveurs physiques sous Scientific Linux 6 qui hébergent des machines virtuelles KVM gérées par libvirt. J&#8217;utilise des volumes logiques LVM comme disques virtuels. La plupart des VM ne sont pas critiques et supportent d&#8217;être arrêtées quelques minutes; par contre il vaut mieux ne pas les arrêter trop longtemps. [...]]]></description>
			<content:encoded><![CDATA[<h1>Le contexte</h1>
<p>J&#8217;ai une petite ferme de serveurs physiques sous <a href="http://scientificlinux.org/">Scientific Linux</a> 6 qui hébergent des machines virtuelles KVM gérées par <a href="http://www.libvirt.org/">libvirt</a>. J&#8217;utilise des volumes logiques LVM comme disques virtuels.</p>
<p>La plupart des VM ne sont pas critiques et supportent d&#8217;être arrêtées quelques minutes; par contre il vaut mieux ne pas les arrêter trop longtemps. Tout le problème est donc de recopier au moins le gros des données sans arrêter la VM.</p>
<p>Pour l&#8217;exemple, je déplacerai une VM <em>vm1</em>, dont le disque virtuel est sur <em>/dev/vg00/vm1</em>, de la machine physique <em>host1</em> à sa soeur <em>host2</em>. On supposera pour l&#8217;exemple que les deux machines sont identiques; en tout cas il vaut mieux qu&#8217;elles disposent de la même version du paquet <em>qemu-kvm</em>. Et quand je dis la même version c&#8217;est la même version au patch près, sinon la VM risque de ne pas démarrer sur le nouvel hôte.</p>
<h1>L&#8217;outil</h1>
<p>Je sais faire la même manip avec des isolateurs à la place des VM: un coup de rsync et c&#8217;est marre. Ah, si rsync savait se débrouiller à peu près efficacement avec un périphérique bloc&#8230; Et ben ça existe, ça s&#8217;appelle <a href="https://github.com/mpalmer/lvmsync">lvmsync</a>, c&#8217;est un script ruby qu&#8217;il suffit de poser sur les deux machines hôtes. En dehors de ça, vous aurez besoin de dmsetup (normalement il est installé, il fait partie du paquet <em>device-mapper</em> qui est lui-même une dépendance de <em>libvirt</em>) et root devra pouvoir se connecter en ssh sur <em>host2</em> depuis <em>host1</em>.</p>
<h1>La méthode</h1>
<p>On commence par créer le volume logique sur <em>host2</em>:</p>
<pre>lvcreate -l640 -nvm1 vg00</pre>
<p>À adapter évidemment, il doit être identique à l&#8217;original qui se trouve sur <em>host1</em>.</p>
<p>Ensuite, sur <em>host1</em>, on prend un instantané du disque de la VM et on le copie sur <em>host2</em>:</p>
<pre>lvcreate -L10G -s -nvm1-snap /dev/vg00/vm1
dd if=/dev/vg00/vm1-snap bs=10M | ssh root@host2 dd of=/dev/vg00/vm1 bs=10M</pre>
<p>On peut maintenant éteindre la VM, puis synchroniser le disque. Ensuite on exporte la configuration de la VM.</p>
<pre>virsh shutdown vm1
lvmsync /dev/vg00/vm1-snap host2:/dev/vg00/vm1
virsh dumpxml vm1 | ssh root@host2 'cat &gt; /var/tmp/vm1.xml'</pre>
<p>Reste plus, sur <em>host2</em>, qu&#8217;à importer et démarrer la VM:</p>
<pre>virsh define /var/tmp/vm1.xml
virsh start vm1</pre>
<p>Une fois que c&#8217;est fait, on peut faire le ménage sur <em>host1</em>:</p>
<pre>virsh undefine vm1
lvremove /dev/vg00/vm1-snap
lvremove /dev/vg00/vm1</pre>
<h1>C&#8217;est prêt!</h1>
<p>Et ça va quand même vachement plus vite comme ça. Maintenant, il va falloir écrire un bout de script pour emballer tout ça, on verra ça un autre jour. <img src='http://blogs.glou.org/arnaud/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2012/01/18/deplacer-une-vm-kvm-a-la-main/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrer une VM de Xen vers KVM</title>
		<link>http://blogs.glou.org/arnaud/2012/01/17/migrer-une-vm-de-xen-vers-kvm/</link>
		<comments>http://blogs.glou.org/arnaud/2012/01/17/migrer-une-vm-de-xen-vers-kvm/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 14:12:18 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[KVM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[virtualisation]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=398</guid>
		<description><![CDATA[Un petit aide-mémoire sur la migration d&#8217;une machine virtuelle Linux de Xen (sur CentOS 5.x, mais ça ne doit pas jouer énormément) vers KVM (sur Scientific Linux 6.x, donc avec libvirt). L&#8217;essentiel de ce qui suit vient de cette page. Préparation de la machine virtuelle J&#8217;ai donc une VM Xen, appelons-la testxen1 (parce que c&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<p>Un petit aide-mémoire sur la migration d&#8217;une machine virtuelle Linux de Xen (sur CentOS 5.x, mais ça ne doit pas jouer énormément) vers KVM (sur Scientific Linux 6.x, donc avec <em>libvirt</em>). L&#8217;essentiel de ce qui suit vient de <a href="http://sativouf.blogspot.com/2010/02/xen-to-kvm-migration.html">cette page</a>.</p>
<h1>Préparation de la machine virtuelle</h1>
<p>J&#8217;ai donc une VM Xen, appelons-la <em>testxen1</em> (parce que c&#8217;est son nom), qui tourne sur l&#8217;ancien serveur. L&#8217;OS installé sur la VM est un CentOS 5. Sur cette machine virtuelle (qui tourne encore):</p>
<ul>
<li>éditer <em>/etc/inittab</em>, enlever le <em>getty(8)</em> qui tourne sur la console Xen et décommenter ceux des terminaux virtuels habituels;</li>
<li>installer un noyau Linux «normal» (pas un noyau Xen);</li>
<li>éditer <em>/etc/fstab</em> et remplacer les disques virtuels Xen (<em>xvda</em>, <em>xvdb</em> et ainsi de suite) par des disques IDE (<em>hda</em>, <em>hdb</em>&#8230;). NB: pas évident que cette étape soit partout la même, ça dépend peut-être de la version du noyau; à tester.</li>
<li>enlever le paramètre <em>console=xvc0</em> du nouveau noyau dans <em>/boot/grub/menu.lst</em>, et s&#8217;assurer que le nouveau noyau est bien sélectionné par défaut;</li>
<li>installer grub:</li>
</ul>
<pre>[root@testxen1 ~]# grub
Probing devices to guess BIOS drives. This may take a long time.

    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]
grub&gt; device (hd0) /dev/xvda
device (hd0) /dev/xvda
grub&gt; root (hd0,0)
root (hd0,0)
 Filesystem type is ext2fs, partition type 0x83
grub&gt; setup (hd0)
setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  15 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded
Done.
grub&gt; quit
quit</pre>
<p>C&#8217;est fini pour la machine virtuelle, on peut maintenant l&#8217;arrêter.</p>
<h1>Sur la nouvelle machine physique</h1>
<p>On commence, bien sûr, par copier l&#8217;ancien (ou les anciens) disque(s) virtuel(s) sur la nouvelle machine. Dans mon cas, il s&#8217;agit de volumes logiques LVM, on fait bêtement ça à grands coups de <em>dd(1)</em>. Reste juste à créer la nouvelle VM:</p>
<pre>virt-install --connect qemu:///system -n testxen1 -r 1024 --vcpus=1 \
 --disk /dev/vg00/testxen1 --vnc --os-type linux --accelerate \
 --network=bridge=br102,model=virtio,mac=12:00:02:e3:00:01 \
 --noreboot --keymap us --import</pre>
<p>Quelques notes en vrac:</p>
<ul>
<li>bien évidemment, remplacer le nom de la machine (ici <em>testxen1</em>) par ce qu&#8217;on veut;</li>
<li>idem pour la mémoire (option <em>-r</em>) et le nombre de processeurs (option <em>&#8211;vcpus</em>);</li>
<li>dans le cas où on a plusieurs disques virtuels, on peut répéter plusieurs fois l&#8217;option <em>&#8211;disk</em>, avec le disque de démarrage en premier;</li>
<li>pour l&#8217;option <em>&#8211;network</em>, replacer <em>br102</em> par le nom du pont réseau qui va bien (si vous avez une config réseau différente, va falloir chercher <img src='http://blogs.glou.org/arnaud/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ) et bien entendu l&#8217;adresse MAC par la bonne valeur.</li>
</ul>
<p>Voilà, vous allez voir démarrer votre nouvelle VM sous vos yeux zébahis. Elle est pas belle, la vie? <img src='http://blogs.glou.org/arnaud/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2012/01/17/migrer-une-vm-de-xen-vers-kvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>S&#8217;il te plaît, dessine-moi un cluster !</title>
		<link>http://blogs.glou.org/arnaud/2009/10/16/sil-te-plait-dessine-moi-un-cluster%c2%a0/</link>
		<comments>http://blogs.glou.org/arnaud/2009/10/16/sil-te-plait-dessine-moi-un-cluster%c2%a0/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 22:14:25 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[heartbeat]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[openais]]></category>
		<category><![CDATA[pacemaker]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=157</guid>
		<description><![CDATA[Juste un petit lien vers une doc Linux-HA que je trouve au premier abord claire et bien foutue : celle de Novell/SuSE. Claire et bien foutue, ça veut surtout dire que j&#8217;ai à peu près compris ce qu&#8217;il y a dedans, ce qui n&#8217;est pas forcément le cas de celles que j&#8217;avais pratiquées jusqu&#8217;alors.]]></description>
			<content:encoded><![CDATA[<p>Juste un petit lien vers une doc Linux-HA que je trouve au premier abord claire et bien foutue : <a href="http://www.novell.com/documentation/sle_ha/book_sleha/?page=/documentation/sle_ha/book_sleha/data/book_sleha.html">celle de Novell/SuSE</a>. Claire et bien foutue, ça veut surtout dire que j&#8217;ai à peu près compris ce qu&#8217;il y a dedans, ce qui n&#8217;est pas forcément le cas de celles que j&#8217;avais pratiquées jusqu&#8217;alors.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2009/10/16/sil-te-plait-dessine-moi-un-cluster%c2%a0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transformer un NAS NeutralNAS NE52PRO en Thecus N5200PRO</title>
		<link>http://blogs.glou.org/arnaud/2009/01/08/transformer-un-nas-neutralnas-ne52pro-en-thecus-n5200pro/</link>
		<comments>http://blogs.glou.org/arnaud/2009/01/08/transformer-un-nas-neutralnas-ne52pro-en-thecus-n5200pro/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 13:45:21 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[Thecus]]></category>

		<guid isPermaLink="false">http://blogs.glou.org/arnaud/?p=32</guid>
		<description><![CDATA[Transtec nous a envoyé un N5200PRO avec un firmware modifié qui s&#8217;identifiait comme un NeutralNAS NE52PRO. Du coup, les modules refusent de s&#8217;installer parce que « c&#8217;est pas la bonne machine ». Pour contourner, il faut modifier les modules SYSUSER et SSHD pour qu&#8217;ils acceptent de s&#8217;installer ; ça veut dire passer les patches suivants [...]]]></description>
			<content:encoded><![CDATA[<p>Transtec nous a envoyé un N5200PRO avec un firmware modifié qui s&#8217;identifiait comme un NeutralNAS NE52PRO. Du coup, les modules refusent de s&#8217;installer parce que « c&#8217;est pas la bonne machine ».</p>
<p>Pour contourner, il faut modifier les modules <em>SYSUSER</em> et <em>SSHD</em> pour qu&#8217;ils acceptent de s&#8217;installer ; ça veut dire passer les patches suivants et les recompiler :</p>
<pre>diff -urN N5200_SYSUSER_2.00.02/SYSUSER/Configure/install.rdf N5200_SYSUSER_2.00.02.ne52pro/SYSUSER/Configure/install.rdf
--- N5200_SYSUSER_2.00.02/SYSUSER/Configure/install.rdf 2007-01-31 18:11:44.000000000 +0100
+++ N5200_SYSUSER_2.00.02.ne52pro/SYSUSER/Configure/install.rdf 2009-01-08 14:17:40.846560965 +0100
@@ -18,8 +18,8 @@
                &lt;md:UI&gt;Thecus&lt;/md:UI&gt;
        &lt;/md:Install&gt;
        &lt;md:NAS&gt;
-               &lt;md:TargetNas&gt;Thecus&lt;/md:TargetNas&gt;
-               &lt;md:NasType&gt;n5200&lt;/md:NasType&gt;
+               &lt;md:TargetNas&gt;&lt;/md:TargetNas&gt;
+               &lt;md:NasType&gt;NE52&lt;/md:NasType&gt;
                &lt;md:NasVersion&gt;1.00.06.5&lt;/md:NasVersion&gt;
        &lt;/md:NAS&gt;
 &lt;/rdf:RDF&gt;</pre>
<pre>diff -urN N5200_SSHD_2.00.00/SSHD/Configure/install.rdf N5200_SSHD_2.00.00.ne52pro/SSHD/Configure/install.rdf
--- N5200_SSHD_2.00.00/SSHD/Configure/install.rdf       2007-01-17 18:17:57.000000000 +0100
+++ N5200_SSHD_2.00.00.ne52pro/SSHD/Configure/install.rdf       2009-01-08 14:18:15.080559781 +0100
@@ -18,8 +18,8 @@
                &lt;md:UI&gt;Thecus&lt;/md:UI&gt;
        &lt;/md:Install&gt;
        &lt;md:NAS&gt;
-               &lt;md:TargetNas&gt;Thecus&lt;/md:TargetNas&gt;
-               &lt;md:NasType&gt;n5200&lt;/md:NasType&gt;
+               &lt;md:TargetNas&gt;&lt;/md:TargetNas&gt;
+               &lt;md:NasType&gt;NE52&lt;/md:NasType&gt;
                &lt;md:NasVersion&gt;1.00.06.5&lt;/md:NasVersion&gt;
        &lt;/md:NAS&gt;
 &lt;/rdf:RDF&gt;</pre>
<p>Les modules acceptent maintenant de s&#8217;installer ; une fois que c&#8217;est fait, on peut se connecter en ssh sur la machine et modifier le fichier <em>/app/manifest.txt</em>. Il doit ressembler à ça :</p>
<pre>type    n5200
producer        THECUS</pre>
<p>Voilà, la boîboîte est maintenant une « vraie » Thecus N5200PRO. On peut maintenant mettre le firmware à jour et tout marche comme il faut.</p>
<p>Les modules et les firmwares sont téléchargeables depuis <a title="le wiki Thecus" href="http://onbeat.dk/thecus/index.php/N5200_Resources">le wiki Thecus</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2009/01/08/transformer-un-nas-neutralnas-ne52pro-en-thecus-n5200pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPv6 à la maison</title>
		<link>http://blogs.glou.org/arnaud/2009/01/08/ipv6-a-la-maison/</link>
		<comments>http://blogs.glou.org/arnaud/2009/01/08/ipv6-a-la-maison/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 23:20:27 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[ADSL]]></category>
		<category><![CDATA[FDN]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.glou.org/~arnaud/wp/?p=18</guid>
		<description><![CDATA[FDN propose depuis peu une connectivité IPv6 à ses abonnés. Voilà comment ça se configure sur un routeur sous Debian. Bien entendu, les adresses IP (v4 comme v6) mentionnées ici sont les miennes, il conviendra de les adapter. Le point de départ Un PC x86 sous Debian Etch tout ce qu&#8217;il y a de plus [...]]]></description>
			<content:encoded><![CDATA[<p>FDN propose depuis peu une connectivité IPv6 à ses abonnés. Voilà comment ça se configure sur un routeur sous Debian.  Bien entendu, les adresses IP (v4 comme v6) mentionnées ici sont les miennes, il conviendra de les adapter.</p>
<h1>Le point de départ</h1>
<p>Un PC x86 sous Debian Etch tout ce qu&#8217;il y a de plus banal. Il possède 2 interfaces ethernet (<em>eth0</em> vers le réseau local et <em>eth1</em> vers le modem ADSL) ; une interface virtuelle <em>dummy0</em> est configurée en plus pour garder l&#8217;adresse IPv4 publique accessible même quand le lien PPP est tombé.</p>
<h1>Le fichier interfaces</h1>
<p>Le fichier <em>/etc/network/interfaces</em> contient la configuration des interfaces réseau de la machine, hors PPP. On lui ajoute, pour chaque interface concernée, une section IPv6. On peut en profiter pour forcer le lancement de <em>radvd</em> (cf plus loin) quand on monte une interface ethernet (la directive <em>up</em>). Au final, il ressemble à ça :</p>
<pre>auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.168.62.252
        netmask 255.255.255.0
        network 192.168.62.0
        broadcast 192.168.62.255
iface eth0 inet6 static
        address 2001:910:1021::1
        netmask 64
        up /etc/init.d/radvd restart

auto eth1
iface eth1 inet static
        address 10.0.0.2
        netmask 255.255.255.0
        network 10.0.0.0
        broadcast 10.0.0.255

auto dummy0
iface dummy0 inet static
        address 80.67.176.33
        netmask 255.255.255.255
        network 80.67.176.33
        broadcast 80.67.176.33
iface dummy0 inet6 static
        address 2001:910:1021:1::1
        netmask 64</pre>
<p>L&#8217;adresse 80.67.176.33 est mon IP fixe publique. Les adresses IPv6 sont prises dans le sous-réseau /48 attribué par FDN ; chaque interface reçoit un /64.</p>
<h1>radvd</h1>
<p>Le démon <em>radvd</em> sert aux routeurs IPv6 à annoncer les préfixes locaux et un minimum de données de routage sur les différentes interfaces ethernet de la machine. Charge ensuite aux autres machines du réseau local d&#8217;ajuster leur configuration pour que « ça marche tout seul ». Sa configuration se trouve dans le fichier <em>/etc/radvd.conf</em> ; chez moi, il ressemble à ça :</p>
<pre>interface eth0 {
        AdvSendAdvert on;
        prefix 2001:910:1021:0::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
        };
};
</pre>
<h1>La configuration PPP</h1>
<p>Tout d&#8217;abord il faut ajouter les deux lignes suivantes au fichier de configuration de ppp (<em>/etc/ppp/peers/fdn</em> chez moi, mais ça dépend de votre config) :</p>
<pre>ipv6 ,
ipparam fdn</pre>
<p>La première ligne force <em>pppd</em> a négocier une adresse IPv6. Il s&#8217;agira probablement d&#8217;une adresse lien-local, mais peu importe, elle servira simplement à notre machine pour dialoguer avec l&#8217;équipement de FDN.  La deuxième ligne est un paramètre qui sera passé en 6ème position au script <em>/etc/ppp/ipv6-up</em>, qui va lui-même le transmettre à ses collègues du répertoire <em>/etc/ppp/ipv6-up.d</em> sous le doux nom de <em>PPP_IPPARAM</em>. Vous voyez où je veux en venir ? Il suffit maintenant de poser un script <em>/etc/ppp/ipv6-up.d/00defaultroute</em> dont le contenu sera le suivant :</p>
<pre>#!/bin/sh

if [ "$PPP_IPPARAM" = "fdn" ];
then
    /sbin/ip -f inet6 route del ::/0
    /sbin/ip -f inet6 route add ::/0 dev $PPP_IFACE
fi</pre>
<p>Ne pas oublier de le rendre exécutable, et c&#8217;est gagné, on a une route par défaut.</p>
<h1>Le routage</h1>
<p>Maintenant, c&#8217;est la partie facile avec des petits détails à ne pas oublier. D&#8217;abord autoriser le routage IPv6 ; ça se passe dans le fichier <em>/etc/sysctl.conf</em> auquel on ajoute une ligne :</p>
<pre>net.ipv6.conf.all.forwarding=1</pre>
<p>On peut l&#8217;activer immédiatement au moyen de la commande suivante :</p>
<pre>sysctl -w net.ipv6.conf.all.forwarding=1</pre>
<p>Ensuite le firewall ; sur les noyaux Linux récents (par exemple le noyau 2.6.24-etchnhalf de Debian Etch), ça marche exactement comme en IPv4, il suffit de remplacer la commande <em>iptables</em> par <em>ip6tables</em>. Un exemple minimaliste :</p>
<pre>#!/bin/sh

ip6tbl=/sbin/ip6tables

echo -n "Setting up IPv6 filter: "

/sbin/sysctl -w net.ipv6.conf.all.forwarding=0

$ip6tbl -F
$ip6tbl -X

$ip6tbl -P INPUT DROP
$ip6tbl -P OUTPUT ACCEPT
$ip6tbl -P FORWARD DROP

# conntrack
$ip6tbl -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ip6tbl -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

######################################################
#### local
# icmp, aucazou
$ip6tbl -A INPUT --protocol icmpv6 -j ACCEPT --match limit --limit 30/minute

# services locaux
$ip6tbl -A INPUT -p tcp --dport 22 -j ACCEPT
$ip6tbl -A INPUT -p tcp --dport 25 -j ACCEPT
$ip6tbl -A INPUT -p tcp --dport 53 -j ACCEPT
$ip6tbl -A INPUT -p udp --dport 53 -j ACCEPT
$ip6tbl -A INPUT -p tcp --dport 80 -j ACCEPT

######################################################
#### reseau interne
# on peut sortir
$ip6tbl -A FORWARD -i eth0 -o ppp+ -j ACCEPT

# ping
$ip6tbl -A FORWARD -p icmpv6 -j ACCEPT
# ssh vers les machines internes
$ip6tbl -A FORWARD -p tcp --dport 22 -j ACCEPT

/sbin/sysctl -w net.ipv6.conf.all.forwarding=1

echo "done."</pre>
<p>À adapter à vos besoins bien entendu.  Voilà, c&#8217;est prêt ! Reste à trouver ce qu&#8217;on va faire de 65534 autres sous-réseaux. <img src='http://blogs.glou.org/arnaud/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2009/01/08/ipv6-a-la-maison/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet pour les nuls</title>
		<link>http://blogs.glou.org/arnaud/2008/09/22/puppet-pour-les-nuls/</link>
		<comments>http://blogs.glou.org/arnaud/2008/09/22/puppet-pour-les-nuls/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 13:11:49 +0000</pubDate>
		<dc:creator>nono</dc:creator>
				<category><![CDATA[geekeries]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[système]]></category>

		<guid isPermaLink="false">http://www.glou.org/~arnaud/wp/?p=5</guid>
		<description><![CDATA[Après quelques temps à m&#8217;intéresser à Puppet, j&#8217;ai finalement décidé de sauter le pas et de commencer à le déployer pour remplacer notre architecture cfengine dont on commence à toucher les limites. Après avoir passé pas mal de temps à potasser la doc et à demander plein de trucs à Google, voici donc les quelques [...]]]></description>
			<content:encoded><![CDATA[<p>Après quelques temps à m&#8217;intéresser à <a href="http://puppet.reductivelabs.com/" target="_parent">Puppet</a>, j&#8217;ai finalement décidé de sauter le pas et de commencer à le déployer pour remplacer notre architecture <a href="http://www.cfengine.org/" target="_parent">cfengine</a> dont on commence à toucher les limites.</p>
<p>Après avoir passé pas mal de temps à potasser la doc et à demander plein de trucs à Google, voici donc les quelques points qui m&#8217;ont posé problème. Attention, tout ceci concerne une infrastructure à base de CentOS 4 et 5, avec le serveur sous CentOS 5. Puppet lui-même est installé depuis <a href="http://fedoraproject.org/wiki/EPEL" target="_parent">EPEL</a>.</p>
<h2>Organisation</h2>
<p>Dans le fichier <em>site.pp</em>, on définit juste des classes « conteneurs » comme suit :</p>
<pre>class lamp {
  include php
  include mysql
}</pre>
<p>Les autres classes sont définies dans des fichiers à part (<em>php</em> dans <em>classes/php.pp</em> et ainsi de suite). Ça, c&#8217;est une convention plus qu&#8217;autre chose mais en pratique ça aide à avoir les idées claires.</p>
<h2>LDAP</h2>
<p>J&#8217;utilise <a href="http://reductivelabs.com/trac/puppet/wiki/LDAPNodes" target="_parent">LDAP</a> pour stocker les infos relatives aux clients. Pour que ça fonctionne, il faut :</p>
<ul>
<li>installer <em>ruby-ldap</em> sur le serveur</li>
<li>ajouter, toujours sur le serveur, un fichier <em>/etc/puppet/puppetmasterd.conf</em> avec le contenu suivant :</li>
</ul>
<pre>[main]
    vardir = /var/lib/puppet
    logdir = /var/log/puppet
    rundir = /var/run/puppet
    ssldir = $vardir/ssl

[puppermasterd]
    node_terminus = ldap
    ldapserver = ldap.ircam.fr
    ldapbase = ou=Hosts,dc=ircam,dc=fr</pre>
<p>Pour les clients, tout se passe dans l&#8217;annuaire lui-même : on leur ajoute la classe <em>puppetClient</em> et un champ <em>puppetclass</em> qui contient la liste des classes.</p>
<pre>dn: cn=system.ircam.fr,ou=virtuels,ou=Hosts,dc=ircam,dc=fr
puppetclass: lamp</pre>
<p>Pour le moment, le noeud <em>default</em> est encore en dur dans <em>site.pp</em>, ça râle dans les logs de <em>puppetmasterd</em>, il faudra le pousser dans LDAP un jour ou l&#8217;autre.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.glou.org/arnaud/2008/09/22/puppet-pour-les-nuls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

