Maniatux's Blog

Welcome to the internet

Planet-Libre

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

Un OS "français" ? Quelle bêtise !

Rédigé par Xavier - - Aucun commentaire

L'idée d'un système d'exploitation français revient sur la table avec cet article de nextinpact. S'il semble que la question de fond porte sur les logiciels libres, ce qui est très bien, j'aimerais tout de même revenir sur l'idée de base.

L'objectif est de rendre notre pays indépendant en ayant un contrôle total sur les logiciels afin d'éviter tout espionnage par un pays tiers, et même garantir le respect de la vie privée des utilisateurs. L'idée est bonne, en revanche le projet est mauvais, c'est même une bêtise. En effet je vois les objections suivantes :

  1. Le système d'exploitation d'un ordinateur n'est qu'un maillon de la chaîne. Computrace démontre que le matériel d'un PC lui-même n'est pas digne de confiance. OpenBSD et FreeBSD se méfient des générateurs de nombres aléatoires implantés dans le matériel Intel. Donc avoir un OS 100% libre et maîtrisé ne garantit pas que la machine est digne de confiance. Il faut également du matériel et des firmwares libres. Après la machine, c'est le réseau internet lui même qui est potentiellement compromis. Les routeurs peuvent contenir des backdoor introduites volontairement pour espionner ce qui transite.
  2. Notre pays a lui aussi des services de renseignements, on peut donc supposer que le gouvernement n'a pas intérêt à lui compliquer la tâche, surtout que ce domaine s'étend bien au delà des frontières. Ne risque-t-on pas de se faire taper sur les doigts par les autres pays si on ampute nos services de renseignements de ces outils ? En gros, pourquoi devrait-on faire d'avantage confiance à un logiciel français qu'à un logiciel américain ?
  3. Enfin, créer un OS de A à Z et une tâche insurmontable, ou alors le coût et la durée de développement seraient prohibitifs. On imagine donc que cet OS français va essayer de "customiser" une distribution existante, en payant au passage grassement de nombreuses sociétés de services, et que l'ensemble sera abandonné lorsque le gouvernement changera. A partir de là il semble plus judicieux de soutenir des projets existants et crédibles. Pourquoi ne pas encourager le développement de matériel de confiance, constitué de composants et firmware libres, fonctionnant sous Debian, ou n'importe quelle distribution capable de fonctionner sans blobs propriétaires ?

Le système d'exploitation français est donc une idée pompeuse et ridicule, qui fait bien rire les milieux spécialisés. Rien de concret n'en sortira. Les solutions sont déjà là, il suffit d'avoir les bonnes idées et les mettre en place. Utiliser des systèmes d'exploitation et du matériel libre dénués de firmwares propriétaires, rappeler à l'ordre les acteurs du réseau et des différents services pour interdire l'inspection du trafic (DPI), et promouvoir le chiffrement et les bons comportements serait déjà plus crédible et plus efficace.

Je réalise que je parle comme un libriste de la FSF, ce qui est plutôt effrayant...

Je suis sur Diaspora-fr.org

Rédigé par Xavier - - Aucun commentaire

Dans l'article Diaspora, c'est pas pour moi je critique le projet Diaspora pour son choix de technologies trop complexes à mettre en place, mais aussi le nombre trop faible de fonctionnalités. Mon avis n'a pas changé, mais j'ai décidé de m'inscrire tout de même sur un pod existant, diaspora-fr.org, pour les raisons suivantes :

  1. Volonté de découvrir les réseaux sociaux, car je suis un inculte sur ce point, et en 2014 je pense que c'est un point incontournable.
  2. Une prise de conscience sur la nécessité de soutenir certains projets, inspiré en partie par l'article de Cyrille : Dénoncer c'est bien, agir en conséquence t'es pas fou. Si on veut crédibiliser les solutions libres et décentralisées, il faut donner l'exemple en les utilisant. Cela ne nous empêche pas d'avoir un regard critique bien entendu.
  3. Être sur Diaspora me fourni un second moyen, indépendant de maniatux.fr, pour communiquer. Si un jour mon site tombe, je pourrais toujours vous tenir informés de l'état de rétablissement :)
  4. La bonne volonté l'équipe diaspora-fr, très accueillante, notamment Fla qui fut volontaire pour m'aider lorsque j'ai voulu mettre en place mon propre pod.

Maniatux.fr restera mon outil principal pour communiquer, car je crois toujours dans le web ouvert, et parce que ce format est beaucoup plus adapté à la publication d'articles volumineux. Mon compte diaspora-fr sera un outil complémentaire.

A bientôt !