Maniatux's Blog

Welcome to the internet

Archives 2014

Rapport d'incident (09/07/2014)

Rédigé par Xavier - - Aucun commentaire

Comme vous avez pu le constater, maniatux.fr a été indisponible toute la journée. Cela est du à une perte de connexion à internet sur la BBox, résolu après un reboot en rentrant à la maison vers 18h30.

Classé dans : Sysadmin - Mots clés : aucun

Maniatux.fr : Debian GNU/kFreeBSD + IPv6

Rédigé par Xavier - - Aucun commentaire

Le blog maniatux.fr vient d'être migré sur une jail Debian GNU/kFreeBSD (Wheezy Jessie), avec un hôte sous FreeBSD 10.

Une autre nouveauté est l'accessibilité en IPv6, il faut juste un peu de temps pour que l'entrée AAAA sur le nom de domaine se réplique partout (ce qui sera le cas j'espère quand cet article sera publié).

Je ne sais pas si Debian GNU/kFreeBSD est stable ou encore expérimental, donc si vous rencontrez des problèmes n'hésitez pas à me les remonter soit en utilisant mon adresse mail en bas de la page Informations, soit via Diaspora.

Si votre FAI ne vous fourni toujours pas d'IPv6, faites un tour chez Hurricane Electric qui peut vous fournir un tunnel gratuitement. Jetez également un oeil à Se faire une "IPv6 Box" (avec Debian) et Se faire une "IPv6 Box" - avec FreeBSD.

A bientôt !

Classé dans : Blog - Mots clés : aucun

Debian GNU/kFreeBSD Wheezy dans une jail FreeBSD 10

Rédigé par Xavier - - Aucun commentaire

Debian GNU/kFreeBSD peut être installé dans une jail sur un hôte FreeBSD. Intéressant si vous voulez garder votre serveur sous FreeBSD mais que vous voulez également profiter des jails pouvant puiser des paquets dans les dépôts Debian. Voici comment procéder.

Chargez les modules

# kldload fdescfs linprocfs linsysfs tmpfs

Ou, de manière permanente, éditez le fichier /boot/loader.conf :

fdescfs_load="YES"
linprocfs_load="YES"
linsysfs_load="YES"
tmpfs_load="YES"

Note : ces modules ne sont pas indispensables au fonctionnement de la jail Debian GNU/kFreeBSD. Mais si on installe cet OS à partir de l'ISO officielle, on voit qu'ils sont présents et liés aux points de montage que nous verrons par la suite. Mon hypothèse est qu'ils assurent une "compatibilité Linux" pour certains logiciels non pleinement fonctionnels. linprocfs est utilisé entre autres pour ps et df. En outre cela ne mange pas de pain de les activer :)

Création de la jail

Il va falloir utiliser debootstrap et installer également perl5 qui est une dépendance.

# pkg install debootstrap perl5

Puis on créé le répertoire de la jail :

# mkdir -p /usr/jails/debian

On installe le tout :

# debootstrap wheezy /usr/jails/debian http://cdn.debian.net/debian

Configuration de la jail

Editez le fichier /etc/jail.conf

# DEFAULT PARAMETERS
#
exec.start      = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
exec.clean;
mount.devfs;
path = "/usr/jails/$name";
host.hostname = "$name";

# INDIVIDUAL JAIL PARAMETERS
#
debian {
        allow.mount;
        mount.devfs;
        mount.fstab="/usr/jails/debian/etc/fstab.debian";
        ip4.addr = re0|192.168.0.13;
        exec.start = "/etc/init.d/rc 3";
        exec.stop = "/etc/init.d/rc 0";
}

Editez ensuite /usr/jails/debian/etc/fstab.debian :

sys   /usr/jails/debian/sys         linsysfs  rw          0 0
proc  /usr/jails/debian/proc        linprocfs rw          0 0
tmpfs  /usr/jails/debian/run         tmpfs     rw,noexec,nosuid 0 0

Bidouille à faire pour les password, sinon la jail ne démarrera pas :

# cp /etc/master.passwd /usr/jails/debian/etc/
# pwd_mkdb -d /usr/jails/debian/etc -p /usr/jails/debian/etc/master.passwd

Démarrer la jail

# service jail start debian

On peut alors voir si la jail tourne :

# jls
   JID  IP Address      Hostname                      Path
    15  192.168.0.13    debian                      /usr/jails/debian

Et on visualise également nos points de montage :

# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2    140G     11G    118G     9%    /
devfs          1.0K    1.0K      0B   100%    /dev
devfs          1.0K    1.0K      0B   100%    /usr/jails/debian/dev
fdescfs        1.0K    1.0K      0B   100%    /usr/jails/debian/dev/fd
linsysfs       4.0K    4.0K      0B   100%    /usr/jails/debian/sys
linprocfs      4.0K    4.0K      0B   100%    /usr/jails/debian/proc
tmpfs          4.0G     24K    4.0G     0%    /usr/jails/debian/run
devfs          1.0K    1.0K      0B   100%    /usr/jails/debian/dev

Notez que les points affichés peuvent être différents selon votre système.

Configurer notre Debian/kFreeBSD

Entrez dans la jail :

# jexec debian bash

Commencez par reconstruire les utilisateurs et mots de passe, car nous avons du copier ceux de FreeBSD (l'hôte) mais cela pose des problèmes :

# dpkg-reconfigure base-passwd

Reconfigurez tzdata pour remettre les pendules à l'heure :

# dpkg-reconfigure tzdata

Configurez les locales :

# apt-get update
# apt-get install locales
# dpkg-reconfigure locales

Et voilà.

Notez que Debian GNU/kFreeBSD est encore relativement peu utilisé, et je n'ai pas encore trouvé de retour d'expérience sur cet OS, encore moins quand on l'utilise dans une jail FreeBSD. C'est un territoire peu exploré il faut donc être prudent surtout sur un environnement de production.

Se faire une "IPv6 Box" - avec FreeBSD

Rédigé par Xavier - - Aucun commentaire

Fin 2013 j'ai publié un article expliquant comment se faire facilement une "IPv6 Box" sous Debian, c'est à dire un serveur qui donne accès à l'IPv6 à toutes les machines de votre réseau, en exploitant deux choses : un tunnel qui encapsule l'IPv6 dans de l'IPv4 (vous permettant ainsi d'en profiter alors que votre FAI ne le propose pas) et radvd un daemon qui présente votre passerelle au reste du réseau (les périphériques se génèrent eux-même une IPv6 complète par la suite).

Avec ce nouvel article, voici comment faire la même chose sur FreeBSD !

Pré requis

Pour la théorie et la présentation du mode de fonctionnement, je vous redirige vers l'article Se faire une IPv6 Box dans lequel il y a les schémas et tout ce qui va avec. Ce que vous devez avoir, c'est :

  • Un tunnel chez Hurricane Electric en /48
  • Un serveur FreeBSD bien entendu, relié au même LAN que les machines que vous voulez desservir

Montage du tunnel

A ajouter au /etc/rc.conf.local :

#IPV6 HE tunnel
ipv6_gateway_enable="YES"
ipv6_interfaces="auto"
ipv6_activate_all_interfaces="YES"
ipv6_cpe_wanif="gif0"
ifconfig_re0_ipv6="inet6 2001:470:c851:192::1 prefixlen 64"
cloned_interfaces="gif0"
ifconfig_gif0="tunnel 192.168.0.10 216.66.84.42"
ifconfig_gif0_ipv6="inet6 2001:470:c851:10::1 2001:470:c851::1 prefixlen 128"
ipv6_defaultrouter="2001:470:c851::1"
rtadvd_enable="YES"
rtadvd_interfaces="re0"

A remplacer par les éléments dont vous disposez :

  • ifconfig_re0_ipv6 : Adresse IPv6 que vous donnez à votre interface de LAN (attention votre interface ne s'appelle pas forcément re0)
  • ifconfig_gif0 : Adresse du LAN et adresse du serveur chez HE (Server IPv4 Address)
  • ifconfig_gif0_ipv6 : Adresse IPv6 que vous donnez au gif0 et adresse du serveur chez HE (Server IPv6 Address)
  • ipv6_default_router : Adresse du serveur chez HE (Server IPv6 Address)

Ensuite redémarrez votre système (la commande netif ne monte pas les tunnels IPv6).

Configuration de rtadvd

Rtadvd va faire du router advertisement c'est à dire qu'il va signaler sa présence sur le LAN aux autres machines. Vos périphériques vont donc pouvoir se générer une adresse IPv6 à partir du préfixe dont ils disposent. Donc créez et éditez le fichier /etc/rtadvd.conf :

re0:\
        :addrs#1:addr="2001:470:c851:192::":prefixlen#64:tc=ether:

Comme vous l'avez deviné ce fichier contient le préfixe du LAN.

Prenez soin de démarrer rtadvd :

# service rtadvd start

Vérification

Sur une autre machine de votre LAN, reconnectez le réseau. Vous devez maintenant voir que vous récupérez une IPv6 :

Vous pouvez aussi utiliser le site test-ipv6.com

Note : J'ai masqué mon IPv6 en rouge sur la capture, par contre j'ai laissé tout ce qui est IPv4, car soit c'est du LAN, soit c'est l'adresse IP de maniatux que tout le monde peut déjà voir ;)

Ressources

Sauvegarde rsync avec roulement de 3 jours

Rédigé par Xavier - - Aucun commentaire

Pour sauvegarder mon serveur, j'ai choisi d'utiliser simplement rsync avec une tâche cron. En effet mon infra n'est pas assez grosse pour justifier la présence d'une machine de guerre telle que Bacula. Rsync va permettre, avec un peu d'astuce, une sauvegarde incrémentielle avec roulement sur 3 jours. Cela veut dire que je peux restaurer des choses en puisant au choix dans les sauvegardes des 3 derniers jours.

Note importante

Je ne suis pas l'auteur du script, il est assez répandu sur le web, je ne sais pas qui l'a fait le premier. Mais il est très pratique !

Notez aussi que dans le script, la sauvegarde se fait en local sur le disque dur, ce qui n'est pas très prudent. Il est préférable de le faire sur un serveur distant, ou sur un support USB. En effet en cas de perte du disque dur vous serez bien contents d'avoir vos données sous le coude :)

Le script

#!/bin/sh
TARGET=/usr/backup
SOURCE=/usr/jails
/bin/rm -Rf $TARGET/backup.2
/bin/mv $TARGET/backup.1 $TARGET/backup.2
/bin/mv $TARGET/backup.0 $TARGET/backup.1
/usr/local/bin/rsync -a --no-o --delete --safe-links --link-dest=$TARGET/backup.
1 $SOURCE $TARGET/backup.0/

Note : il est obligatoire d'utiliser le chemin complet pour rsync (/usr/local/bin/rsync) sinon le script ne fonctionnera pas lorsqu'il sera invoqué en cron. Pensez à créer le TARGET avec mkdir.

Ajout au cron

Avant tout n'oubliez pas de rendre le script exécutable :

# chmod +x backup.sh

Ensuite éditez vos tâches :

# crontab -e

Puis ajoutez la ligne suivante :

@daily /root/backup.sh

Comment restaurer

Pour restaurer il faut utiliser la commande cp tout simplement. Quelques exemples :

# POUR UN FICHIER DE LA VEILLE
# cp /usr/backup/xmpp/var/log/messages /usr/jails/xmpp/var/log/

# POUR RESTAURER UN DOSSIER D'IL Y A DEUX JOURS
# cp -R /usr/backup/xmpp/home/sqlite /usr/jails/xmpp/home