Le blog de DjuUn peu de moto, un zeste de geek, et un brin d'autres trucs ;-)2024-03-22T17:50:26+01:00Djuurn:md5:5e61426dd704534f4aef077f5b82260bDotclearDechiffrement d'un volume LUKS à distance sous Debianurn:md5:d99229ca606b74c55f8ca6fe2546c7d52023-09-03T21:05:00+02:002023-09-05T09:38:03+02:00DjuServeurdebiandropbearluksssh <p><img src="https://blog.crifo.org/public/2023/.encrypt_t.jpg" alt="" style="float:left; margin: 0 1em 1em 0;" /></p>
<p>Quand on a un serveur sous debian, avec le disque chiffré grâce à LUKS, il faut avoir un écran/clavier pour taper le mot de passe au boot.<br />
Pas très pratique pour un serveur !</p>
<p>Mais une solution existe pour cela: le paquet dropbear-initramfs.</p>
<p>Il va faire en sorte que lorsque la machine démarre, dropbear (un serveur ssh très light) soit lancé, car intégré dans l'initramfs.<br />
Ce qui va nous permettre de s'y connecter en SSH (avec authentification par clé), rentrer le mot de passe pour déchiffrement, et qu'au final le système démarre <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p>Et comme je fais cela souvent, il m'arrive d'oublier une étape, en voici dont la liste :p</p>
<p>Pour ce faire, 5 étapes:</p>
<ol>
<li>installer dropbear</li>
<li>configurer l'authentification</li>
<li>configurer dropbear</li>
<li>configurer l'initramfs</li>
<li>désactiver dropbear pour que ssh se lancer normalement après</li>
</ol>
<p>1/ installation</p>
<p>on l'installe simplement en une commande :</p>
<pre>apt install dropbear dropbear-initramfs</pre>
<p>2/ Authentification</p>
<p>Afin de s'authentifer par clé, on créé le fichier <strong>/etc/dropbear/initramfs/authorized_keys</strong>, dans lequel on inscrit notre clé publique (généralement dans ~/.ssh/id_rsa.pub)</p>
<p>3/ Configuration de dropbear</p>
<p>On édite le fichier <strong>/etc/dropbear/initramfs/dropbear.conf</strong> et on décommente la ligne DROPBEAR_OPTIONS.<br />
Et on indique les options entre guillemets. au final, la ligne doit ressembler à ceci:</p>
<pre>
DROPBEAR_OPTIONS="-RFEsjk -c /bin/cryptroot-unlock"
</pre>
<p>ces options permettent pluisieurs choses, notemment de ne pas mettre dropbear en background, et qu'il affiche ce qui se passe à l'écran (dans stderr), de désactiver l'authentification par password, et le port forwarding.<br />
Enfin et surtout la derniere option permet de demander directemnet le mot de passe LUKS, sans qu'on aie accès à un shell busybox <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>
<p>4/ Configuration de l'initramfs</p>
<p>Dropbear étant maintenant configuré, on passe à l'initramfs.<br />
On édite pour cela le fichier <strong>/etc/initramfs-tools/initramfs.conf</strong>, et on rajoute une ligne à la fin</p>
<pre>
IP=192.168.30.27::192.168.30.1:255.255.255.0::eth0:off
</pre>
<p>ici on indique que l'initramfs doit monter l'interface réseau eth0 avec l'ip 192.168.30.27; une gateway en 192.168.30.1 et un netmask à 255.255.255.0.<br />
Cette partie est tres importante, car sans elle la machine n'aura pas de réseau à ce stade du démarrage.</p>
<p>Enfin, on met à jour l'initramfs:</p>
<pre>
update-initramfs -u
</pre>
<p>5/ Désactivation de dropbear</p>
<p>Finalement, on désactive dropbear pour qu'il ne se lance pas au démarrage. il doit etre lancé uniquement pendant la phase de l'initramfs, et doit se désactiver après.<br />
Sans quoi, sshd ne pourra pas démarrer <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p>Si vous utilisez systemd:</p>
<pre>systemctl disable dropbear.service</pre>
<p>Si vous utilisez sysvinit:</p>
<pre>update-rc.d -f dropbear remove</pre>
<p>Et voila, c'est terminé. <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p>Désormais, lorsque la machine démarrera, vous pourrez toujours taper votre mot de passer au clavier si besoin, mais vous pourrez surtout vous y connecter en ssh, et une fois identifié, un prompt vous sera proposé pour taper votre mot de passe LUKS.</p>https://blog.crifo.org/post/2023/09/03/Dechiffrement-d-un-volume-LUKS-a-distance-sous-debian#comment-formhttps://blog.crifo.org/feed/atom/comments/99Afficher son ip avec nginxurn:md5:c91ccd113c55c806d3cd8cc461b325ec2015-08-13T19:02:00+02:002015-08-13T19:02:00+02:00DjuSiteipnginx <p><img src="https://blog.crifo.org/public/201001/Nginx/.nginx_thumb_t.jpg" alt="nginx_thumb.jpg" style="float:left; margin: 0 1em 1em 0;" title="nginx_thumb.jpg, janv. 2010" />
<br />
Comment afficher très simplement son ip avec *juste* nginx, sans php ou autre langage ?<br />
Très simplement avec une configuration minimaliste <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
<br />
Ici, je mets en place un nouveau hostname <a href="http://ip.crifo.org/">ip.crifo.org</a><br />
On rajoute simplement ceci dans son fichier de conf nginx (généralement dans /etc/nginx/sites-enabled/monsite</p>
<pre>
server {
listen 80;
server_name ip.crifo.org;
location = / {
default_type text/plain;
echo $remote_addr;
}
}
</pre>
<p>et voila <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
maintenant, en utilisant un navigateur web, ou un simple <a href="https://fr.wikipedia.org/wiki/CURL">curl</a> (pratique pour scripter la récuperation de son ip <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /> ), on peut obtenir facilement son ip publique</p>https://blog.crifo.org/post/2015/08/13/Afficher-son-ip-avec-nginx#comment-formhttps://blog.crifo.org/feed/atom/comments/98Convertir une partition root en ext4 par du LVMurn:md5:3094ab316b9ec3250932f7227d985e1f2015-01-24T00:14:00+01:002016-08-12T17:51:18+02:00DjuDebianconvertionext4lvmmdadmrootswap<p><img src="https://blog.crifo.org/public/201501/.data_t.jpg" alt="data" style="float:left; margin: 0 1em 1em 0;" title="data, janv. 2015" />
Lorsqu'on a qu'une seule partition sur sa machine, ici un serveur sous Debian, qui plus est une machine distante, et que l'on veut réorganiser ses données car les besoins ont évolué, c'est bien embêtant... <br />
Voici comment convertir sa partition en LVM pour pouvoir ainsi avoir différents espaces de stockage (et block devices <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /> )</p> <p>Ici l'opération se fait sur une machine distante, hebergée chez l'hebergeur du nord <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /> mais l'équivalent peut se faire aussi sur une machine locale, qu'on fera booter sur un live CD.<br />
Attention: pour réussir, il faut pouvoir disposer d'un endroit ou copier ses données temporairement (ici la partition de swap <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /> ). sinon ce n'est pas la peine</p>
<p>Version courte :<br />
1/ booter en mode rescue (ou live CD)<br />
2/ monter sa partition root et l'espace temporaraire ou copier les données<br />
3/ copier les données avec rsync<br />
4/ Convertir en LVM sa partition et créer des volumes LVM<br />
5/ recopier ses données sur le nouveau volume créé<br />
6/ Adapter grub<br />
7/ croiser les doigts et rebooter</p>
<p><ins>1/ Boot rescue / live CD</ins></p>
<p>On se connecte à l'interface de l'hebergeur, on choisit le mode rescue, et on reboot.<br />
Pour une machine locale sur laquelle on a claver/ecran, un simple live CD suffira</p>
<p><ins>2/ Montage de la partition</ins></p>
<p>Une fois la machine démarrée, on va se créer 2 repertoires, permettant de distinguer l'ancien et le nouveau volume<br /></p>
<pre>
mkdir /mnt/root_old
mkdir /mnt/root_temp
mount /dev/sda1 /mnt/root_old
</pre>
<p>Comme espace temporarire, on peut éventuellement disposer d'un disque usb clé usb.<br />
Si ce n'est pas le cas, on peut utiliser sa partition swap <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /><br />
Bien entendu, il faut que cet espace soit suffisant. pour le savoir, la commande</p>
<pre>
df -hl
</pre>
<p>vous dira ce qu'il en est. Par exemple, sur mon serveur distant :</p>
<pre>
Sys. fich. Taille Util. Dispo Uti% Monté sur
rootfs 116G 1,4G 46G 1% /
udev 10M 0 10M 0% /dev
tmpfs 3,2G 224K 3,2G 1% /run
/dev/md0 116G 1,4G 46G 1% /
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 6,9G 0 6,9G 0% /dev/shm
</pre>
<p>Ici, j'ai une partition ext4 (montée sur un raid soft mdadm) de 116 Go, occupée par 1,4 Go de données.<br /> (je l'avais installé et il y a peu, et j'avais la flemme de tout refaire, j'ai donc rusé <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /> )
On a alors plusieurs choix :<br />
a) on dispose d'une clé/disque USB, on le monte<br /></p>
<pre>
mount /dev/sdb1 /mnt/root_temp
</pre>
<p>b) on n'a pas d'usb dispo, mais on a une partition swap assez grande. on la convertit temporairement en partition ext4 ou copier les données</p>
<pre>
mkfs.ext4 /dev/sda2 && mount /dev/sda2 /mnt/root_temp
</pre>
<p>c) cas vicieux qui m'est arrivé : on a 3 disques, et sur chacun, 1 partition swap d'1Go. soit pas assez pour y copier 1,4 Go.<br />
mais que faire..........<br />
solution: créer temporairement un volume raid5 soft avec mdadm \o/<br />
on utilise parted ou fdisk pour changer le type de partition de linux-swap (82) à linux raid (fd). puis on créé et formate le volume raid</p>
<pre>
mdadm --create /dev/md1 --level=5 --assume-clean --raid-devices=3 /dev/sda2 /dev/sdb2 /dev/sdc2
mkfs.ext4 /dev/md1
mount /dev/md1 /mnt/root_temp
</pre>
<p>On a désormais un espace de 2 Go <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
d) si plusieurs partitions, on peut aussi utiliser <strong><a href="https://fr.wikipedia.org/wiki/Gestion_par_volumes_logiques">LVM</a></strong> pour les agréger :</p>
<pre>
apt-get update && apt-get install lvm2
pvcreate /dev/sda2
pvcreate /dev/sdb2
pvcreate /dev/sdc2
vgcreate vgTMP /dev/sda2
vgextend vgTMP /dev/sdb2
vgextend vgTMP /dev/sdc2
lvcreate -L3G -n root_temp vgTMP
mkfs.ext4 /dev/vgTMP/root_temp
mount /dev/vgTMP/root_temp /mnt/root_temp
</pre>
<p>et voila, on cumule 3 partitions en un seul volume <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p><ins>3/ copie des données</ins></p>
<p>Cela est la partie la plus courte et la plus facile :</p>
<pre>
rsync -ravzx /mnt/root_old/ /mnt/root_temp/
umount /mnt/root_old
</pre>
<p>Donc on copie les données de la partition root actuelle vers la temporarire, tout en conservant les attributs des fichiers (date, permissions, owner...)%%
Puis on démonte la partition, car on va la bricoler.</p>
<p><ins>4/ Convertion ext4 > lvm</ins></p>
<p>Si vous avez une partition, il faut changer son type de ext4 à LVM, avec fdisk ou parted.<br />
Si comme moi vous avez un device type mdadm, pas besoin. On peut donc attaquer LVM :</p>
<pre>
pvcreate /dev/md0
vgcreate vg0 /dev/md0
</pre>
<p>(remplacer md0 par sda1 (par exemple) si vous avez une partition)<br />
A présent, on peut se créer des volumes LVM.<br />
Pour par part, j'avais besoin de 3 volumes: 1 pour l'os (sans blague !), 1 pour les données en local, et 1 pour drbd.</p>
<pre>
lvcreate -L 20G -n os vg0
lvcreate -L 30G -n datas vg0
lvcreate -L 60G -n drbd vg0
</pre>
<p>on n'oublie pas de formater au moins le volume pour l'OS</p>
<pre>
mkfs.ext4 /dev/vg0/os
</pre>
<p><ins>5/ recopie des données sur le volume LVM</ins>
pareil que l'étape 3, mais dans l'autre sens, en montant le nouveau volume</p>
<pre>
mount /dev/vg0/os /mnt/root_old
rsync -ravzx /mnt/root_temp/ /mnt/root_old/
</pre>
<p>on peut à présent démonter le volume temporaire.<br /></p>
<pre>
umount /mnt/root_temp
</pre>
<p>/!\ Si on a du créer un mdadm temporaire, ne pas oublier de l'arreter</p>
<pre>
mdadm -S /dev/md1
</pre>
<p>/!\ Si on a du créer un LVM temporaire, le supprimer</p>
<pre>
lvremove /dev/vgTMP/root_temp
vgremove vgTMP
pvremove /dev/sdc2
pvremove /dev/sdb2
pvremove /dev/sda2
</pre>
<p>et si on utilisait sa(ses) partition(s) de swap, ré-utiliser fdisk ou parted pour changer le type de partition, puis refaire le swap</p>
<pre>
mkswap /dev/sda2
mkswap /dev/sdb2
mkswap /dev/sdc2
</pre>
<p><ins>6/ Adaptation de grub</ins></p>
<p>Cela se fait très simplement. on va se chrooter dans le volume, installer LVM si il n'y était pas déja, et re-installer grub sur le(s) disque(s)</p>
<pre>
mount -o bind /proc /mnt/root_old/proc
mount -o bind /sys /mnt/root_old/sys
mount -o bind /dev /mnt/root_old/dev
LANG=C chroot /mnt/root_old /bin/bash
aptitude update
aptitude install lvm2
grub-install /dev/sda
# éventuellement, si on a du raid1, le faire sur l'autre disque
grub-install /dev/sdb
update-grub
</pre>
<p>Grub devrait vous dire que tout s'est bien passé.<br />
Afin de s'assurer qu'il a bien reconnu LVM, on peut aller faire un tour dans <strong>/boot/grub/grub.cfg</strong><br />
On devrait y trouver, entre autre</p>
<pre>
insmod lvm
</pre>
<p>et un peu plus bas dans la section "menuentry" décrivant l'OS</p>
<pre>
set root='(vg0-os)'
linux /boot/vmlinuz-3.2.0-4-amd64 root=/dev/mapper/vg0-os .....
</pre>
<p>ici tout est bon, on change le fstab pour indiquer que la partition / est en LVM</p>
<pre>
/dev/vg0/os / ext4 errors=remount-ro,noatime 0 1
</pre>
<p>puis on peut sortir du chroot, tout demonter et rebooter<br />
Ne pas oublier, si vous êtes sur un serveur distant, de vous reconnecter sur l'interface de l'hebergeur, et de repasser le boot de rescue à disque dur <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>
<pre>
exit
umount /mnt/root_old/proc
umount /mnt/root_old/sys
umount /mnt/root_old/dev
umount /mnt/root_old
/sbin/reboot
</pre>
<p>et voila. aucune donnée/configuration n'a été perdue, et pas besoin de résintaller votre machine <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>https://blog.crifo.org/post/2015/01/24/Convertir-une-partition-root-en-ext4-par-du-LVM#comment-formhttps://blog.crifo.org/feed/atom/comments/97Installer une imprimante Samsung M2825 sous debian/ubuntu/minturn:md5:3a836409a8d371e40f75a6f1518a1d6e2014-12-24T18:12:00+01:002014-12-26T14:14:44+01:00DjuHardwarecupsdriverimrimantem2825samsung<p><img src="https://blog.crifo.org/public/201412/.m2825_t.png" alt="m2825.png" style="float:left; margin: 0 1em 1em 0;" title="m2825.png, déc. 2014" />
Installer une imprimante peut être difficile, surtout si elle est récente <br />
Ici, une samsung M2825, qui n'est pas reconnue nativement par Cups, ce qui nécessite de trouver le driver adéquat, partie la plus difficile de l'opération <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /> <br />
Voici comment procéder à son installation avec Cups</p> <p><br />
<br />
On doit tout d'abord avoir cups d'installé. si ce n'est pas le cas, on l'installe rapidement ainsi :<br /></p>
<pre>
sudo aptitude install cups
</pre>
<p>Puis on se rend <a href="http://www.samsung.com/ca/support/model/SL-M2825DW/XAA">sur la page du site samsung</a> permettant de télécharger le bon driver <br />
Un peu plus bas, on cherche dans la partie <strong>Drivers</strong>, le Print Driver pour Linux, et on clique dessus, ce qui fait télécharger le driver au format compressé, .tar.gz.<br />
On peut maintenant l'installer en 2/3 commandes :<br /></p>
<pre>
tar xzf ./ULD_v1.00.29.tar.gz
cd uld
sudo ./install.sh
</pre>
<p>on passe le disclaimer, et on valide.<br />
A partir de la, le driver est installé, cups et udev sont relancés pour valider l'installation.<br />
Enfin, on se rend sur la page de cups, <a href="http:/localhost:631/">http:/localhost:631/</a><br />
On va dans l'onglet "Administration" > bouton "ajouter imprimante", on resaisait son login/pass si besoin<br />
Si l'imprimante est bien branchée en USB, cups devrait la détécter <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /> on la selectionne, on valide, ET VOILA \o/</p>
<p>Pour s'assurer que tout va bien, on peut aller dans l'onglet "Imprimantes", cliquer sur la samsung, et dans le menu déroulant "Maintenance", selectionner "imprimer une page de test" <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>https://blog.crifo.org/post/2014/12/25/Installer-une-imprimante-Samsung-M2825-sous-debian-ubuntu-mint#comment-formhttps://blog.crifo.org/feed/atom/comments/96Surveillance automatique des disques dur avec SMARTurn:md5:54ff0ad1c23dc997514f96492df862fb2013-02-24T14:10:00+01:002013-02-24T14:25:52+01:00DjuHardwaredisquemonitoringsmartsurveillance<p><img src="https://blog.crifo.org/public/201302/.hdd_t.jpg" alt="hdd" style="float:left; margin: 0 1em 1em 0;" title="hdd, fév. 2013" /> Récemment, je me suis trouvé avec un serveur distant ne répondant plus... Après investigation, il s'est avéré que le disque était mort de vieillesse. Mais si il n'y a pas eu de warning, c'est parce que j'avais oublié d'activer la surveillance automatique du disque, manquant ainsi les signes précurseur du malheur à venir... Grrr ! <img src="/themes/BlueSky/smilies/sad.gif" alt=":(" class="smiley" /><br />
Voici donc comment activer cette surveillance avec smartmontools pour avoir des alertes au cas ou</p> <p>En premier, si ce n'est pas deja fait, on installe smartmontools<br /></p>
<blockquote><p>aptitude install smartmontools</p></blockquote>
<p>Lors de cette installation, si vous n'avez pas deja le necessaire pour envoyer des mails, aptitude vous l'installera par dépendance (sur debian/ubuntu, c'est exim par défaut).<br />
Je ne reviendrai par sur la partie mail car il y aurait trop de choses à dire <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p>Une fois installé, on édite le fichier <strong>/etc/default/smartmontools</strong> et ondécommente la ligne<br /></p>
<blockquote><p>start_smartd=yes</p></blockquote>
<p>ceci permet de lancer le demon smartd au démarrage de la machine.<br />
On édite maintenant le fichier <strong>/etc/smartd.conf</strong> dans lequel on va indiquer quel disque surveiller.<br />
On commente la ligne<br /></p>
<blockquote><p>DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runner</p></blockquote>
<p>en ajoutant un # devant, puis jute en desous on déclare explicitement quel disque surveiller<br /></p>
<blockquote><p>/dev/sda -H -l error -l selftest -m moi@mondomaine.com<br />
/dev/sdb -H -l error -l selftest -m moi@mondomaine.com</p></blockquote>
<p>on indique ici plusieurs options :<br />
-H : pour surveiller l'état de santé général du disque<br />
-l error : pour remonter toute erreur présente dans les logs du disque<br />
-l selftest : pour remonter toute erreur sruvenue pendant un test automatique du disque<br />
-m moi@mondomaine.com : pour indiquer ou envoyer les alertes par email</p>
<p>Une fois la config enregistrée, on peut lancer le démon smart :<br /></p>
<blockquote><p>/etc/init.d/smartmontools start</p></blockquote>
<p>et surveiller le résultat dans daemon.log aussitot :<br /></p>
<blockquote><p>tail /var/log/daemon.log</p></blockquote>
<p>ou<br /></p>
<blockquote><p>egrep smartd /var/log/daemon.log</p></blockquote>
<p>On devrait y voir quelques lignes comme cela :</p>
<pre>
Device: /dev/sdb [SAT], is SMART capable. Adding to "monitor" list.
Device: /dev/sda [SAT], is SMART capable. Adding to "monitor" list.
Monitoring 2 ATA and 0 SCSI devices
</pre>
<p>Si smartd n'arrive pas à correctement identifier les disques, ou si ils sont trop vieux et ne savent pas causer smart, cela sera indiqué dans les logs.</p>
<p>A partir de la, la surveillance est maintenant automatiquement activée <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
Il ne reste qu'une chose à faire: programmer via <strong>cron</strong> un test automatique des disque régulièrement.<br /></p>
<blockquote><p>crontab -e</p></blockquote>
<pre>
# surveillance disque
0 5 */30 * * /usr/sbin/smartctl --test=short /dev/sda
5 5 */30 * * /usr/sbin/smartctl --test=short /dev/sda
</pre>
<p>ici j'indique de lancer un test (le test de type short dure 2/3 minutes) sur sda à 5h du mat', et un test sur sdb à 5h05, le tout tous les 30 jours.<br />
Pour être sur que smartctl se lance bien, vérifier ou se trouve le binaire de manière à indiquer le chemin correct</p>
<blockquote><p>which smartctl</p></blockquote>
<p>Pour obtenir la liste des test effecutés :<br /></p>
<blockquote><p>smartctl -l selftest /dev/sda</p></blockquote>
<p>Il devrait y avoir une ligne par test, avec le status "<strong>Completed without error</strong>" si tout s'est bien passé</p>
<p>And voila ! désormais, si un disque montre un signe de défaillance, un mail vous sera envoyé et vous permettra d'intervenir avant que le disque ne lache (dan la plupart des cas en tout cas :D )<br />
Egalement, tout évènement détecté part smartd sera indiqué dans le log système (syslog). Vous serez donc également averti si vous un soft de surveillance de logs <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>https://blog.crifo.org/post/2013/02/24/Surveillance-automatique-des-disques-dur-avec-SMART#comment-formhttps://blog.crifo.org/feed/atom/comments/95Mesure de la température ambiante avec le Raspberry Piurn:md5:d92a667c810028d01c75f246e158e6122013-01-26T19:50:00+01:002013-03-02T13:36:06+01:00DjuRaspberry Pihardwarelinuxmonitoringmuninraspberry piraspbiantemperaturethermometreusb<p><q></q><img src="https://blog.crifo.org/public/201301/.raspi_t.jpg" alt="raspi" style="float:left; margin: 0 1em 1em 0;" title="raspi, janv. 2013" /> Aujourd'hui un billet (que j'aurais du écrire depuis longtemps :p ) sur l'acquisition d'un thermomètre USB permettant de surveiller en temps réel la température ambiante.<br />
Le tout avec le raspberry Pi et munin pour relever la température toutes les 5 minutes et ainsi avoir un joli graphe et voir l'évolution.</p> <p>Ici, le pi tourne sous <a href="http://www.raspbian.org">Raspbian</a>, et grâce à un petit outil permettant de lire la température directement sur le thermomètre usb, disponible sur GitHub, on peut alors facilement surveiller.
Le dit thermomètre USB <a href="http://cgi.ebay.fr/TEMPer-2-0-USB-Thermometer-Temperatur-Auswertung-mit-Software-/160938619932?pt=Mess_Pr%C3%BCftechnik&hash=item2578b0741c">peut se trouver facilement sur Ebay</a> pour 12 euros. A ce prix la j'en ai pris 2 <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p><a href="https://blog.crifo.org/public/201301/temper_usb.jpg" title="temper usb"><img src="https://blog.crifo.org/public/201301/.temper_usb_m.jpg" alt="temper usb" title="temper usb, janv. 2013" /></a></p>
<p>Par défaut, le thermomètre ne fonctionne que sous windobe a l'aide d'un programme fourni en DotNet.<br /></p>
<p>Pour linux, un programme <a href="https://github.com/peterfarsinsen/pcsensor">dont le source est librement fourni sur GitHub</a> est disponible <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
Voici comment l'installer: on installe sur le pi le necessaire à la compilation, on recupere le programme, puis on le compile.</p>
<pre>
sudo aptitude install build-essential libusb-dev
cd /opt
wget https://github.com/peterfarsinsen/pcsensor/archive/master.zip
unzip pcsensor-master.zip
cd pcsensor-master
make
sudo make install
</pre>
<p>Le programme n'étant pas très gros, la compilation prend une 20aine de secondes.<br />
A partir de la, si tout s'est bien passé, il il y a un binaire nommé <strong>pcsensor</strong>.<br />
On peut désormais brancher le thermomètre, et vérifier avec la commande <strong>lsusb</strong> qu'il est bien reconnu :</p>
<pre>
lsusb
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 115: ID 0c45:7401 Microdia
</pre>
<p>ici c'est celui nommé Microdia avec l'id 0c45 7401.<br />
On execute donc le binaire afin de voir si cela fonctionne bien :</p>
<pre>
./pcsensor
2013/01/26 19:09:57
Temperature (internal) 69.12F 20.62C
Temperature (external) 214.60F 101.45C
</pre>
<p>la température ambiante est celle nommée "internal".<br />
A partir d'une ligne de commande, on peut désormais avoir la température <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<pre>
./pcsensor -c | awk '/internal/ {print $NF}' | cut -dC -f1
20.62
</pre>
<p>Et a partir de la, scripter cette commande pour en faire ce que l'on veut <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
Par exemple, j'ai écrit un petit plugin Munin afin de la monitorer régulièrement (<a href="https://blog.crifo.org/public/201301/hid_temper.zip">à télécharger ici</a>)</p>
<p><img src="https://blog.crifo.org/public/201301/.hid_temper-week_m.jpg" alt="temper week" title="temper week, janv. 2013" /></p>
<p>Edit: Pour les inconditonnels du perl, on peut lire le thermometre avec Device::USB::PCSensor::HidTEMPer<br />
Pour cela :</p>
<pre>
export LIBUSB_LIBDIR=/usr/lib/arm-linux-gnueabihf/
export LIBUSB_INCDIR=/usr/lib/arm-linux-gnueabihf/
perl -e shell -MCPAN
install Extutils::MakeMaker
install Inline::MakeMaker
install Bundle::CPAN
install Device::USB
install Device::USB::PCSensor::HidTEMPer
</pre>https://blog.crifo.org/post/2013/01/26/Mesure-de-la-temperature-ambiante-avec-le-Raspberry-Pi#comment-formhttps://blog.crifo.org/feed/atom/comments/94reception et installation du raspberry piurn:md5:1a3455583f0a8ec43b002ed0751507262013-01-19T23:00:00+01:002013-01-21T22:31:05+01:00DjuRaspberry Pidebianhardwarelinuxraspberry piraspbianserveur<p><img src="https://blog.crifo.org/public/201301/.raspi_t.jpg" alt="raspi" style="float:left; margin: 0 1em 1em 0;" title="raspi, janv. 2013" /> Après commande sur <a href="http://raspberrypi.rsdelivers.com/default.aspx?cl=1">RS Online</a>, le pi est enfin arrivé, seulement 10 jours après <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
Je souhaite décrire ici la procédure basique pour mettre le pi en route, installer <a href="http://www.raspbian.org/">Raspbian</a> comme OS, enfaire la mise à jour avec aptitude, et celle du firmware avec rpi-update, et quelques autres petits trucs et astuces facilitant la procédure (et la remise en route si y'a un pépin :p ) de manière à pouvoir retrouver tout cela facilement.</p> <p>Ho le joli paquet ! on se demande ce qu'il y a dedans.... :D</p>
<p><a href="https://blog.crifo.org/public/201301/rpi_colis.jpg" title="colis"><img src="https://blog.crifo.org/public/201301/.rpi_colis_m.jpg" alt="colis" title="colis, janv. 2013" /></a></p>
<p>ça tombe bien, ce week-end y'a rien d'autre à faire que de rester au chaud :p</p>
<p><img src="https://blog.crifo.org/public/201301/.CIMG0650_m.jpg" alt="hiver_2013" title="hiver_2013, janv. 2013" /></p>
<p>On commence donc par récupérer la dernière version de Raspbian sur la page officielle: <a href="http://www.raspberrypi.org/downloads" title="http://www.raspberrypi.org/downloads">http://www.raspberrypi.org/download...</a>, à l'heure actuelle la 2012-12-16</p>
<p>Une fois récupéré le fichier zip, on le decompresse et on l'installe sur la carte SD.<br />
Ici, ma carte SD est idéntifiée en tant que <strong>/dev/sdf</strong> :</p>
<pre>
dd if=./2012-12-16-wheezy-raspbian.img of=/dev/sdf bs=4M
</pre>
<p>Si cela ne marche pas, suivant la qualité de la carte SD, on peut écrire l'image légèrement différemment :</p>
<pre>
dd if=./2012-12-16-wheezy-raspbian.img of=/dev/sdf bs=1M
</pre>
<p>Pour connaitre les différentes methodes d'installation autres que depuis linux de raspbian sur la carte SD, on peut consulter <a href="http://elinux.org/RPi_Easy_SD_Card_Setup">le HowTo officiel</a></p>
<p>Enfin, on branche l'écran pour voir si tout démarre bien <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
A ce niveau, peut être que comme moi vous n'avez pas d'écran avec prise HDMI, mais seulement DVI. Auquel cas il vous faudra un adaptateur (passif) dhmi/dvi, trouvable sur le net ou à la fnac pour quelques euros</p>
<p><a href="https://blog.crifo.org/public/201301/hdmi_dvi.jpg" title="hdmi_dvi"><img src="https://blog.crifo.org/public/201301/.hdmi_dvi_m.jpg" alt="hdmi_dvi" title="hdmi_dvi, janv. 2013" /></a></p>
<p>Par contre, si vous ne disposez que d'un ecran à prise VGA, il vous faudra alors un convertisseur hdmi/vga, qui coute un peu plus cher (20/25 euros) car étant équipé d'une petite puce convertissant à la volée le signal numérique en signal analogique. par exemple celui-ci: <a href="http://fr.farnell.com/element14/piview/adaptateur-raspberry-pi-hdmi-vers/dp/2133899" title="http://fr.farnell.com/element14/piview/adaptateur-raspberry-pi-hdmi-vers/dp/2133899">http://fr.farnell.com/element14/piv...</a></p>
<p>Finalement on branche le tout, et on devrait voir la framboise sur l'écran. si ce n'est pas le cas, et que votre écran n'a pas de signal et qu'il reste désespérément noir, pas de souci.<br />
Il faut alors à nouveau inserer la carte SD dans son PC, puis éditer le fichier <strong>config.txt</strong>, se trouvant dans la 2e partition en fat32 d'une 50aine de Mo.<br />
On trouve alors la ligne <strong>hdmi_force_hotplug=1</strong>.<br />
Si elle n'y est pas, écrivez la. sinon décommentez la en enlevant le # en début de ligne.<br />
Enfin, enregistrez, démontez la carte SD, remettez la dans le pi, et c'est bon \o/</p>
<p><a href="https://blog.crifo.org/public/201301/pi_boot.jpg" title="pi_boot"><img src="https://blog.crifo.org/public/201301/.pi_boot_m.jpg" alt="pi_boot" title="pi_boot, janv. 2013" /></a></p>
<p>Si toujours pas, plus d'explications peuvent se trouver ici: <a href="http://elinux.org/RPi_config.txt" title="http://elinux.org/RPi_config.txt">http://elinux.org/RPi_config.txt</a></p>
<p>Une fois l'OS démarré, on taombe sur le programme de configuration générale, nommé <strong>raspi-config</strong></p>
<p><a href="https://blog.crifo.org/public/201301/raspi-config.jpg" title="raspi_config"><img src="https://blog.crifo.org/public/201301/.raspi-config_m.jpg" alt="raspi_config" title="raspi_config, janv. 2013" /></a></p>
<p>Voici la fonction des différents choix :<br /></p>
<p><strong>expand rootfs</strong><br />
l'image par défait fait 2 Go. si vous avez une carte SD plus grosse, choisissez cette option pour étendre le système de fichier sur tout la carte<br />
<strong>configure keyboard</strong><br />
configurer le type de clavier (pas la langue, azerty/qwerty, on verra cela plus tard)<br />
<strong>change pass</strong><br />
changer le mot de passe par défaut (<strong>user: pi</strong> | <strong>password: raspberry</strong>)<br />
<strong>change_locale</strong>:<br />
changer l'encodage par défaut (iso, utf8 etc...) préferez plutot fr_utf8 qui est universel<br />
<strong>change timezone</strong><br />
changer le pays afin d'avoir la bonne heure<br />
<strong>memory_split</strong>
par déaut, sur les 512Mo du pi (ou 256) la moitié est affectée à la carte vidéo, l'autre au systeme. suivant votre utilisation, par exemple pour faire un petit serveur sans écran. pour ma part, j'ai mis 16 mo a la partie graphique de manière à avoir quasimment 500 mo à ma disposition.<br />
<strong>overclock</strong><br />
Est il besoin de vous expliquer ? :D attention à la chaleur et la stabilité de la machine...<br />
<strong>ssh</strong><br />
Activer ou non le SSH. par défaut il n'est pas actif.<br />
<strong>boot_behaviour</strong><br />
Faut il ou non lancer l'interface graphique au démarrage</p>
<p>Maintenant, afin d'avoir un clavier français en AEZERTY, car QWERTY par défaut, on edite le fichier <strong>/etc/default/keyboard</strong> et on indique la valeur<br />
XKBLAYOUT="fr"</p>
<p>Ainsi le clavier sera en azerty au prochaine démarrage. Afin d'appliquer ce réglage de suite, on peut taper la commande <strong>sudo setupcon</strong></p>
<p>A partir de maintenant, on peut mettre le systeme à jour :<br />
1/ <strong>sudo aptitude update; sudo aptitude safe-upgrade</strong> : pour mettre à jour raspbian<br />
2/ utiliser rpi-update (non inclus par défaut) pour mettre à jour le noyau linux et ses dépendances</p>
<p>rpi-update est disponible sur <a href="https://github.com/Hexxeh/rpi-update">gitHub</a>. voici comment l'installer :<br /></p>
<pre>
sudo apt-get install ca-certificates git-core binutils
sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && sudo chmod +x /usr/bin/rpi-update
sudo rpi-update
</pre>
<p>A partit de la, les elements du démarrage (présents dans /boot/, dont le fameux config.txt) sont sauvegardés dans <strong>/boot.bak</strong> et le nouveau noyau est téléchargé et installé. Une fois terminé, on peut redémarrer.<br />
On passe ainsi du kernel 3.2.27 au 3.6.11<br />
Si le pi ne reboot pas, on peut, à l'aide de son pc, monter la carte SD et remplacer /boot/ par /boot.bak.<br /></p>
<p>Enfin, 2 ou 3 petites choses utiles :</p>
<p>Le pi dispose d'une sonde de température interne, qui peut être mesurée avec la commande uivante :</p>
<pre>
sudo /opt/vc/bin/vcgencmd measure_temp
</pre>
<p>En moyenne, elle tourne autour des 50°, avec un maximum prévu de 80/85°.<br />
pour ceux que ça interesse, j'ai écrit un petit plugin pour <a href="http://munin-monitoring.org/">Munin</a>.<br />
Vous pouvez <a href="https://blog.crifo.org/public/201301/pi_temp.zip">le télécharger ici</a> puis, pour l'installer :</p>
<pre>
wget http://blog.crifo.org/public/201301/pi_temp.zip -O /usr/share/munin/plugins/pi_temp.zip
unzip /usr/share/munin/plugins/pi_temp.zip && rm /usr/share/munin/plugins/pi_temp.zip
chmod +x /usr/share/munin/plugins/pi_temp
ln -s /usr/share/munin/plugins/pi_temp /etc/munin/plugins/
/etc/init.d/munin-node restart
</pre>
<p>et hop !<br />
<a href="https://blog.crifo.org/public/201301/pi_temp-day.png" title="pi_temp"><img src="https://blog.crifo.org/public/201301/.pi_temp-day_m.jpg" alt="pi_temp" title="pi_temp, janv. 2013" /></a></p>
<p>Enfin, une fois tout cela fait et votre raspbian prêt à être vraiment utilisé, une dernière chose à faire: sauvegarder votre carte SD !<br />
Si jamais vous avez un pépin ou que vous aimez bricoler et que raspbian ne démarre plus, il faut refaire l'install depuis le début... <img src="/themes/BlueSky/smilies/sad.gif" alt=":(" class="smiley" /><br />
On va éviter cela en utilisant une fois encore la commande <strong>dd</strong> (non, on ne gratte pas dédé !)<br />
Une fois la carte SD dans votre pc, assurez vous que ses 2 partitions ne sont pas montées. puis lancer la sauvegarde :</p>
<pre>
dd if=/dev/sdf of=./backup_raspbian.img bs=4M
</pre>
<p>De la meme maniere, si votre carte SD est un peu faible et que la sauvegarde foire, onpeut recommencer en ya allant plus doucement :</p>
<pre>
dd if=/dev/sdf of=./backup_raspbian.img bs=1M
</pre>
<p>And voila ! a partir de la, conservez précieusement cette sauvegarde. vous pourrez la restorer de la meme maniere qu'au début ou raspbian a été écrit sur la carte SD <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>https://blog.crifo.org/post/2013/01/19/reception-et-installation-du-raspberry-pi#comment-formhttps://blog.crifo.org/feed/atom/comments/93Un raspberry pi de plusurn:md5:1e8b84cfc90060683d5afdd24290f31c2013-01-13T18:47:00+01:002013-01-13T19:06:50+01:00DjuRaspberry Pidebianlinuxmirroirmonitoringraspberry piraspbianserveur<p><img src="https://blog.crifo.org/public/201301/.raspi_t.jpg" alt="raspi" style="float:left; margin: 0 1em 1em 0;" title="raspi, janv. 2013" /> Mon dockstar (pour ceux qui ne connaissent pas, c'est un mini-pc avec processeur ARM et 128mo de ram) se sentant un peu à l'étroit, et après avoir vu tout ce qu'on peut faire avec un pi, j'ai décidé d'en acquérir un de manière à avoir un petit serveur consommant très peu et faisant beaucoup de choses <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /><br />
D'autant que le modèle actuel du Pi a maintenant 512 mo de ram <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p> <p>Pour la commande, il n'y a pas beaucoup de choix:<br />
- <a href="http://fr.farnell.com/raspberry-pi-accessories">Farnell</a><br />
- <a href="http://raspberrypi.rsdelivers.com/default.aspx?cl=1">RSdelivers</a></p>
<p>le 2è est légèrement moins cher, fournit une meilleur sd card, une alimentation en 1 block... plus un boîtier et une carte SD 4Go, y'en a pour une 60aine d'euros<br />
La commande ayant été faite le 9 janvier, il n'y a plus qu'à attendre qu'il arrive <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
N'ayant pas d'écran en HDMI, il me faut aussi choisir un adaptateur hdmi / dvi, qui est nettement plus simple qu'un adaptateur hdmi / vga.<br />
En effet, pour convertir du HDMI au VGA, il faut un adaptateur 'actif', avec une petite puce à l'intérieur, convertissant le signal numérique en analogique. De fait, ce genre d'adaptateur est assez cher: 20/25€, presque aussi cher que le pi !<br />
Alors que le DVI est également un signal numérique, un simple adaptateur 'passif' suffit,;et de fait coute très peu cher <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /> On peut en trouver facilement sur ebay ou amazon pour 5€ max (il faut une prise mâle de chaque coté).</p>
<p>Pour ce qui est du pi lui même, il fera ce que fait mon dockstar, plus quelques autres trucs: <br />
- monitoring avec Icinga (un fork de nagios) et Munin (pour faire de jolis graphes et avoir un suivi à long terme)<br />
- serveur DNS avec bind<br />
- serveur mail avec postfix, opendkim, et courier<br />
- surveillance de la températeur locale grâce à un thermometre USB</p>
<p>Par la suite, un serveur NTP de strate 1 grâce à un dongle usb/gps : <a href="http://blog.retep.org/2012/06/18/getting-gps-to-work-on-a-raspberry-pi/" title="http://blog.retep.org/2012/06/18/getting-gps-to-work-on-a-raspberry-pi/">http://blog.retep.org/2012/06/18/ge...</a><br />
On peut en trouver sur ebay ou maplin pour une 20aine de $, et c'est relativement facile à mettre en place.</p>
<p>Egalement, une page interessante donnant une étendue des très nombreuses utilisations (une bonne quarantaine :D)
<a href="http://pingbin.com/2012/12/30-cool-ideas-raspberry-pi-project/" title="http://pingbin.com/2012/12/30-cool-ideas-raspberry-pi-project/">http://pingbin.com/2012/12/30-cool-...</a></p>
<p>Enfin, j'ai aussi décidé de contribuer à la distribution "officielle" du Pi: <a href="http://www.raspbian.org/">Raspbian</a> (basé sur <a href="http://www.debian.org">Debian</a> mais modifié de manière à prendre en compte le hardware du Pi) en devenant un dépot mirroir, accessible dès maintenant:<br />
<a href="http://ftp.crifo.org/raspbian" title="http://ftp.crifo.org/raspbian">http://ftp.crifo.org/raspbian</a> et <a href="ftp://ftp.crifo.org/raspbian" title="ftp://ftp.crifo.org/raspbian">ftp://ftp.crifo.org/raspbian</a><br /> <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
<a href="http://www.raspbian.org/RaspbianMirrors">La liste des mirroirs</a> est bien sur consultable sur le site de maniere à vous adapter en fonction de la ou votre pi se trouve</p>https://blog.crifo.org/post/2013/01/13/Un-raspberry-pi-de-plus#comment-formhttps://blog.crifo.org/feed/atom/comments/92Débat présidentiel 2012, merci europe1urn:md5:41946c425317b717c3d8056441655c942012-05-02T23:05:00+02:002012-05-03T17:30:28+02:00DjuDiversdebateurope1présidentiellesvidéo <p>que dire.......</p>
<p><img src="https://blog.crifo.org/public/201205/.E1_dp2012_m.jpg" alt="dp_2012_europe1" title="dp_2012_europe1, mai 2012" /></p>
<p>la seule possibilité actuellement est d'aller se manger les pubs du site d'europe1 et d'avoir quelques phrases toutes les 30 secondes</p>
<p><strong>just WHAT THE FUCK ?!!</strong></p>
<p>edit au lendemain: le pourquoi du comment <a href="http://www.numerama.com/magazine/22514-comment-tf1-et-france-tv-ont-ostracise-internet-pour-le-debat-presidentiel.html">expliqué sur numerama</a></p>https://blog.crifo.org/post/2012/05/02/D%C3%A9bat-presidentiel-2012-merci-europe1#comment-formhttps://blog.crifo.org/feed/atom/comments/91Sécurisez vos connexions DNS avec DNScrypturn:md5:77ee89065c0e1b6569edabfd8e792d902011-12-16T01:30:00+01:002011-12-18T17:47:23+01:00DjuServeurdebiandnscryptopendnsssl<p><img src="https://blog.crifo.org/public/201112/.opendns_sq.jpg" alt="opendns" style="float:left; margin: 0 1em 1em 0;" title="opendns, déc. 2011" /> Il y a une petite dizaine de jours, <a href="http://www.opendns.com/">OpenDNS</a> a sorti un utilitaire très pratique, open source, permettant de crypter les connexions DNS, un peu comme le HTTP encapsulé en SSL pour faire du HTTPS.<br />
Un pas de plus vers l'anonymat et la protection de la vie privée <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
Ici on va voir comment l'installer simplement sur un pc sous debian/ubuntu, puis le mettre devant un serveur BIND faisant office de cache.</p> <p>Comme dit en intro, ce petit soft fait office de proxy pour envoyer toutes vos requêtes DNS à opendns (ou autre) sous forme cryptée. non pas en ssl, mais en <a href="http://dnscurve.org/crypto.html">Curve25519</a>. <br />
Ainsi, vos requtes DNS ne seront plus transmises en clair, ce qui permet de protéger un peu plus sa vie privée, et de se prémunir d'attaques de type man-in-the-middle. <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
Ce soft est open-source, et mis à disposition sur <a href="https://github.com/opendns/dnscrypt-proxy">GitHub</a></p>
<p>un article de présentation sur le blog:<br />
<a href="http://blog.opendns.com/2011/12/06/dnscrypt-%E2%80%93-critical-fundamental-and-about-time/">http://blog.opendns.com/2011/12/06/dnscrypt-%E2%80%93-critical-fundamental-and-about-time/</a> <br />
et un autre un peu plus détaillé:<br />
<a href="http://www.opendns.com/technology/dnscrypt/">http://www.opendns.com/technology/dnscrypt/</a> <br />
Egalement, le HOWTO officiel sur comment l'installer et les différentes options:<br />
<a href="https://github.com/opendns/dnscrypt-proxy/blob/master/README.markdown">https://github.com/opendns/dnscrypt-proxy/blob/master/README.markdown</a></p>
<p>Commencons par l'installer sur un simple pc sous debian/ubuntu pour voir comment ça marche bien.<br />
Afin de le compiler, on va avoir besoin de outils habituels :</p>
<blockquote><p>aptitude install build-essential<br />
aptitude install linux-headers-$(uname -r)</p></blockquote>
<p>maintenant on récupere l'outil et on le compile</p>
<blockquote><p>cd /opt/<br />
wget https://github.com/downloads/opendns/dnscrypt-proxy/dnscrypt-proxy-0.8.tar.gz<br />
tar xvzf ./dnscrypt-proxy-0.8.tar.gz<br />
cd dnscrypt-proxy-0.8<br />
./configure<br />
make<br />
make install</p></blockquote>
<p>Lorsque la compilation est lancée, on peut aller se faire une petite pause café :p<br />
sur mon pc perso (quad core @3Ghz), ça a pris 3/4 minutes. lorsque je l'ai installé sur le routeur, mon fidèle nettop zotac mag avec un atom 230, ça a pris 7/8 minutes
Une fois la compilation terminée, et le make install envoyé, le binaire se trouve ici: <strong>/usr/local/sbin/dnscrypt-proxy</strong></p>
<p>Afin d'avoir toutes les options d'utilisation; un petit</p>
<blockquote><p>/usr/local/sbin/dnscrypt-proxy --help</p></blockquote>
<p>vous donnera ceci :</p>
<pre>
dnscrypt-proxy 0.8
Copyright (C) 2011 OpenDNS, Inc.
Options:
-a --local-address=...
-d --daemonize
-e --edns-payload-size=...
-h --help
-k --provider-key=...
-l --logfile=...
-n --max-active-requests=...
-p --pidfile=...
-r --resolver-address=...
-t --tcp-port=...
-u --user=...
-N --provider-name=...
-P --local-port=...
-V --version
</pre>
<p>Afin de le tester de suite, on le lance (en root)</p>
<blockquote><p>/usr/local/sbin/dnscrypt-proxy --daemonize</p></blockquote>
<p>et on edite (temporairement) le fichier /etc/resolv.conf pour y mettre ceci</p>
<blockquote><p>nameserver 127.0.0.1</p></blockquote>
<p>pour l'arreter:</p>
<blockquote><p>killall dnscrypt-proxy</p></blockquote>
<p>Par défaut, dnscrypt écoute sur 127.0.0.1:53, mais on peut changer l'ip et le port. par exemple</p>
<blockquote><p>/usr/local/sbin/dnscrypt-proxy --daemonize -a 192.168.0.1-P 52</p></blockquote>
<p>fera écouter le démon sur l'IP 192.168.0.1, sur le port 52</p>
<p>Enfin, on teste une résolution DNS, par exemple</p>
<blockquote><p>dig free.fr a</p></blockquote>
<p>on obtient bien le résultat. <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
En écoutant ce qui passe avec tcpdump, on remarque que dnscrypt communique avec les 2 serveurs d'opendns (208.67.222.222 et 208.67.220.220), toujours sur le port 53.<br />
Mais les requetes ne sont plus en clair <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>
<p>A présent, on va l'installer sur un router, avec Bind comme serveur DNS. On va installer dnscrypt de manière à le "poser" en amont de bind.<br />
De cette manière, bind recevra toujours les requêtes venant du réseau local. Mais au lieu de directement discuter en clair, il enverra les requêtes à DNScrypt.
(pour rappel, dnscrypt ne fait pas de cache, il se contente d'envoyer les requêtes à opendns. d'ou l'utilité de bind, ou unbound comme cache)</p>
<p>Comme précédemment, on télécharge dnscrypt et on le compile.
Ensuite on le configure de manière à écouter en local, sur un port autre que 53. par exemple 52.
Afin de faciliter la configuration et le lancement du démon au démarrage du serveur, j'ai écrit un petit script d'init, <a href="http://blog.crifo.org/public/201112/init-dnscrypt">que vous pouvez télécharger ici</a>
On l'installe dans /etc/init.d et on lui donne la permission d'execution</p>
<blockquote><p>cd /etc/init.d<br />
wget http://blog.crifo.org/public/201112/init-dnscrypt -O dnscrypt<br />
chmod +x dnscrypt</p></blockquote>
<p>ce script supporte les arguments start, stop, et status.</p>
<p>puis on créée le fichier de configuration <strong>/etc/default/dnscrypt</strong>, dans lequel on indique</p>
<pre>
# ip to listen on
DC_IP=127.0.0.1
# port to listen on
DC_PORT=52
# other args
DC_ARGS="--daemonize -l /var/log/dnscrypt.log"
</pre>
<p>Ce fichier sera chargé ("sourcé") par défaut lors du lancement. On peut ainsi facilement modifier l'ip ou le port sur lequel le démon écoute.<br />
J'ai aussi rajouté l'option -l pour logger dans le fichier /var/log/dnscrypt.log. c'est optionnel.
On peut à présent le lancer :</p>
<blockquote><p>/etc/init.d/dnscrypt start</p></blockquote>
<p>afin de vérifier son status :</p>
<blockquote><p>/etc/init.d/dnscrypt status</p></blockquote>
<p>pour l'arreter:</p>
<blockquote><p>/etc/init.d/dnscrypt stop</p></blockquote>
<p>Une fois lancé, on vérifier qu'il écoute bien sur l'ip et le port mentionné :</p>
<blockquote><p>netstat -punta | grep dnscrypt</p></blockquote>
<pre>
tcp 0 0 127.0.0.1:52 0.0.0.0:* LISTEN 28994/dnscrypt-prox
udp 0 0 127.0.0.1:52 0.0.0.0:* 28994/dnscrypt-prox
</pre>
<p>Un petit test pour vérifier que la résolution se fait bien :</p>
<blockquote><p>dig @127.0.0.1 -p52 free.fr a</p></blockquote>
<p>Enfin, histoire de le lancer automatiquement au démarrage :</p>
<blockquote><p>update-rc.d -f dnscrypt defaults</p></blockquote>
<p>A présent, passons à bind, dans lequel il faut juste modifier la partie "forwarders". on édite le fichier <strong>/etc/bind/named.conf.options</strong><br />
on a donc la section</p>
<blockquote><p>forwarders { 208.67.222.222; 208.67.220.220; };</p></blockquote>
<p>on la remplace par</p>
<blockquote><p>forwarders { 127.0.0.1 port 52; };</p></blockquote>
<p>et on relance bind</p>
<blockquote><p>/etc/init.d/bind9 restart</p></blockquote>
<p>Aand voila !<br />
Désormais, toutes les requêtes DNS venant de votre lan et adressées au routeur seront transmises à OpenDNS via DNScrypt :coolfuck:</p>https://blog.crifo.org/post/2011/12/16/Securisez-vos-connexions-DNS-avec-DNScrypt#comment-formhttps://blog.crifo.org/feed/atom/comments/90Afficher les graphiques de munin plus rapidementurn:md5:90221674d330f9c4e20da7a2f8bb27a72011-12-05T20:20:00+01:002011-12-05T20:23:25+01:00DjuServeurjquerymonitoringmunin<p><img src="https://blog.crifo.org/public/201001/munin/.munin_thumb_t.jpg" alt="munin_thumb.jpg" style="float:left; margin: 0 1em 1em 0;" title="munin_thumb.jpg, janv. 2010" />
Aujourd'hui un petit truc & astuce pour Munin, consistant à optimiser un peu l'affichage des graphs grâce à Jquery..<br />
Le but: simplement de ne charger que le graph que l'on souhaite regarder, et pas tous les autres, de manière à ne pas attendre, particulièrement si on veut consulter un graph se trouvant en fin de page <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p> <p>Qund on affiche la page d'une machine, on peut avoir beaucoup de graphs affichés.<br />
Et si vous souhaitez regarder celui qui est toouuut en bas de la page, faut attendre un peu le temps que tous les autres se chargent..</p>
<p>Je vous propose ici une petite astuce pour remédier à cela, grâce à Jquery.<br />
Cela permettra de ne charger et afficher que ce qui est à l'écran, et non ce qui en dessous/dessus.</p>
<p>On commence donc par se rendre dans le dossier munin, y crééer un dossier js, dans lequel nous allons enregistrer 2 scripts <br />
1/ Jquery</p>
<blockquote><p>cd /var/www/munin<br />
mkdir js<br />
cd js<br />
wget http://code.jquery.com/jquery-1.7.js (ou http://code.jquery.com/jquery-1.7.1.min.js pour la version minified)<br />
wget http://www.appelsiini.net/projects/lazyload/img/grey.gif</p></blockquote>
<p>Puis on va avoir besoin de <a href="https://blog.crifo.org/post/2011/12/05/LazyLoad">http://www.appelsiini.net/projects/lazyload</a>, librairie écrite avec Jquery</p>
<blockquote><p>wget https://raw.github.com/tuupola/jquery_lazyload/master/jquery.lazyload.js (ou https://raw.github.com/tuupola/jquery_lazyload/master/jquery.lazyload.min.js pour la minified)</p></blockquote>
<p>on accorde au dossier js le meme que les autres fichiers/dossier dans munin</p>
<blockquote><p>chown -R munin:munin /var/www/munin/js</p></blockquote>
<p>Enfin, on va éditer le template de munin pour activer tout ca :<br />
On édite le fichier <strong>/etc/munin/templates/partial/head.tmpl</strong><br />
Juste avant /head on rajoute</p>
<pre>
<script src="/munin/js/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="/munin/js/jquery.lazyload.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("img").lazyload({
effect : "fadeIn"
});
});
</script>
</pre>
<p>La premiere ligne appelle la librairie Jquery, tandis que la 2è appelle la fonction LazyLoad, permettant de charger les images au fur et à mesure que la page défilera, et affichera des images pas encore chargées.<br />
Les suivantes déclenchent l'évènement avec un petit effet fadeIn des plus sympas</p>
<p>Enfin, on modifie le fichier <strong>/etc/munin/templates/munin-nodeview.tmpl</strong> qui est celui de la page affichant tous les graphes pour un noeud donné :</p>
<blockquote><p>cd /etc/munin/templates<br />
sed -i -e 's!src="https://blog.crifo.org/post/2011/12/05/!src="/munin/img/grey.gif" data-original="!g' munin-nodeview.tmpl</p></blockquote>
<p>ici le template est modifié de manière à afficher <strong>par défaut</strong> une simple image de 1 pixel de largeur nommé grey.gif.<br />
Et c'est seulement lorsque la page aura été défilée que LazyLoad intervient en remplacant la source de l'image par celle spécifiée dans l'attribut data-original, avec l'effet fadeIn.</p>
<p>A partir de maintenant, on attend 5 minutes au max pour que munin génère à nouveau les fichiers HTML et on admire <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>https://blog.crifo.org/post/2011/12/05/Afficher-les-graphiques-de-munin-plus-rapidement#comment-formhttps://blog.crifo.org/feed/atom/comments/89Un nouveau mirroir pour Debianurn:md5:84d111589ff3aabd145c687a9b19c31d2011-12-04T18:50:00+01:002011-12-04T18:56:41+01:00DjuDebiandebianisomirroir<p><img src="https://blog.crifo.org/public/201112/.debian_t.jpg" alt="debian.jpg" style="float:left; margin: 0 1em 1em 0;" title="debian.jpg, déc. 2011" />
Comme j'utilise régulièrement Debian et que je l'apprécie de plus en plus, aussi bien en desktop, qu'en serveur, je me disais bien qu'il serait une bonne chose de participer un peu plus à son développement.<br />
C'est pourquoi j'ai choisi de créer un miroir officiel</p> <p><br />
Ce mirroir va donc distribuer les images CD au format ISO de debian, pour toutes les architectures :<br />
- amd64<br />
- i386<br />
- armel<br />
- ia64<br />
- kfreebsd-amd64<br />
- kfreebsd-i386<br />
- mips<br />
- mipsel<br />
- multi-arch (un cd contenant à la fois i386 e amd-64, bien pratique)<br />
- power-pc<br />
- s390<br />
- sparc</p>
<p>On y retrouve aussi les images de la version "Live", permettant d'executer debian sans l'installer.</p>
<p>Ce mirroir a donc été inscrit la semaine dernière, et a été validé aujourd'hui le dimanche 04 décembre 2011. il devrait apparaitre d'ici peu dans la liste officielle.<br />
Il est accessible en FTP (<a href="ftp://ftp.crifo.org/debian-cd/" title="ftp://ftp.crifo.org/debian-cd/">ftp://ftp.crifo.org/debian-cd/</a>) et également en HTTP (<a href="http://ftp.crifo.org/debian-cd/" title="http://ftp.crifo.org/debian-cd/">http://ftp.crifo.org/debian-cd/</a>)</p>
<p>Bons téléchargements <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>https://blog.crifo.org/post/2011/12/04/Un-nouveau-mirroir-pour-Debian#comment-formhttps://blog.crifo.org/feed/atom/comments/88Kernel debian et driver e1000e sur kimsufi 16Gurn:md5:81563d54d764cae955a51c3f32ae7cd52011-09-17T13:28:00+02:002012-02-03T13:24:18+01:00DjuServeur16debiane1000ekernelkimsufiovh<p><img src="https://blog.crifo.org/public/201107/.logo_ovh_t.jpg" alt="logo_ovh" style="float:left; margin: 0 1em 1em 0;" title="logo_ovh, juil. 2011" />
Lorsque le kimsufi 16G est livré, est installé dessus un kernel made in ovh. Ce kernel interdit entre autre la gestion classique/manuelle des modules avec lsmod et modprobe, et peut également avoir du retard lors des mises à jour pour les diverses failles de sécurité.<br />
Voici un petit mode d'emploi pour revenir au kernel debian "standard", ainsi que pour installer le module e1000e de la carte réseau, non supporté par le kernel debian.<br /></p> <p>En court:<br />
- redémarrage en rescue<br />
- installation du kernel debian (à l'heure actuelle le 2.6.32-5-amd64)<br />
- récuperation et compilation du module e1000e<br />
- reboot</p>
<p>On commence donc par aller se logger sur <a href="https://www.ovh.com/managerv3/">le manger OVH</a> puis on va dans services >netboot et on choisit rescue-pro (et eventuellement le champs en dessous pour son adresse email).<br />
Sur le serveur, un simple /sbin/reboot pour relancer la machine.<br />
2 minutes après, réception d'un mail de ovh avec les identifiants pour se connecter en ssh. c'est la que les choses intéressantes comment <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>
<p>on commence par monter la partition / et les proc/sys/dev pour se chrooter</p>
<blockquote><p>mount -t ext4 /dev/sda1 /mnt<br />
mount -o bind /proc /mnt/proc<br />
mount -o bind /sys /mnt/sys<br />
mount -o bind /dev /mnt/dev<br />
chroot /mnt</p></blockquote>
<p>maintenant qu'on est dans notre environnement habituel, on install le kernel debian, ses headers, et le necessaire pour compiler</p>
<blockquote><p>aptitude update<br />
aptitude install linux-image-amd64<br />
aptitude install linux-headers-2.6-amd64<br />
aptitude install build-essential</p></blockquote>
<p>on récupère le driver intel pour la carte réseau e1000e (<a href="http://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=15817">page officielle sur le site intel ici</a>)</p>
<blockquote><p>cd /opt<br />
wget http://downloadmirror.intel.com/15817/eng/e1000e-1.5.1.tar.gz<br />
tar xvzf e1000e-1.5.1.tar.gz<br />
cd e1000e-1.5.1/src</p></blockquote>
<p>ici, bien qu'on soit chrooté, il faut indiquer pour quel kernel on souhaite compiler, car en mode rescue, on tourne sur un kernel ovh, et non le debian standard</p>
<blockquote><p>export BUILD_KERNEL=2.6.32-5-amd64</p></blockquote>
<p>et on compile le module</p>
<blockquote><p>make<br />
make install</p></blockquote>
<p>NOTE: sur une debian recente, il est possible que vous obteniez une erreur lors de ces 2 commandes. dans ce cas la, compilez en utilisant cette commande :</p>
<blockquote><p>make CFLAGS_EXTRA=-DDISABLE_PM<br />
make CFLAGS_EXTRA=-DDISABLE_PM install</p></blockquote>
<p>On n'oublie surtout pas de mettre le module dans la liste des modules à charger au démarrage <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<blockquote><p>echo e1000e >> /etc/modules</p></blockquote>
<p>Et on vire le kernel ovh, sinon il sera toujours en premier dans grub</p>
<blockquote><p>cd /etc/grub.d<br />
rm 06_OVHkernel<br />
cd /boot/<br />
rm System.map-2.6.38.2-xxxx-grs-ipv6-64<br />
rm bzImage-2.6.38.2-xxxx-grs-ipv6-64</p></blockquote>
<p>Et on dit à grub de rescanner les kernels</p>
<blockquote><p>update-grub</p></blockquote>
<p>enfin, on démonte le chroot,</p>
<blockquote><p>exit<br />
umount /mnt/proc<br />
umount /mnt/dev<br />
umount /mnt/sys<br />
umount /mnt</p></blockquote>
<p>puis on n'oublie pas non plus de retourner sur le manager OVH, dans services > netboot et de choisir HD (sinon ,ça rebootera à nouveau en rescue)</p>
<p>enfin, on redémarre et on croise les doigts :p</p>
<blockquote><p>/sbin/reboot</p></blockquote>https://blog.crifo.org/post/2011/09/17/Kernel-debian-et-driver-e1000e-sur-kimsufi-16G#comment-formhttps://blog.crifo.org/feed/atom/comments/85Températures du kimsufi 16G sous debianurn:md5:7fae979e5a185b1d9633dbbd0832c75c2011-07-23T09:50:00+02:002012-03-07T19:38:50+01:00DjuServeur16gdebiankimsufilm-sensorsovhw83627ehfw83677HG<p><img src="https://blog.crifo.org/public/201107/.logo_ovh_t.jpg" alt="logo_ovh" style="float:left; margin: 0 1em 1em 0;" title="logo_ovh, juil. 2011" />
Après pas mal de recherches, notamment sur la carte mère Intel DH67BL et le module w83677HG, pour ceux qui ont un kimsufi 16G sous debian ou autre nux, et qui se demandent comment avoir les températures..<br />
En effet, le module coretemp refuse de se charger, lm-sensors ne detecte rien, et pas d'ipmi...<br />
Voici la solution <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p> <p>On va avoir besoin de 2 choses :</p>
<p>quelques lignes à ajouter dans <strong>/etc/sensors3.conf</strong> pour indiquer le nom des sensors et les valeurs min/max</p>
<pre>
# Created for board DH67BL using information from Intel Desktop Utilities and BIOS
# "FRONT" and "REAR" fan labels correspond to the motherboard
# headers, but not necessarily the actual fan locations.
chip "nct6775-isa-0290"
# Fans
label fan1 "Rear fan"
set fan1_min 250 # From IDU
label fan2 "CPU fan"
set fan2_min 250 # From IDU
label fan3 "Front fan"
set fan3_min 250 # From IDU
# There is no fan4 on the board
ignore fan4
# Voltages
# Processor Vcc
label in0 "Vcore"
set in0_min 0.6 # From IDU
set in0_max 1.6 # From IDU
# This should be "12 Volts", but computations are strange
label in1 "+12V"
compute in1 11*@, @/11
set in1_min 11.1 # From IDU
set in1_max 12.9 # From IDU
# AVCC(?) - Not shown in BIOS or IDU
label in2 "AVCC"
set in2_min 3.0 # same as +3.3V
set in2_max 3.6 # same as +3.3V
# +3.3 Volts
label in3 "+3.3V"
set in3_min 3.0 # from IDU
set in3_max 3.6 # from IDU
# +5 Volts
label in4 "+5V"
compute in4 5*@, @/5
set in4_min 4.6 # from IDU
set in4_max 5.4 # from IDU
# Memory Vcc ("SDRAM Vcc" in IDU)
label in5 "MemV"
compute in5 1.5*@, @/1.5
set in5_min 0.4 # from IDU
set in5_max 2.0 # from IDU
# PCH Vcc
label in6 "PCHV"
set in6_min 0.6 # from IDU
set in6_max 1.6 # from IDU
# +3.3 Volt Standby
label in7 "3VSB"
set in7_min 3.0 # from IDU
set in7_max 3.6 # from IDU
# VBAT(?) - Not shown in BIOS or IDU
label in8 "Vbat"
# It shows +2.050 V, seems to be not used
ignore cpu0_vid
# Temperatures
# Labeled as "SYSTIN"
# Guess!
label temp1 "VR temp"
set temp1_max 90 # From IDU
set temp1_max_hyst 75 # From IDU
# Labeled as "CPUTIN"
label temp2 "CPU temp"
set temp2_max 93 # From IDU
set temp2_max_hyst 75 # From IDU
# Labeled as "PECI Agent 0"
# Guess!
label temp3 "Memory DIMM temp"
set temp3_max 90 # From IDU
set temp3_max_hyst 75 # From IDU
# Labeled as "PCH_CHIP_TEMP"
label temp4 "PCH temp"
# Labeled as "PECI Agent 1"
# Not used
ignore temp8
</pre>
<p>Puis on va avoir besoin d'un module capable de lire les sensors (le plus important)<br />
on va télécharger les 3 fichiers présents ici: http://www.roeck-us.net/linux/drivers/w83627ehf/<br />
Puis on installe le necessaire pour compiler (build-essentials et les linux-headers)<br />
Puis on compile le module, on le copie ou il faut et on rescanne la liste de tous les modules, et enfin on l'ajoute au fichier <strong>/etc/modules</strong> pour qu'il soit chargé au démarrage.</p>
<blockquote><p>aptitude install build-essentials linux-headers-$(uname -r)<br />
cd /opt<br />
mkdir w83627ehf<br />
cd w83627ehf<br />
wget http://www.roeck-us.net/linux/drivers/w83627ehf/Makefile<br />
wget http://www.roeck-us.net/linux/drivers/w83627ehf/lm75.h<br />
wget http://www.roeck-us.net/linux/drivers/w83627ehf/w83627ehf.c<br />
make<br />
cp ./w83627ehf.ko /lib/modules/2.6.32Effe-5-amd64/kernel/drivers/hwmon/<br />
depmod -a<br />
modprobe w83627ehf<br />
echo w83627ehf >> /etc/modules</p></blockquote>
<p><br />
Des fois que le site ne réponde plus, je vous ai fait un petit zip avec les 3 fichiers source, plus le module .ko compilé pour debian en kernel 2.6.32.5<br />
Vous pouvez <a href="https://blog.crifo.org/public/201107/w83677hg.zip">le télécharger ici</a></p>
<p>Et voila ! on peut maintenant faire un</p>
<blockquote><p>modprobe w83627ehf</p></blockquote>
<p>puis un</p>
<blockquote><p>sensors</p></blockquote>
<p>et admirer le résultat :</p>
<pre>
nct6775-isa-0290
Adapter: ISA adapter
Vcore: +0.82 V (min = +0.00 V, max = +1.74 V)
+12V: +12.58 V (min = +0.00 V, max = +0.00 V) ALARM
AVCC: +3.34 V (min = +0.00 V, max = +0.00 V) ALARM
+3.3V: +3.34 V (min = +0.00 V, max = +0.00 V) ALARM
+5V: +5.24 V (min = +0.00 V, max = +0.00 V) ALARM
MemV: +1.57 V (min = +0.00 V, max = +0.00 V) ALARM
PCHV: +1.08 V (min = +0.00 V, max = +0.00 V) ALARM
3VSB: +3.41 V (min = +0.00 V, max = +0.00 V) ALARM
Vbat: +3.36 V (min = +0.00 V, max = +0.00 V) ALARM
Rear fan: 0 RPM (min = 0 RPM, div = 128)
CPU fan: 0 RPM (min = 0 RPM, div = 128)
Front fan: 0 RPM (min = 0 RPM, div = 128)
VR temp: +35.0°C (high = +0.0°C, hyst = +0.0°C) ALARM sensor = diode
CPU temp: +29.5°C (high = +80.0°C, hyst = +75.0°C) sensor = diode
Memory DIMM temp: +33.0°C (high = +80.0°C, hyst = +75.0°C) sensor = diode
PCH temp: +50.0°C
</pre>
<p>source: http://lists.lm-sensors.org/pipermail/lm-sensors/2011-May/032644.html</p>https://blog.crifo.org/post/2011/07/23/Temperatures-du-kimsufi-16G-sous-debian#comment-formhttps://blog.crifo.org/feed/atom/comments/84SOL : déport d'écran et clavier via IPMIurn:md5:144f209be63741d9647cf55d31512ae32011-07-13T20:20:00+02:002011-07-13T23:55:54+02:00DjuServeuripmiipmitoollinuxserveursol<p><img src="https://blog.crifo.org/public/201004/.netcard_t.jpg" alt="netcard.jpg" style="float:left; margin: 0 1em 1em 0;" title="netcard.jpg, avr. 2010" /> Voici une autre fonctionnalité extrêmement intéressante de l'IPMI: la possibilité d'obtenir à distance un shell sur une machine, en plus de pouvoir surveiller tout le processus de boot<br />
J'ai nommé: SOL (pour Serial Over Lan)<br />
En clair: déporter écran et clavier via l'IPMI.</p>
<p>Ainsi, si on se trompe dans la configuration réseau, par exemple, et que la machine n'est plus joignable, on peut toujours s'y connecter via ipmi et réparer avec le shell (donc sur une machine windows c'est pas la peine hein ? :p )</p>
<p>De même, si on doit absolument rebooter une machine, on peut donc assister à tout le processus de boot, rentrer dans le bios, taper F1 si on a oublié de désactiver la vérification du clavier au démarrage :D .... etc</p> <p><strong>Comment c'est y qu'on fait ?</strong></p>
<p>Tout d'abord, il faut avoir activé l'IPMI sur la machine (<a href="https://blog.crifo.org/post/2010/04/02/Configurer-IPMI-simplement">voir billet à ce sujet</a>)</p>
<p>Ensuite, il faut s'assurer que l'IPMI que vous avez dispose bien de la fonction SOL, car ce n'est pas forcémment le cas...<br />
Pour ce faire, un coup de</p>
<blockquote><p>ipmitool bmc info</p></blockquote>
<p>à la ligne IPMI Version, vérifier que la valeur est bien 2.0</p>
<p>Si vous avez 1.5, alors vous n'avez pas de SOL. (edit: à confirmer, il y a une option isol dans ipmitool qui concerne le 1.5...)</p>
<p>Pour ceux qui ont pu suivre jusqu'ici, il faut désormais configurer votre machine pour avoir un terminal sur le port série ipmi.</p>
<p>Pour ce faire, on édite le fichier <strong>/etc/inittab</strong> (au moins pour tous les *nux à base de debian - mais pas ubuntu)</p>
<p>Vers le bas, on recherche la ligne</p>
<blockquote><p>#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100</p></blockquote>
<p>on la décommente (en enlevant le # en début de ligne) puis on change le 9600 (la vitesse du port) en 57600, éventuellement en 115200<br />
(par défaut, la vitesse est à 57600, on peut le changer dans le bios)</p>
<p>pour ubuntu, voire <a href="https://help.ubuntu.com/community/SerialConsoleHowto">la page de référence</a></p>
<p>Puis, pour faire prendre en compte la nouvelle config, on tape</p>
<blockquote><p>init q</p></blockquote>
<p>ou</p>
<blockquote><p>kill -HUP 1</p></blockquote>
<p>Puis on vérifié qu'il y a bien un nouveau terminal prêt à recevoir des commandes sur le port série :</p>
<blockquote><p>ps aux | grep getty</p></blockquote>
<p>on obtient quelque chose comme ceci :</p>
<pre>
root 3374 0.0 0.0 3800 576 tty1 Ss+ Jul07 0:00 /sbin/getty 38400 tty1
root 3375 0.0 0.0 3800 576 tty2 Ss+ Jul07 0:00 /sbin/getty 38400 tty2
root 3376 0.0 0.0 3800 580 tty3 Ss+ Jul07 0:00 /sbin/getty 38400 tty3
root 3377 0.0 0.0 3800 580 tty4 Ss+ Jul07 0:00 /sbin/getty 38400 tty4
root 3379 0.0 0.0 3800 580 tty5 Ss+ Jul07 0:00 /sbin/getty 38400 tty5
root 3380 0.0 0.0 3800 576 tty6 Ss+ Jul07 0:00 /sbin/getty 38400 tty6
root 10166 0.0 0.0 7244 860 pts/0 S+ 14:49 0:00 grep getty
root 22261 0.0 0.0 3800 584 ttyS1 Ss+ Jul12 0:00 /sbin/getty -L ttyS1 115200 vt100
</pre>
<p>A la dernière ligne, on voit bien le nouveau terminal dispo sur <strong>ttyS1</strong></p>
<p>Enfin, on s'y connecte depuis une autre machine :</p>
<blockquote><p>ipmitool -I lanplus -H machine_ipmi -U root -P password sol activate</p></blockquote>
<p>A partir de la, on appuie sur enter, et on devrait obtenir l'invitation au login/password <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p>Finalement, une fois qu'on a fait ce qu'on a à faire, on interrompt la session ipmi en tapant <strong>~.</strong> (tilde et point)</p>
<p>puis depuis la machine client, on ferme la session ipmi</p>
<blockquote><p>ipmitool -I lanplus -H machine_ipmi -U root -P pass sol deactivate</p></blockquote>https://blog.crifo.org/post/2011/07/13/SOL-deport-d-ecran-et-clavier-via-IPMI#comment-formhttps://blog.crifo.org/feed/atom/comments/83Monitorez l'uptime de votre freebox sans téléurn:md5:af395078c231184a96d2c331d98f2afb2010-12-26T18:30:00+01:002010-12-29T19:29:38+01:00DjuServeurfreeboxmuninnmapuptime<p><img src="https://blog.crifo.org/public/201012/.fbx_v5_t.jpg" alt="fbx_v5" style="float:left; margin: 0 1em 1em 0;" title="fbx_v5, déc. 2010" />
Aujourd'hui une petite astuce pour connaitre et monitorer l'uptime de votre freebox, sans avoir à la brancher à la télé, et de manière automatique grâce à munin.<br />
Mais comment donc, me demandez vous ? <br />
Grâce à la RFC 1323, <a href="http://seclists.org/nmap-dev/2001/q1/5">et surtout Nmap</a></p> <p><br />
<br />
Comme vous le savez peut être, la freebox est directement joignable avec le nom mafreebox.freebox.fr, et répond sur quelques ports tcp.<br />
Juste ce qu'il nous faut <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p>Commencons avec un</p>
<blockquote><p>nmap -O mafreebox.freebox.fr pour avoir quelques infos :</p></blockquote>
<pre>
Starting Nmap 4.62 ( http://nmap.org ) at 2010-12-26 18:03 CET
Interesting ports on freeplayer.freebox.fr (212.27.38.253):
Not shown: 1712 filtered ports
PORT STATE SERVICE
80/tcp open http
554/tcp open rtsp
9100/tcp open jetdirect
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: remote management|WAP|general purpose|broadband router
Running (JUST GUESSING) : HP embedded (98%), Linksys embedded (94%), Linux 2.6.X (94%)
Aggressive OS guesses: HP Onboard Administrator management console (98%), Linksys WRT300N wireless broadband router (94%), Linux 2.6.18 - 2.6.22 (94%), Linksys WRV200 wireless broadband router (93%), Linux 2.6.15 - 2.6.20 (93%), Linux 2.6.20 (Ubuntu 7.04 server, x86) (90%), Linux 2.6.13 - 2.6.24 (90%), Linux 2.6.24 (Debian) (89%), Linux 2.6.22 - 2.6.23 (88%)
No exact OS matches for host (test conditions non-ideal).
Uptime: 3.228 days (since Thu Dec 23 12:35:21 2010)
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 31.066 seconds
</pre>
<p>Avec cette commmande, on indique à nmap de scanner la freebox et de deviner l'OS qui la fait tourner.<br />
On peut y voir l'uptime :coolfuck:</p>
<p>Maintenant, affinons la commande pour ne scanner que le port 80 et ainsi réduire le temps de scan</p>
<blockquote><p>nmap -O --osscan-guess -p80 mafreebox.freebox.fr</p></blockquote>
<pre>
Starting Nmap 4.62 ( http://nmap.org ) at 2010-12-26 18:06 CET
Interesting ports on freeplayer.freebox.fr (212.27.38.253):
PORT STATE SERVICE
80/tcp open http
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: remote management
Running: HP embedded
OS details: HP Onboard Administrator management console
Uptime: 3.230 days (since Thu Dec 23 12:35:22 2010)
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 2.325 seconds
</pre>
<p>Et hop, on est passé à 2 secondes et demi.</p>
<p>Maintenant qu'on est capable de déterminer l'uptime de la freebox à distance, on peut alors utiliser cette commande pour créer un plugin pour <a href="https://blog.crifo.org/post/2010/01/12/Monitorer-son-serveur-avec-Munin">Munin</a><br />
J'ai donc écrit ce plugin et l'ai mis à disposition sur le site <a href="http://exchange.munin-monitoring.org/">Munin Exchange</a>, contenant tous les plugins créés pour munin<br />
Comme munin effectue ses checks toutes les 5 minutes, j'ai fait en sorte que le plugin utilise un cache, et ainsi, détermine l'uptime toutes les 3 heures (c'est configurable of course)<br />
De même, ce plugin remonte la date du dernier reboot, du dernier check, et la fréquence de check.<br />
Dans une prochaine version, sera inclus l'envoi d'alarme pour détecter que la freebox a rebooté <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>
<p>Voila un petit screen du plugin :
<img src="https://blog.crifo.org/public/201012/.freeboxuptime_m.jpg" alt="FreeboxUptime.jpg" title="FreeboxUptime.jpg, déc. 2010" /></p>
<p>Le plugin est accessible ici : <a href="http://exchange.munin-monitoring.org/plugins/freeboxuptime/details/">http://exchange.munin-monitoring.org/plugins/freeboxuptime/details/</a><br />
Pour l'instant il est en cours de validation ,ce qui donne une erreur quand on essaye d'accéder au lien ci dessus.<br />
Mais d'ici peu, il sera disponible</p>
<p>edit: en attendant que le plugin soit validé, vous pouvez le télécharger <a href="https://blog.crifo.org/public/201012/FreeboxUptime.zip">directement ici</a></p>
<p>Pour installer le plugin :<br />
dézippez le puis mettez le script dans le dossier <strong>/usr/share/munin/plugins/</strong>, faites un lien symboliques vers /etc/munin/plugins/</p>
<blockquote><p>unzip ./FreeboxUptime.zip<br />
mv ./FreeboxUptime /usr/share/munin/plugins/<br />
chmod +x /usr/share/munin/plugins/FreeboxUptime<br />
ln -s /usr/share/munin/plugins/FreeboxUptime /etc/munin/plugins/FreeboxUptime</p></blockquote>
<p>enfin, éditer le fichier <strong>/etc/munin/plugin-conf.d/munin-node</strong> et rajoutez y ces 2 lignes :</p>
<blockquote><p>[FreeboxUptime]<br />
user root</p></blockquote>
<p>et redémarrez munin</p>
<blockquote><p>/etc/init.d/munin-node restart</p></blockquote>
<p>Enjoy <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>https://blog.crifo.org/post/2010/12/24/Monitorez-l-uptime-de-votre-freebox-sans-tele#comment-formhttps://blog.crifo.org/feed/atom/comments/80Envoyer les alertes de munin sur twitterurn:md5:e8d4ddd7878cf7c9cb944f3f38e72f082010-12-21T20:22:00+01:002010-12-24T21:43:24+01:00DjuServeuralertesapcupsdmonitoringmuninonduleurserveurtwitter<p><img src="https://blog.crifo.org/public/201012/.twitter_t.jpg" alt="twitter" style="float:left; margin: 0 1em 1em 0;" title="twitter, déc. 2010" />
Aujourd'hui, une petite explication sur comment faire pour que munin cause à twitter.<br />
C'est bien d'envoyer des alertes par email, mais c'est encore mieux d'en envoyer également sur un compte twitter que l'on pourra facilement lire<br />
Et c'est tellement web 2.0 ... :p</p> <p><br />
Voici comment cela fonctionne:<br />
- un module capable de poster sur twitter<br />
- un compte unique dans lequel les message apparaitront<br />
- 2 lignes à rajouter dans le fichier de configuration de munin</p>
<p>Tout d'abord, on va se créer un nouveau compte twitter, on se rend <a href="https://twitter.com/signup">sur cette page du site twitter</a><br /></p>
<p>Une fois le compte créé, activé, connectez vous avec ce nouveau compte sur twitter.<br />
N'oubliez pas d'aller dans les préférences (profil > éditer votre profil) et de cocher la case "protéger mes tweets", histoire de ne pas dire à tout le monde que vos serveurs sont en rade :p</p>
<p>Puis, on va jetter un oeil <a href="http://blog.nicolargo.com/2010/11/twitter-en-ligne-de-commande-meme-avec-oauth.html">sur l'excellent article de nicolargo</a> qui va nous permettre d'obtenir un module python capable de poster des twits.<br />
(pour information, il était auparavant possible de le faire très simplement avec curl et l'authentification en HTTP, mais il faut maintenant utiliser <a href="http://oauth.net/">oAuth</a>)</p>
<p>Une fois la procédure d'installation suivie, on a donc un script exécutable, nommé tweetitcli.py. On le déplace dans /sbin</p>
<blockquote><p>mv ./tweetitcli /sbin/tweetitcli.py</p></blockquote>
<p>on vérifie qu'il fonctionne en postant un message de test :</p>
<blockquote><p>/sbin/tweetitcli.py 'message de test qui roxx'</p></blockquote>
<p>le message devrait alors apparaitre dans votre compte nouvellement créé.</p>
<p>Maintenant, passons aux choses sérieuse : faut interfacer le bouzin avec munin...<br />
Après moult tests (car munin est en fait assez sensible), j'ai pu trouver THE combinaison qui fonctionne au poil <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p>on va donc éditer le fichier <strong>/etc/munin/munin.conf</strong><br />
Normalement, vous devriez deja avoir une ou deux ligne commencant par "contact.moi.command ..." pour avoir les alertes par email.
En dessous on va rajouter les 2 lignes suivantes :</p>
<blockquote><p>contact.tweeter.command /sbin/munin-alrt.sh<br />
contact.tweeter.always_send warning critical</p></blockquote>
<p>Si vous êtes un peu attentif, vous vous demandez ce que ce script munin-alrt.sh vient faire la.... <br />
C'est tout simplement car le script python précédemment obtenu ne fonctionne pas avec un <strong>pipe</strong> <br />
En effet, lorsque munin va vouloir exécuter la commande du contact, il va faire (en gros) un</p>
<blockquote><p>echo "données" | command</p></blockquote>
<p>C'est pourquoi il nous faut faire un petit script shell qui va récupérer les données passées dans le pipe, puis appeler le script python pour envoyer le twit.<br />
On édite donc le fichier /sbin/munin-alrt.sh et on met dedans ces quelques lignes :</p>
<pre>
#!/bin/bash
DATASTDIN=$(tr '[:upper:]' '[:lower:]' < /dev/stdin)
[ ${#DATASTDIN} -gt 140 ] && DATASTDIN=${DATASTDIN:0:140}
/sbin/tweetitcli.py "$DATASTDIN"
</pre>
<p>par mesure de précaution, on peut rajouter dans ce meme script une petite ligne pour logger les alertes :</p>
<blockquote><p>echo "$DATASTDIN" >> /var/run/munin/munin-tweeter.log</p></blockquote>
<p>qu'on désactivera une fois que tout marche bien.</p>
<p>puis, une fois le fichier enregistré et fermé, on n'oublie pas de donner les permissions d'execution<br /></p>
<blockquote><p>chmod +x /sbin/munin-alrt.sh</p></blockquote>
<p>Accessoirement, au script python aussi</p>
<blockquote><p>chmod +x /sbin/tweetitcli.py</p></blockquote>
<p>Encore une fois, on vérifie que ce script fonctionne bien et appelle tweetitcli.py :</p>
<blockquote><p>echo "Deuxième message de test" | /sbin/munin-alrt.sh</p></blockquote>
<p>Enfin, afin de valider que ça fonctionne bien, on va se créer un petit plugin de test qui va générer des alertes.
on édite le fichier /etc/munin/plugins/test_alarm.sh et on met dedans les lignes suivantes :</p>
<pre>
#!/bin/bash
if [ "$1" = "config" ]; then
echo 'graph_title test plugin'
echo 'graph_category test'
echo 'test.label testValue'
echo 'test.warning 2'
echo 'test.critical 3'
exit 0
fi
if [ "$1" = "autoconf" ]; then
echo 'yes'
exit 0
fi
echo test.value 2.1
</pre>
<p>ici, on met la valeur à 2.1 pour générer un warning. On pourra ensuite éditer ce plugin pour la passer à par exemple 3.2 pour générer un critical, et enfin à 1.5 pour recevoir une confirmation OK.<br />
On le rend également executable</p>
<blockquote><p>chmod +x /etc/munin/plugins/test_alarm.sh</p></blockquote>
<p>et finalement, on relance munin</p>
<blockquote><p>/etc/init.d/munin-node restart</p></blockquote>
<p>puis on attend quelques minutes (les detection se font toutes les 5 minutes)<br />
Et normalement, si vous allez sur votre compte twitter précédemment créé, vous verrez votre alerte qui pête le style "web 2.0" <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p><img src="https://blog.crifo.org/public/201012/munin-twitter-1.jpg" alt="munin-twitter-1.jpg" title="munin-twitter-1.jpg, déc. 2010" /></p>
<p>une fois l'alerte reçue, re-éditez le plugin de test, et changez la valeur. 5 minutes après, 2è alerte :
<img src="https://blog.crifo.org/public/201012/munin-twitter-2.jpg" alt="munin-twitter-2.jpg" title="munin-twitter-2.jpg, déc. 2010" /></p>
<p>Et voila ! c'est pas beau la technologie ?</p>
<p>Vous pouvez maintenant au choix surveiller ce nouveau compte, ou bien avec votre compte habituel vous y abonner de manière à recevoir les alertes.<br />
Ici, j'ai créé un 2è compte histoire de ne pas pourrir le 1er si y'a des problèmes... c'est votre choix</p>
<p><strong>-> Que faire si ça marche pas ?!!!</strong></p>
<p>Pour ma part, quand je faisais mes tests et que ça bloquait, un des symptômes était que le html n'était plus généré (voir la date du fichier /var/log/munin/munin-html.log)<br />
Également, j'avais pas mal de process munin et munin-limits qui tournaient et restaient bloqués (ps aux | grep munin), qui devraient normalement se femer au bout de 30 à 60 secondes.<br />
Alez jetter un coup d'oeil dans les logs, ainsi que dans votre boite mail (cron vous envoie un mail si ca bloque)<br />
Enfin, allez voir <a href="http://munin-monitoring.org/wiki/Debugging_Munin_plugins">les méthodes de debug sur le wiki officiel de munin</a></p>
<p><strong><ins>EDIT au 23/12/2010</ins></strong><br />
Pendant qu'on est dans l'alerting par twitter, voici également un moyen de remonter les alertes de votre onduleur, <a href="https://blog.crifo.org/post/2010/01/04/Gerer-un-onduleur-avec-ubuntu">avec apcupsd</a><br />
apcupsd utilisant des scripts shell pour envoyer des alertes, il suffit, maintenant qu'on a le script twitter, de simplement rajouter 2 lignes à la fin, juste avant le "exit 0" :</p>
<blockquote><p>TWITCMD=/sbin/twit_alert.py<br />
$TWITCMD "$MSG"</p></blockquote>
<p>il faut donc rajouter ces 2 lignes dans les script suivant, se trouvant dans le repertoire <strong>/etc/apcupsd/</strong><br />
- changeme : lorsque la batterie est naze et a besoin d'être remplacée<br />
- commfailure : perte de connexion entre la machine et l'onduleur <br />
- commok : la liaison avec l'onduleur est rétablie<br />
- offbattery : lors d'une coupure de courant, l'onduleur passe sur batterie<br />
- onbattery : courant rétabli après une coupure</p>
<p>Et voila le résultat que vous pourrez obtenir sur votre compte twitter en cas d'alerte :</p>
<p><img src="https://blog.crifo.org/public/201012/apcupsd_twitter.jpg" alt="apcupsd_twitter.jpg" title="apcupsd_twitter.jpg, déc. 2010" /></p>
<p>Sinon je suis à la recherche d'une methode équivalente pour <a href="https://blog.crifo.org/post/2009/12/26/Monitorer-son-serveur">Monit</a>, qui permet d'envoyer des alertes par email, mais pas d'executer directement une commande. Si vous savez comment faire, je suis tout ouie <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>https://blog.crifo.org/post/2010/12/21/Envoyer-les-alertes-de-munin-sur-twitter#comment-formhttps://blog.crifo.org/feed/atom/comments/79Le nouveau TLD non officiel "42"urn:md5:8afa84fabcd349e679d0a1bbe85235012010-12-20T20:00:00+01:002010-12-20T23:13:14+01:00DjuInternet4242registrydnstld<p><img src="https://blog.crifo.org/public/201012/.42big_t.jpg" alt="42registery" style="float:left; margin: 0 1em 1em 0;" title="42registery, déc. 2010" />
<a href="http://42registry.org">42registry.org</a> est une association loi 1901 qui propose non officiellement un nouveau TLD (Top Level domain) DNS: la zone "42".<br />
Ce nouveau domaine vise surtout le monde libre, tout en n'étant pas attaché officiellement à l'ICANN.</p> <p><br />
Afin d'en savoir plus sur la philosophie de la zone 42, voici un petit extrait :</p>
<hr />
<p><em>Nous tenons à réunir sous le TLD .42 non seulement les libristes, mais plus globalement tout ce qui a trait aux domaines scientifiques, en excluant l'aspect industriel.</em><br />
<em>Projets de recherche, logiciels libres, sites communautaires scientifiques, nouvelles technologies : ce sont les sujets que nous voulons retrouver derrière chaque domaine en .42. L'objectif étant qu'un utilisateur visitant un site muni de ce TLD ait la garantie de trouver un contenu constructif.</em><br />
<em>En somme, le .42 est avant tout un signe de reconnaissance pour les oeuvres, les communautés, les projets axés sur les nouvelles technologies, le progrès en général. Mis en place et maintenu bénévolement, il permettra de réunir une communauté que nous jugeons nécessaire de préserver et développer.</em></p>
<hr />
<p>et pour l'intégrale, allez voir <a href="http://www.42registry.org/">les FAQ officielles</a></p>
<p>Si vous le souhaitez, vous pouvez dès maintenant vous inscrire afin d'avoir votre propre nom de domaine (gratuit) en .42, ainsi qu'effectuez une donnation pour soutenir le projet.</p>
<p>Maintenant, afin de pouvoir résoudre les noms de domaines en .42, il vous faudra :<br />
1 - soit avoir votre propre DNS dans lequel vous rajouterez une zone pour le TLD 42<br />
2 - soit utiliser un serveur DNS capable de résoudre les noms de domaine en .42</p>
<p>Si vous avez un serveur Bind, ajouter dans votre fichier named.conf les lignes suivantes :</p>
<blockquote><p>zone "42" IN {<br />
type forward;<br />
forwarders { 91.191.147.246; 91.191.147.243; 81.93.248.69; 81.93.248.68; };<br />
};</p></blockquote>
<p>Si vous avez un Unbound, ajoutez cela :</p>
<blockquote><p>stub-zone:<br />
name: "42"<br />
stub-addr: 91.191.147.246<br />
stub-addr: 91.191.147.243<br />
domain-insecure: "42"</p></blockquote>
<p>pour JDB :<br /></p>
<blockquote><p>cd /services/dnscache<br />
echo 91.191.147.246 > root/servers/42<br />
echo 91.191.147.243 >> root/servers/42<br />
svc -t /services/dnscache</p></blockquote>
<p>pour PowerDNS :<br /></p>
<blockquote><p>echo "forward-zones=42=91.191.147.246;91.191.147.243" >> /etc/powerdns/recursor.conf</p></blockquote>
<p><br /></p>
<p>SI vous n'avez pas de serveur dns et souhaitez tout de même résoudre les NDD en .42, vous pouvez utiliser les DNS de <a href="http://www.geeknode.org/">Geeknode</a> :</p>
<blockquote><p>DNS Primaire : 81.93.248.69<br />
DNS Secondaire : 81.93.248.68<br />
DNS Terciaire : 91.194.60.196</p></blockquote>
<p>Enfin, sachez que sous windows, vous ne pourrez pas par défaut résoudre un TLD uniquement numérique. Il convient pour cela de faire un petit réglage.<br />
Vous pouvez soit <a href="http://support.microsoft.com/kb/947228">télécharger le patch officiel de microsoft</a>, soit procéder à la main comme suit :<br /></p>
<blockquote><p>Cliquez dur "Démarrer", puis dans "Exécuter" (sous Windows XP) ou dans "Rechercher" (Windows Vista/7), tapez regedit<br />
Recherchez et cliquez sur la sous-clé de Registre suivante : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters<br />
Dans le menu Edition, pointez sur Nouveau et cliquez sur Valeur DWORD.<br />
Tapez ScreenBadTlds et appuyez sur ENTREE.<br />
Cliquez avec le bouton droit sur ScreenBadTlds, puis cliquez sur Modifier<br />
Dans la zone données de la valeur, tapez 0 et cliquez sur OK.<br />
Quittez l'éditeur du Register<br />
Redémarrez votre machine (au besoin)</p></blockquote>
<p>Enfin, il ya deja pas mal de domaines en .42 enregistrés.<br />
par exemple: <a href="http://wikileaks.42">wikileaks.42</a> :D<br />
Et bientôt, crifo.42 devrait voir le jour...</p>
<p>EDIT: voila. le domaine crifo.42 existe désormais ! ce blog est donc également accessible via l'adresse <a href="http://blog.crifo.42">blog.crifo.42</a>.<br />
De même, mes 2 serveurs NTP sont accessibles à l'adresse <a href="http://ntp.crifo.42/">ntp.crifo.42</a> et <a href="http://ntp2.crifo.42">ntp2.crifo.42</a><br />
enjoy <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>
<p>EDIT2: pour ceux qui ont une serveur web nginx, et qui se demandent tout comme moi comment avoir une page index différente suivant le nom de domaine, pour un meme vhost. voici comment faire</p>
<p>1/ copier votre page, normalement index.html vers 2 fichiers: index.org.html et index.42.html:</p>
<p>2/ editer votre config nginx :</p>
<pre>
server {
server name monsite.org www.monsite.org monsite.42 www.monsite.42;
root /var/www/monsite;
if ($host ~"monsite.org") {
set $page_index "org";
}
if ($host ~"monsite.42") {
set $page_index "42";
}
index index.$page_index.html;
}
</pre>
<p>on définit donc une variable $page_index, dans laquelle ont mettra 42 ou org, suivant le hostname.<br />
Puis on l'appelle avec index.$index_page.html</p>
<p>Votre site est donc disponible avec sous sans les www, et avec une page index différente suivant que le site soit en .org ou .42.<br />
Exemple: <a href="http://crifo.org">crifo.org</a> et <a href="http://crifo.42">crifo.42</a></p>
<p>un petit <strong>/etc/init.g/nginx reload</strong> et ça roule <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /></p>https://blog.crifo.org/post/2010/12/20/Le-nouveau-TLD-non-officiel-42#comment-formhttps://blog.crifo.org/feed/atom/comments/78Xen: démarrer un domU avec pyGruburn:md5:f854909291cd33fb118c42ac61f25bde2010-12-18T19:05:00+01:002010-12-18T19:28:50+01:00DjuDebianbootdebiankernelpygrubxen<p><img src="https://blog.crifo.org/public/201010/.xen_t.jpg" alt="xen" style="float:left; margin: 0 1em 1em 0;" title="xen, oct. 2010" />
Lorsqu'on crée un domU "par défaut" avec xen, le kernel et l'image initrd utilisés seront lus directement sur le dom0, qui rend le domU dépendant du dom0.<br />
Ici, j'ai un dom0 tournant sous lenny, ainsi que 2 domU tournant également sous lenny, avec le kernel 2.6.26-2-xen-amd64.<br />
Sur le 2è domU, je voulais faire la mise à jour lenny vers squeeze, ce qui necessite entre autre que le domU puisse installer un nouveau kernel et booter dessus...<br />
Pour ce faire on va utiliser pyGrub.</p> <p>Ici, on part d'un domU deja configuré et tournant sur le dom0, et bootant avec le kernel sur le dom0.</p>
<p><ins>1/ sur le domU</ins></p>
<p>il faut bien entendu installer grub, et un kernel</p>
<blockquote><p>aptitude install udev grub<br />
aptitude install linux-image-2.6-xen-amd64<br />
mkdir /boot/grub<br />
echo "(hd0) /dev/sda" > /boot/grub/device.map<br />
mknod /dev/sda b 8 0<br />
grub-install hd0<br />
update-grub</p></blockquote>
<p>et maintenant, on arrete le domU</p>
<blockquote><p>halt</p></blockquote>
<p><ins>2/ sur le dom0</ins></p>
<p>on vérifie avec la commande <strong>xm list</strong> que le domU est bien arreté (dans la colonne status, on devrait voir --S-) et on récupere son id<br />
puis on l'arrête totalement</p>
<blockquote><p>xm destroy id_du_domU</p></blockquote>
<p>A présent, on va modifier le fichier de config du domU. par précaution on fait une sauvegarde :D</p>
<blockquote><p>cd /etc/xen<br />
cp domU.cfg domU.cfg.org</p></blockquote>
<p>puis dans ce fichier, on remplace les 2 lignes</p>
<blockquote><p>kernel = '/boot/vmlinuz-2.6.26-2-xen-amd64'<br />
ramdisk = '/boot/initrd.img-2.6.26-2-xen-amd64'</p></blockquote>
<p>par celle ci</p>
<blockquote><p>bootloader = '/usr/bin/pygrub'</p></blockquote>
<p>et on créé un lien symbolique pour pouvoir appeller pygrub</p>
<blockquote><p>ln -s /usr/lib/xen-3.2-1/bin/pygrub /usr/bin/pygrub</p></blockquote>
<p>enfin, il faut absolument inverser l'ordre de 2 ligne décrivant les partition utilisées, afin de placer la partition / en premier.<br />
On a donc</p>
<pre>
disk = [
'file:/home/xen/domains/srv2/swap.img,sda1,w',
'file:/home/xen/domains/srv2/disk.img,sda2,w',
]
</pre>
<p>qu'on remplace par</p>
<pre>
disk = [
'file:/home/xen/domains/srv2/disk.img,sda2,w',
'file:/home/xen/domains/srv2/swap.img,sda1,w',
]
</pre>
<p>Et c'est tout pour le modifs <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
On peut maintenant redémarrer le domU, en matant la console pour voir que tout se passe bien</p>
<blockquote><p>xm create -c srv2.cfg</p></blockquote>
<p>Si votre domU est sous debian squeeze, il faudra changer dans le fichier <strong>/boot/grub/device.map</strong> xvda au lieu de sda<br />
Et de meme, changer le type de périphérique dans /dev :</p>
<blockquote><p>mknod /dev/xvda b 202 0</p></blockquote>https://blog.crifo.org/post/2010/11/05/Xen-demarrer-un-domU-avec-pyGrub#comment-formhttps://blog.crifo.org/feed/atom/comments/77La virtualisation avec Xenurn:md5:ecbac964050598820db6cdc91ace396a2010-11-12T16:00:00+01:002010-11-12T16:09:28+01:00DjuDebiandebianhvmpara-virtualisationvirtualisationxen<p><img src="https://blog.crifo.org/public/201010/.xen_t.jpg" alt="xen" style="float:left; margin: 0 1em 1em 0;" title="xen, oct. 2010" />
Aujourd'hui un billet pour présenter Xen, un fabuleux outil permettant de virtualiser des machines, aussi bien en HVM (Hardware Virtualised Machine) pour faire tourner windows, comme VMware, que en para-virtualisation pour faire tourner des linuxs, sans couche de hardware émule, faisant ainsi perdre très peu de performances.</p> <p>Xen est donc un hyperviseur, un système permettant de faire tourner plusieurs machines virtuelles sur une machine physique.<br />
Son intérêt est qu'il est assez simple à configurer, et souple à utiliser.<br />
Mais surtout, il permet de faire de la para-virtualisation. C'est à dire de faire tourner des VM sans émuler de hardware, et donc d'avoir des performances quasi natives. mais cela nécessite que les VM tournent avec un noyau modifié.<br />
A l'inverse, on a le HVM, qui comme VMware-server, permet d'émuler le hardware, et ainsi de virtualiser des OS dont on ne peut modifier le noyau, comme windows.<br />
Attention, si vous voulez faire du HVM, il faut que votre processeur le supporte, et dispose de la fonction Intel VT ou AMD-V (flag VMX ou SVM dans /proc/cpuinfo) sinon ce n'est pas possible.</p>
<p>Ici, je vais installer tout ça sur mon zotac mag (atom 330 dual core + 2 go de ram), pour faire de la para-virtualisation<br />
il tournait jusqu'ici sous ubuntu server 9.10 (24h/24 depuis 10 mois quand même, plutôt fiable non ? <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /> )<br />
La première chose est d'installer un OS adapté. En l'occurrence Debian Lenny 5.06 64 bits, depuis une clé usb.</p>
<p>je vous passe l'install' de debian, passons directement à Xen :</p>
<blockquote><p>aptitude install xen-hypervisor-3.2-1-amd64 xen-tools xen-utils-3.2-1 bridge-utils<br />
aptitude install linux-image-2.6-xen-amd64 linux-headers-2.6-xen-amd64</p></blockquote>
<p>Pour la nomenclature, on désigne la machine physique faisant tourner xen sous le terme de <strong>dom0</strong>, et les machines virtuelle sous le terme de <strong>domU</strong>.</p>
<p>A présent, il faut configurer xen. pour cela on édite le fichier de config principale, /etc/xen/xend-config.sxp<br />
Il y a donc plusieurs mode de connections réseau (bridge, nat, routed).<br />
Voici <a href="http://wiki.kartbuilding.net/index.php/Xen_Networking">un petit récapitulatif de ces modes</a> pour les curieux</p>
<p>On va ici utiliser du bridge. c'est à dire que les domU seront visibles directement et auront leur adressage réseau sur le même sous réseau que la machine host.</p>
<p>voici ce qu'il faut dé commenter :</p>
<blockquote><p>(network-script network-bridge)<br />
(vif-script vif-bridge)<br /></p></blockquote>
<p>et il faut commenter la ligne</p>
<blockquote><p>(network-script network-dummy)</p></blockquote>
<p>toujours dans ce même fichier, on va définir les ressources matérielles qu'on va affecter au dom0, la machine hôte.<br />
Comme elle ne servira qu'à contrôler les machines virtuelles, on va lui mettre un minimum afin de garder un max pour les domU
A savoir un seul core (si processeur multicore) et la ram (par défaut et le minimum si on veut en attribuer plus aux VM à chaud)</p>
<blockquote><p>(dom0-min-mem 384)<br />
(dom0-cpus 1)<br /></p></blockquote>
<p>la ligne (dom0-min-mem 384) sert à définir qu'il y aura toujours au minimum 384 Mo de ram pour la dom0.<br />
Meme si on lui en met plus par défaut (voir ci dessous), et qu'on a besoin d'attribuer plus de ram aux domU, on ne pourra descendre en dessous de ce seuil. On s'assure ainsi qu'elle aura toujours sufisemment de ressources <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /></p>
<p>Puis, comme dit au dessus, on configure la ram qu'aura la dom0 par défaut. On édite le fichier <strong>/boot/grub/menu.lst</strong>
à la fin de la ligne</p>
<blockquote><p>kernel /xen-3.2-1-amd64.gz<br /></p></blockquote>
<p>on rajoute <strong>dom0_mem=512M</strong></p>
<p>on définit ici que dom0 aura 512 Mo de ram, et pourra descendre au minimum à 384 Mo.</p>
<p>maintenant, configurons xen-utils, avec lequel on va définir quelques réglages de base pour les machines virtuelles que nous allons créer, tels que la ram, swap, disque dur, distro, archi...<br />
C'est très pratique car par la suite, on peut créer une nouvelle domU en lui donnant juste un nom et une ip <img src="/themes/BlueSky/smilies/smile.gif" alt=":)" class="smiley" /><br />
On edite le fichier /etc/xen-tools/xen-tools.conf et on édite / décommente ces lignes :</p>
<blockquote><p># dossier ou stocker les VM<br />
dir = /home/xen<br />
# taill du disque dur
size = 4 Gb<br />
# ram en Mo<br />
memory = 512M<br />
# taille de la swap<br />
swap = 512Mb<br />
# type du système de fichier<br />
fs = ext3<br />
# distrib<br />
dist = lenny<br />
# nombre de cpus/core<br />
vcpus = 1<br />
# passerelle <br />
gateway = 192.168.1.1<br />
# masque de sous réseau<br />
netmask = 255.255.255.0<br />
# masque de broadcast<br />
broadcast = 192.168.1.0<br />
# demander le mot de passe root<br />
passwd = 1<br />
# architecture, 32 ou 64 bits<br />
arch = amd64<br />
# mirroir à utiliser pour choper les paquets<br />
mirror = http://ftp.fr.debian.org/debian/<br />
# pour acceder au shell depuis la console<br />
serial_device = hvc0<br /></p></blockquote>
<p>encore une fois, toutes ces options seront par défaut. lorsqu'on créera une nouvelle machine virtuelle, on pourra bien sur définir ces paramètres si on en veut des différents.</p>
<p>Et voila. Maintenant, on reboot la machine pour redémarrer sur Xen.<br />
Une fois sur grub, on choisit la première entrée "<strong>Xen 3.2-1-amd64 / Debian GNU/Linux, kernel 2.6.26-2-xen-amd64</strong>"</p>
<p>Quand debian a fini de redémarrer, on se log en root et on vérifie que xen tourne bien en tapant la commande</p>
<blockquote><p>xm list</p></blockquote>
<p>qui est la commande permettant de lister le dom0 et toutes les domU qui tournent, ce qui doit donner</p>
<pre>
Name ID Mem VCPUs State Time(s)
Domain-0 0 512 1 r----- 135.7
</pre>
<p>de même, afin de vérifier que les paramètres de ressources qu'on a appliqué :</p>
<blockquote><p>free</p></blockquote>
<p>pour voire la mémoire ram et</p>
<blockquote><p>cat /proc/cpuinfo</p></blockquote>
<p>pour voir le nombre de cpus (ici 1 au lieu de 4 normalement)</p>
<p>Egalement, pour vérifier que le bridge est bien fait, taper ifconfig et chercher si on a bien une interface nommée peth0, avec la meme mac que eth0</p>
<p>A présent, on se créée une machine virtuelle, qui va utiliser tous les parametres de base (512 mo de ram, disque de 4 Go, swap de 512 mo et 1 core, distro lenny avec archi amd64)<br />
Comme dit précédemment, on donne juste le nom et l'IP</p>
<blockquote><p>xen-create-image --hostname=VM1 --ip 192.168.1.100 --role=udev</p></blockquote>
<p>L'install se lance alors, avec debootstrap, qui va telecharger tous les paquets necessaire au système de base.<br />
Quelques minutes après (suivant la rapidité de votre connexion), la domU est prête.
On peut alors la lancer :</p>
<blockquote><p>xm create VM1.cfg</p></blockquote>
<p>on obtient alors un résumé de la machine, ainsi que le status de l'install :<br />
(ne faites pas attention au warning, le bridge est bien configuré, mais il chouine quand même...)</p>
<pre>
WARNING
-------
You appear to have a missing vif-script, or network-script, in the
Xen configuration file /etc/xen/xend-config.sxp.
Please fix this and restart Xend, or your guests will not be able
to use any networking!
General Information
--------------------
Hostname : srv1
Distribution : lenny
Partitions : swap 512Mb (swap)
/ 5Gb (ext3)
Image type : sparse
Memory size : 512Mb
Kernel path : /boot/vmlinuz-2.6.26-2-xen-amd64
Initrd path : /boot/initrd.img-2.6.26-2-xen-amd64
Networking Information
----------------------
IP Address 1 : 192.168.1.151 [MAC: 00:16:3E:EB:45:D7]
Netmask : 255.255.255.0
Broadcast : 192.168.1.255
Gateway : 192.168.1.1
Creating partition image: /home/xen/domains/srv1/swap.img
Done
Creating swap on /home/xen/domains/srv1/swap.img
Done
Creating partition image: /home/xen/domains/srv1/disk.img
Done
Creating ext3 filesystem on /home/xen/domains/srv1/disk.img
Done
Installation method: debootstrap
</pre>
<p>puis quelques minutes après, une fois les paquets téléchargés</p>
<pre>
Done
Running hooks
Done
Role: udev
File: /etc/xen-tools/role.d/udev
Role script completed.
Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
All done
Logfile produced at:
/var/log/xen-tools/srv1.log
</pre>
<p>(au passage, le fichier de configuration décrivant la domU se trouve dans /etc/xen/VM1.cfg)</p>
<p>Si vous souhaitez vous connecter dessus lors du boot, utilisez la commande</p>
<blockquote><p>xm create -c VM1.cfg</p></blockquote>
<p>Si vous voulez vous y connecter alors que la machine a démarré :</p>
<blockquote><p>xm console VM1</p></blockquote>
<p>On peut également choisir la machine avec son id obtenu par la commande <strong>xm list</strong></p>
<blockquote><p>xm console <id></p></blockquote>
<p>Une chose à savoir: lorsqu'on créé une machine virtuelle tel que noté ci dessus, la VM n'aura pas son propre boot.<br />
C'est à dire qu'elle va chercher son noyau directement sur le dom0.<br />
Dans un prochain article, on verra comment utiliser pygrub pour la rendre indépendante en ayant son propre noyau et grub <img src="/themes/BlueSky/smilies/wink.gif" alt=";)" class="smiley" /><br />
Et également dans un prochain article, on verra comment lancer une VM en émulant une couche hardware (HVM) pour faire tourner un windows</p>https://blog.crifo.org/post/2010/10/21/La-virtualisation-avec-Xen#comment-formhttps://blog.crifo.org/feed/atom/comments/75