FLASH INFORMATIQUE FI



My NAS




Daniel GRANDJEAN


Par cet après-midi pluvieux, cuisinons un peu ! Nous allons élaborer une infrastructure informatique simple et performante pour votre réseau personnel. La nature et l’origine de chaque ingrédient vous seront expliquées, l’apport de chaque épice à la substance et au fumet du plat décrit. Les tours de main des meilleurs chefs d’Internet vous seront révélés. Le résultat sera savoureux et la réalisation paisible. Alors... à la cuisine !

Une infrastructure dans chaque port

Notebook, accès Internet haut débit, réseau Ethernet, WiFi. Autant d’équipements ou de services qui se sont banalisés sur votre place de travail ces dernières années. Aujourd’hui, le même processus se répète dans votre foyer. Voilà votre home sweet home maintenant doté d’un véritable réseau, partagé par le vieil ordinateur de bureau et le nouveau laptop. Le tout est complété peut-être par une console de jeu (celle des enfants bien sur), le baladeur mp3 rejoint bientôt par ce qui remplacera le déjà vétuste magnétoscope VHS.
Par défaut ce foisonnement d’équipements domestiques n’offre aucun des services fédérateurs considérés aujourd’hui comme un dû dans votre environnement professionnel. Leur absence de votre foyer en voie d’informatisation virale vous a peut-être rendus plus réceptifs à ces fonctionnalités, qui vous sont offertes depuis plus de 10 ans, selon votre département/faculté.
Il est maintenant acquis que vos documents sont sur un serveur de fichiers banalisé. Accessible depuis le monde entier par un navigateur Web, le serveur présente vos données utilisant les protocoles natifs des Windows et des Unix, c’est-à-dire sans aucun ajout ou modification du système client. Il vous permet de partager des informations avec vos collègues. Doté de fonctionnalités connues sous le nom de snapshot, le serveur de fichiers vous présente les différentes versions de vos documents au fil du temps. Il est mis à l’abri des aléas de la distribution électrique. Il est protégé des petits problèmes mécaniques par une redondance des disques magnétiques, et le cas échéant, des gros sinistres par une réplication à distance. Vous visualisez, dans - l’autre tour - si la première venait à s’effondrer.
Vos documents ce sont des fichiers audio, d’images et de vidéo pour ce qui est du divertissement ou de l’étude. Ce sont aussi les fichiers propres aux applications métier qui occupent votre quotidien. Mais ce qui est aujourd’hui la mémoire de vos activités, c’est l’archivage du courrier électronique. La séquence des emails est devenue le fil rouge d’une ou plusieurs de vos vies.
Situés à l’intérieur du périmètre de défense du réseau, tous ces services sont toutefois accessibles au travers d’ouvertures volontairement pratiquées. C’est le service connu (sur notre site) sous le nom de DIODE. Si l’on souhaite accéder à des ressources qui ne sont pas ouvertes DIODE ou protéger la confidentialité et l’authenticité de ses communications entre le free spot de la plage Juhu de Munbai et son poste de travail, un tunnel encrypté basé sur ssh vient élégamment à notre rescousse. C’est le service tremplin.epfl.ch. Bien sûr vous connaissez par coeur le petit nom du serveur de fichiers de votre faculté, il est publié sur tout l’Internet par le DNS (Domain Name System).
Tous ces services sont parfaitement en phase, car ils sont calés sur la même heure. La synchronisation nécessaire des horloges de tous les participants est assurée par des serveurs de temps et le protocole NTP.
Si votre foyer dispose déjà d’un tel environnement, alors vous n’êtes pas concerné par cet article. Si vous avez tout installé vous-même, j’ajouterai au passage que cela serait le moment d’avoir une vie.-)
Pour les autres, qui ne jubilent pas à la perspective de faire un Windows update, un yum ou un dpkg ou qui angoissent à l’idée que le même update en mode automatique va peut-être ruiner leur machine et les plans de la soirée. Pour ceux qui ne veulent pas investir le temps et le budget de leurs prochaines vacances dans un centre de calcul personnel. Nous allons parcourir les pistes pour mettre en place une infrastructure économique et sans souci @home. Évidemment, il y a moins bien, mais c’est plus cher !

Règles guidant le choix de l’infrastructure

  • Une fois en place elle doit se faire oublier. Elle ne requiert qu’une gestion minimale.
  • Elle n’impose aucun changement aux clients potentiels. Qu’ils choisissent de profiter du service ou non.
  • Elle doit être le fondement solide de services plus sophistiqués. (Ils pourront faire l’objet d’autres articles).
  • Elle ne doit pas se substituer à d’autres services de bonne facture déjà existants. Inutile de refaire ce qui est disponible, pratique et fiable.
  • Elle pourra être personnalisée et évoluer selon vos besoins.
  • Elle sera économique aussi bien lors de son achat initial que lors de son extension.
  • Son fonctionnement doit rester transparent et intelligible. Si elle est perçue comme une boîte noire pour l’utilisateur, elle doit rester intrinsèquement une maison de verre.

Conditions initiales souhaitables

Un accès à Internet permanent par l’entremise d’un modem routeur. Les équipements réseau seront raccordés à un port Ethernet disponible sur le routeur.

Fonctionalités

Service de fichiers

  • Le serveur de fichiers offrira de l’espace de stockage de fichiers pour plusieurs utilisateurs. Les utilisateurs pourront se voir imposer des quotas. Le service permettra le partage en lecture seule ou en écriture entre plusieurs utilisateurs ou groupe d’utilisateurs.
  • Il sera possible de servir les mêmes espaces simultanément avec le protocole NFS V3 et CIFS. Le service CIFS supportera le nommage Unicode des fichiers (langues orientales). L’accès aux fichiers par une interface Web est un plus. L’association entre la sécurité NFS et la sécurité Windows sera simple à mettre en oeuvre.
  • Les files systems pourront être journalisés par un système de snapshot. Le calendrier et le nombre de snapshots seront à la discrétion de l’administrateur (dans les limites de l’espace de stockage disponible).
  • Pour pallier un sinistre, les disques seront redondants. Le serveur aura une réplication à distance. Ces points ne doivent pas être obligatoires pour ménager des options plus économiques.
  • La publication des fichiers par d’autres protocoles utilisables par des clients domestiques est un plus.

Passerelle de communication

  • La passerelle permet d’accéder de manière sécurisée aux services du foyer depuis l’extérieur (Internet).
  • La passerelle supportera des protocoles standards d’authentification et de chiffrage.
  • Elle sera accessible par un nom IP indépendamment de l’adresse IP octroyée par le prestataire de service Internet.

Archivage du courrier électronique

  • Le service d’archivage de mail ira automatiquement chercher les mails sur les comptes mail des membres du foyer.
  • Les mails seront triés selon les règles établies par l’administrateur ou les utilisateurs et stockés dans l’espace disque des récipiendaires.

Synchronisation de temps

  • Les horloges de tous les services seront synchronisées.
  • Un service serveur de temps sera offert aux objets réseau qui le souhaitent.

Choix matériel

Au cours de ces deux dernières années, de plus en plus d’objets basés sur des microprocesseurs et conçus pour remplir une fonction précise ont vu le jour. Nombre d’entre eux ont une interface réseau et la capacité de se connecter à l’Internet. Une partie remplit des fonctions informatiques telles que point d’accès radio, webcam ou serveur d’imprimante, d’autres ont introduit le réseau informatique dans l’électronique grand public traditionnelle, comme les récepteurs de TV avec enregistrement numérique, les standards téléphoniques domestiques ou les tuners de radio Internet. Arrivent aussi des objets innovants qui diffusent des parfums, gèrent un éclairage ou une ambiance, produisent de l’émotion.
Pour gérer (l’extrême) complexité qui se cache derrière ces façades anodines, la majorité de ces réalisations utilisent un système d’exploitation basé sur Linux. Choix judicieux en termes de coût, de fiabilité, de sélection du matériel et de son utilisation optimale. Parmi les constructeurs ayant fait ce choix, certains le revendiquent, et en dernier lieu jouent le jeu en respectant plus ou moins bien l’esprit des licences des logiciels utilisées. Dans ce cas, ils fournissent les sources du système qui anime leurs automates. Il devient alors possible d’améliorer, augmenter ou détourner leur création. Pour autant bien sûr que la conception du produit permette d’altérer le programme chargé au coeur du matériel.
Le point de départ de notre projet étant d’offrir un service de fichiers, nous nous intéressons aux objets remplissant déjà la fonction globale de raccorder un grand disque au réseau Ethernet. Pour satisfaire les règles déjà établies, l’équipement choisi devra satisfaire les conditions suivantes :

  • être basé sur le système d’exploitation Linux
  • publier les codes sources
  • pouvoir recharger le code
  • être bon marché, mais performant
  • facilement disponible
  • suivi par une communauté active d’utilisateurs
  • sa conception ne doit pas nous limiter à son usage original.
    Une fois ces critères appliqués au marché local, un petit objet sort silencieusement du lot, le NSLU2 de LinkSys, aujourd’hui une filiale de Cisco. Le NSLU2 est une unité de stockage NAS avec les caractéristiques suivantes :
  • 1 port Ethernet 10/100
  • 2 ports USB 2.0
  • Alimentation 5V 2A
  • Processeur ARM Intel IXP420
  • 32M RAM
  • 133 Mhz core clock
  • Support des disques magnétiques USB 1.1 et 2.0
  • Support clefs mémoire USB 1.1 et 2.0
  • Serveur SMB (Samba 2.2.7) pour du partage Windows
  • Serveur HTTP (thttpd) pour l’administration et le download des fichiers
  • Format de disques EXT2/3, FAT et NTFS (dans la dernière version du firmware Linksys)
    Le NSLU2 est surnommé Slug, soit limace. Premièrement parce que c’est plus facile à prononcer et que les premières versions de firmware étaient lentes.

My NSLU2

Installation initiale

Préparation du disque

Avec certains disques USB, il est possible de modifier des paramètres de fonctionnement. Il peut être possible de modifier la durée de la période d’inactivité avant la mise en veille du disque et la gestion des caches. Désactivez la mise en veille avec l’utilitaire du constructeur avant d’installer le disque sur le NSLU2.

Préparation du NSLU2

Installez votre matériel en suivant les instructions de Linksys. N’oubliez pas de mettre sous tension le NSLU2 avec le petit bouton à la base de la face avant de l’appareil. Une fois démarré, le NSLU2 bipe une fois et s’attribue l’adresse IP 192.168.1.77. Vous pouvez vous connecter à cette adresse avec un navigateur Web, autrement l’utilitaire de configuration de Linksys pour Windows découvre les NSLU2 présents sur le LAN et permet d’éditer leur configuration réseau.
Une fois dans l’interface Web avec le nom d’utilisateur/mot de passe admin/admin :

  • contrôlez encore tous les paramètres réseau
    • Fixed IP Address (recommandé)
    • IP Address : l’adresse choisie
    • Network Mask : 255.255.255.0
    • Gateway : l’adresse de votre routeur
    • DNS Server Primary : l’adresse de votre routeur
  • donnez un nom et une légende à votre NSLU2
  • donnez un nom de workgroup
  • réglez l’heure, le fuseau horaire.
  • pour le language support, choisissez Western Europe/Latin 1 (850)
  • ne validez pas Enable UPnP Support qui n’amène aucun service utile, mais dégrade les performances.

Burn In

Testez soigneusement que tout fonctionne comme indiqué dans la documentation du constructeur. Stressez bien le matériel pour vous assurer que tous les composants sont sains. Copiez plusieurs fois le contenu de quelques DVD sur le NSLU2 pour tester de gros transferts de données (ou faites une archive du disque de votre machine), faites travailler intensément le boîtier et le(s) disque(s). L’ensemble ne doit montrer aucune faiblesse et aucune interruption. Dans le cas contraire, faites échanger le composant instable. Il est important de construire tout de suite la confiance en votre matériel. Cela vous épargnera le temps passé à comprendre un dysfonctionnement attribué à tort aux logiciels que vous allez installer.
Vous pouvez profiter de cette période pour vous familiariser avec l’interface Web de gestion du NSLU2. Créez les utilisateurs et les groupes d’utilisateurs qui correspondent à l’organisation de votre foyer. Si tout se passe bien, toutes les données stockées seront préservées au cours de la personnalisation du NSLU2. Pour s’éviter des désagréments ou des conflits avec certaines versions récentes du firmware, abstenez-vous de créer des partages avec les noms suivants :

bin conf dev etc home initrd lib linuxrc mnt opt proc root sbin share tmp unslung upload usr var

À ce stade votre disque est formaté avec le système de fichier ext3. ext3fs est une version d’ext2fs augmenté d’un journal des écritures. Le journal accélère la vérification de la consistance du files system lors de reprise après un crash système ou plus probablement d’une panne de courant. Tous les utilitaires gestion d’ext2fs sont utilisables avec ext3fs.
Pour lire votre disque raccordé directement à un système, démarrez votre machine avec Knoppix ou installez les drivers ext2fsd dans Windows. La dernière solution permet de rendre le disque visible aux utilitaires de son constructeur, et d’en modifier les paramètres opérationnels.

Procédures

RedBoot

Votre NSLU2 est rodé avec succès ! Avant de continuer dans les modifications, nous allons vérifier une procédure de récupération en cas de gros problèmes. Je n’ai jamais été contraint à l’utiliser, mais il est bon de vérifier maintenant qu’elle fonctionne et que vous êtes en mesure de l’appliquer.
RedBoot est un bootloader originaire de RedHat. Le bootloader initialise le matériel, charge du code en mémoire et démarre le système d’exploitation. Redboot est assez sophistiqué, il dispose d’une interface utilisateur accessible par port série ou par Telnet, il est capable entre autres de transférer des fichiers par TFTP et de flasher des firmwares. Mal utilisé il peut aussi sinistrer votre équipement.
Lorsque le Slug démarre, RedBoot se met à l’écoute pendant deux secondes du port 9000 à l’adresse IP 192.168.0.1. Ceci indépendamment de l’adresse IP configurée par ailleurs. Si aucune connexion Telnet n’est établie au cours de ce laps de temps, RedBoot charge en mémoire le noyau Linux contenu dans la flash et le lance.
Tester RedBoot avec une machine Windows est une loterie. Nous allons procéder d’une manière sérieuse avec des outils prévisibles. La mise en place est la suivante :

  • le Slug est éteint ;
  • le Slug connecté sur votre réseau comme pour le burn-in ? ;
  • absolument aucun disque connecté au Slug ?!
  • une machine connectée sur le réseau Ethernet comme pour le burn-in qui reçoit une adresse par le serveur DHCP du modem routeur ;
  • l’adresse 192.168.0.1 n’est pas utilisée sur le réseau ;
  • un CD Knoppix 3.9 (ou mieux)
  • si le réseau n’a pas de connexion Internet, le package Debian iputils-arping sur une clef USB ou un floppy. (20Kbytes).
    Démarrez la machine avec le CD Knoppix. Ouvrez une fenêtre terminal et passez root

knoppix@0[knoppix]$ su - root

Si la machine a plusieurs interfaces, trouvez celle qui a reçu une adresse du serveur DHCP

root@0[~]# ifconfig -a

eth0   Link encap:Ethernet  HWaddr 00:00:00:00:
      BROADCAST MULTICAST  MTU:1500  Metric:1
      ...
eth1   Link encap:Ethernet  HWaddr 00:0B:43:D1:
      inet addr:192.168.1.16          
      Bcast:192.168.1.255  Mask:255.255.255.0
      ...
lo     Link encap:Local Loopback
      inet addr:127.0.0.1  Mask:255.0.0.0

Dans cet exemple, un notebook, une carte radio est eth0 et un port Ethernet est eth1. eth1 a reçu l’adresse IP 192.168.1.16 par DHCP. À ce point vous devez avoir une connexion Internet et pour mettre à jour la liste des packages disponibles et installer iputils-arping directement par le réseau :

root@0[~]# ping -c 1 www.epfl.ch
...

--- www6.epfl.ch ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms

...
root@0[~]# apt-get update
...

Reading Package Lists... Done
root@0[~]# apt-get install iputils-arping
...

Setting up iputils-arping (20020927-2) ...

Notez bien que nous venons de profiter d’une nouvelle particularité de Knoppix qui permet de personnaliser le système au vol et à chaud, sans aucune remastérisation. Les modifications resteront installées tant que le système ne sera pas redémarré. Alors, laissons la machine sous tension et procédons. Si vous n’avez pas de réseau, installez le package depuis votre clef USB et attribuez manuellement une adresse disponible à l’interface Ethernet :

root@0[~]# apt-get install /mnt/sda1/iputils-arping_20020927-2_i386.deb
root@0[~]# ifconfig eth1 inet 192.168.1.16 broadcast 192.168.1.255 netmask 255.255.255.0

Ajoutez une route vers le Slug RedBoot en précisant bien l’interface Ethernet de votre machine.

root@0[~]# route add 192.168.0.1 eth1

L’utilitaire arping va demander répétitivement qui a l’adresse 192.168.0.1 ? Avec l’option -f, arping se terminera à la première réponse, lançant la commande telnet sur le port 9000. Il nous est donc pratiquent impossible de rater la fenêtre de lancement :

root@0[~]# arping -f 192.168.0.1 -I eth1 ; telnet 192.168.0.1 9000

ARPING 192.168.0.1 from 192.168.1.16 eth1

Tout est prêt, allumez le Slug et retournez vite à votre clavier pour être prêt à faire un Control+C à la requête de RedBoot. Attention, il faut être très vigilant !

Unicast reply from 192.168.0.1 [00:0F:66:7C:06:75] 1.84ms
Sent 98 probes (98 broadcast(s))
Received 1 response(s)
Trying 192.168.0.1...
Connected to 192.168.0.1.
Escape character is '^]'.
== Executing boot script in 1.570 seconds
  - enter ^C to abort
^C
RedBoot>

CQFD

Upgrade Utility

Cette procédure permet de flasher simplement un nouveau firmware dans le NSLU2 depuis une machine Windows, indépendamment du firmware déjà installé. Cela permet de revenir à une ancienne version originale comme de passer à la dernière version du domaine public.

  • Commencez par installer dans Windows l’utilitaireugutil. Sur Internet, cherchez Upgrade_207_XP.exe ou allez sur la page network.epfl.ch/MyNAS.
  • Utilisez le câblage réseau qui était opérationnel lors du burn-in.
  • Le Slug éteint, avec un trombone déplié, tenez pressé le bouton reset au dos du boîtier.
  • Laissez le reset enfoncé et mettez sous tension le Slug avec le bouton de la face avant.
  • Attendre pour relâcher le reset que la LED Ready/Status passe au rouge.
  • Ready/Status doit alors clignoter rouge, sinon recommencez la manipulation.

Le clignotement rouge indique que le Slug est prêt à recevoir un nouveau firmware. Il peut arriver qu’un mauvais flash depuis l’interface Web mette le NSLU2 dans cet état. Rien de tragique, car la suite de la procédure permet de gérer la situation :

  • lancez l’application Windows ugutil ;
  • sélectionnez l’interface réseau de votre machine qui est raccordée au Slug ;
  • pressez le symbole recycler. La liste des adresses physiques des objets flashables apparaît ;
  • sélectionnez l’adresse de votre Slug. En cas de doute, elle figure sur l’étiquette blanche sous le boîtier.
    À ce point vous êtes en mesure de choisir le firmware que vous souhaitez installer :
  • pressez le bouton Files ;
  • sélectionnez le fichier du firmware à installer. Il a une extension .bin. Confirmez ;
  • pressez le bouton Upgrade ;
  • les étapes de la mise à jour défilent sur votre écran : Erasing EEPROM, Upgrading, Verifying Target. Enfin le Slug reboot. Attention, ne rien faire qui pourrait interrompre l’upgrade !

My Unslung

Bonnes Lectures

Parmi toutes les URL retournées par votre moteur de recherche favori pour NSLU2, www.nslu2-linux.org est l’ancrage Web de la communauté des utilisateurs qui développe et modifie le logiciel et le matériel des Slugs. C’est le site de référence pour toutes les FAQ, les précieux tours de main et les marches à suivre. Parcourez-le pour avoir un aperçu des potentialités de votre petit objet. Laissez-vous imprégner de l’esprit de cette communauté.
Pour obtenir les firmwares modifiés, rendez-vous sur www.unslung.org. Ne soyez pas effrayés par le fait que toutes les versions sont nommées Beta. Nous utilisons avec succès les versions Unslung Standard 3.18 Beta et Unslung 5.5 Beta depuis leur parution et nous ne déplorons aucun crash en production dont un cas avec 6 mois de service ininterrompu.
La distribution est accompagnée d’une marche à suivre très détaillée pour installer le firmware. Imprimez-la et utilisez-la comme check-list de votre projet. Ne sautez aucune étape, prenez votre temps et tout se passera paisiblement.

Mais comment cela marche ?

Un concept à garder à l’esprit lors de modification du Slug est qu’il y a deux modes : avec et sans disque USB raccordé. En l’absence de disque, le Slug va chercher des éléments de configuration en mémoire flash, et sur le disque en sa présence.
Le Slug va essayer de monter le(s) disque(s) qu’il voit. Le nombre de disques, leur taille et les formats de systèmes de fichiers qu’il est capable de comprendre vont dépendre de la version du firmware. Si le Slug formate le disque, il crée 3 partitions : 60M de Swap, pour la mémoire virtuelle. 120M pour la configuration, le reste de l’espace disque pour les données utilisateur.

Unsling

L’installation d’un nouveau firmware est suivie de l’opération connue sous le nom d’Unslinging. Elle consiste en un déplacement d’une partie des fichiers du système vers le disque externe.
Pour la version 3.18, seuls les répertoires contenant les applications sont déplacés. La version 5.5, économise 1M de RAM, en installant tout le files system root sur une des partitions du disque externe. L’on dispose ensuite de suffisamment de place pour ajouter des logiciels sans faire déborder la mémoire flash.

Ipkg

Cet utilitaire similaire à apt-get, présent dans le firmware Unslung, permet de gérer les packages logiciels pour cette architecture. Une fois configuré, vous pouvez entre autres actions générer la liste des paquetages installés localement. Obtenir la liste des paquets disponibles on line pour les installer, les désinstaller et les mettre à jour. Mettre à jour la liste des packages :

# ipkg update

Downloading http://ipkg.nslu2-linux.org/feeds/unslung/cross/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/
unslung/cross/Packages.gz
...
Updated list of available packages in /usr/lib/ipkg/lists/unslung-native

Mettre à jour la liste des serveurs de packages, liste ce qui est déjà installé et ce qui est installable :

# ipkg install unslung-feeds
# ipkg update
# ipkg list_installed
# ipkg list

Diversion

Le firmware Unslung introduit le mécanisme de diversion. Au démarrage le système exécute tous les scripts contenus dans /etc/rc.d. Ils sont appelés rc.script car leur nom est préfixé par rc. Si l’homonyme d’un rc.script existe dans le répertoire /unslung, c’est une diversion. Elle est exécutée avant le rc.script original de Linksys. Seulement et seulement si la diversion retourne une valeur non nulle, on enchaîne sur le rc.script du constructeur. Ce mécanisme permet d’altérer la séquence de démarrage du Slug en gardant toutes les modifications dans un emplacement confiné. Le répertoire /unslung n’existe pas d’origine et est détruit par un nouveau flashage du firmware.

/unslung/rc.samba :

My DIODE

Dans ses grandes lignes, DIODE II fonctionne selon les principes suivants : le routeur qui relie l’EPFL à l’Internet est configuré pour refuser, par défaut, les connexions initiées de l’extérieur. Toutes les connexions initiées de l’intérieur sont permises. Elles ouvrent le chemin de retour pour la réponse en provenance de la destination du message sortant. L’accès aux services qui doivent être visibles de l’extérieur est ouvert sélectivement. Un serveur Web en est un bon exemple. Il se trouve que les modems routeurs qui équipent les raccordements téléréseau ou ADSL ont un comportement très semblable. Mais la raison en n’est pas la sécurité de l’usager, mais l’économie d’adresses IP routables. Sur notre campus chaque machine a une adresse IP routable. Cette adresse est unique et désigne en un temps donné, univoquement, une machine pour le reste du monde.
Chez vous, votre opérateur attribue à votre modem routeur une adresse routable. Le routeur devra faire le nécessaire pour offrir l’accès simultané à l’Internet à tous vos objets réseau partageant cette adresse. Pour cela il fera du NAT/PAT. NAT pour Network Address Translation, soit en français, translation d’adresse réseau. PAT est l’acronyme de Port Address Translation, ou IP masquerading. C’est un mécanisme qui permet de faire correspondre les adresses IP internes non routable de vos machines vers l’adresse unique routable attribuée par votre opérateur. Ce sont les numéros de ports qui vont permettre d’identifier la translation en place : l’adresse du port source (celui de la machine interne) va être modifiée par le routeur. Il va servir pour identifier la machine interne. En d’autres termes, une connexion initiée de l’intérieur va établir une translation dans le routeur. La réponse à cette connexion, va utiliser la translation en place dans le routeur qui saura la diriger vers la machine initiatrice du trafic.
Si un trafic non sollicité arrive au routeur, il n’existe (normalement) pas de translation et la connexion n’est pas possible. Nous avons bien un comportement similaire à DIODE. Pour ouvrir un service, il faut modifier la configuration du routeur. C’est la fonction connue selon les fournisseurs comme PinHole, Port Forwarding Redirection, Multi-NAT ou service personnalisé. On établit une translation pour un port donné du routeur vers un port et une adresse d’un ordinateur à l’intérieur de notre réseau maison.
Certains routeurs sont capables d’ouvrir et de fermer ces trous à la demande des clients grâce au protocole UPnP. Je conseille vivement de commencer par déclencher cette fonctionnalité dans le routeur, car elle permet à un virus, à un cheval de Troie ou à un utilisateur inattentif d’ouvrir votre réseau à tout vent (à l’insu de votre plein gré).

My DNS

Pour atteindre votre routeur, votre interlocuteur doit connaître votre adresse IP ou votre nom IP. Il est plus facile de se souvenir de network.epfl.ch que de 128.178.50.30. Les fournisseurs d’accès Internet, qui vous considèrent par défaut comme un consommateur par opposition à un fournisseur de service, changent régulièrement votre adresse IP. Pour pourvoir désigner votre foyer depuis l’extérieur par un petit nom, vous pouvez payer un supplément à votre ISP ou vous inscrire chez un fournisseur de DNS dynamique gratuit.
Le DNS dynamique est une technique pour associer un nom IP à une adresse changeante. Un programme client lancé périodiquement prend contact avec le serveur du fournisseur de ddns pour le renseigner sur l’adresse attribuée à votre connexion. Les modems routeurs récents sont capables de faire cette opération pour vous. Ils sont le mieux placés pour cela, car aux premières loges des modifications d’adressage.
Mettez à jour le firmware du routeur et lisez-en soigneusement la documentation. Il peut être nécessaire d’utiliser l’interface Telnet et non l’interface Web pour configurer le client ddns de votre équipement.
Il se peut que votre routeur n’ait pas cette fonctionnalité. Il se peut aussi qu’il ne soit pas capable d’utiliser l’opérateur de DNS dynamique de votre choix. Il se peut encore que vous souhaitez que votre foyer soit connu sous au moins un nom par membre de la famille, soit plus de noms qu’il n’est capable de gérer. Alors, vous pouvez configurer votre Slug pour se comporter comme autant de clients ddns que nécessaire, chez autant d’opérateurs que souhaité.

/opt/etc/scripts/ddns :

Ce script met à jour l’adresse de ikijibiki.no-ip.org et suzywong.servepics.com. Cette méthode simple ne protège pas le mot de passe du compte no-ip.org et ne vérifie pas que le message est originaire de la nouvelle adresse proposée. Certains services fournissent plus de sécurité en vérifiant la source et l’authenticité des requêtes par des méthodes cryptographiques. Ce n’est toutefois pas le cas de la majorité des routeurs du marché.
Un compromis doit être trouvé entre la fréquence des requêtes et la fenêtre de temps pendant laquelle la résolution DNS sera erronée. Complétez le script pour tous les noms sous lesquels votre routeur sera connu. Configurez cron pour lancer périodiquement les commandes de mise à jour. Cron est un utilitaire Unix qui permet de lancer des tâches répétitives à heure fixe. Son fichier de configuration est /etc/crontab. Les lignes suivantes ajoutées à la diversion /unslung/rc.crond mettront à jour le ddns à la 15ème et la 45ème minutes de chaque heure.

sed -i -e '/\/opt\/etc\/scripts\/ddns \&/d' /etc/crontab
echo "15,45 * * * * root /opt/etc/scripts/ddns& >/dev/null" >> /etc/crontab

Limitations

Attention, vous ne pouvez pas utiliser un nom ddns dans les fichiers de contrôle d’accès basés sur l’adresse IP. C’est le cas de l’option from= dans le fichier authorized_keys de openSSH. Une application correctement écrite obtient l’adresse IP à partir de la résolution du nom ddns et, ensuite, la compare avec le nom IP que retourne la résolution inverse de l’adresse IP. Cette comparaison échoue toujours, car elle compare un nom ddns avec le nom DNS publié par votre ISP, responsable de cette adresse. Exemple : suzywong.servepics.com est différent de 207.248.76.83.cust.bluewin.ch. Un palliatif est d’écrire un script qui met périodiquement à jour la configuration de ces applications avec le nom DNS de votre adresse.

My Tremplin

OpenSSH

Openssh est l’alternative de domaine public à l’application Secure Shell ou ssh. Openssh se compose d’un ensemble d’utilitaires pour établir des connexions réseau sécurisées. Ses mécanismes de gestion de clefs cryptographiques et de chiffrement permettent de garantir l’identité de son interlocuteur, l’intégrité et la confidentialité des communications.Installons openssh sur notre Slug.

# ipkg install openssh

Installing openssh (3.8p1-3) to root...
Downloading http:.../openssh_3.8p1-3_armeb.ipk
Installing openssl (0.9.7d-3) to root...
Downloading http:.../openssl_0.9.7d-3_armeb.ipk
Installing zlib (1.2.2-2) to root...
Downloading http:.../zlib_1.2.2-2_armeb.ipk
Configuring openssh

Generating RSA Key...
Generating public/private rsa1 key pair.
...
Generating RSA Key...
Generating public/private rsa key pair.
...
Generating DSA Key...
Generating public/private dsa key pair.
...
Fixing permissions on the /tmp directory...
Configuring openssl
Configuring zlib

Vous disposez maintenant d’un substitut à toutes les remote commandes d’Unix et au dangereux Telnet. En cas de mise à jour majeure du firmware ou pour diagnostiquer un problème ssh, Telnet sera alors réactivé explicitement.

Gestion des utilisateurs

Dans un système Unix autonome, toutes les configurations sont stockées dans les fichiers textes. La base de données des utilisateurs est le fichier /etc/passwd. Chaque ligne représente un utilisateur et se compose de sept champs séparés par " :"

trillian:sc2azXsxnZIrX:2000:501:TriciaMcMillan:/home/trillian:/bin/sh

Dans l’ordre nous trouvons :
le nom d’utilisateur :son mot de passe encrypté :son id numérique :l’id numérique de son groupe :un commentaire :son répertoire par défaut :la commande lancée à son login, habituellement un Shell.
Les utilisateurs créés avec l’interface Web du NSLU2 existent au niveau Unix, mais n’ont ni home directory ni d’accès Shell. Le home permet de stocker des informations propres à l’utilisateur comme des clefs cryptographiques ou des personnalisations d’applications.

Ligne originale dans /etc/passwd :

trillian:sc2azXsxnZIrX:2000:501:TriciaMcMillan::/dev/null

Avec un home directory :

trillian:sc2azXsxnZIrX:2000:501:TriciaMcMillan:/home/trillian:/dev/null

N’oubliez pas de créer le home directory et de le donner à l’utilisatrice :

# mkdir -p /home/trillian
# chown 2000:501 /home/trillian

Pour avoir un accès Shell, c’est-à-dire pouvoir accéder au serveur avec ssh et taper des commandes Unix, ajouter un Shell. Ne le faire que si c’est vraiment indispensable ! Offrir un shell interactif n’est pas un objectif du projet !

trillian:sc2azXsxnZIrX:2000:501:TriciaMcMillan :/home/trillian :/bin/sh

Pour Tremplin, accordez un Shell restreint. L’usager ne pourra faire aucune commande sur le Slug mais pourra établir des tunnels au travers du Slug. Voilà un exemple fruste de Shell restreint :

trillian:sc2azXsxnZIrX:2000:501:TriciaMcMillan :/home/trillian :/opt/bin/rbash

# ipkg install bash

Installing bash (2.05b-5) to root...
Downloading http:.../bash_2.05b-5_armeb.ipk
Configuring bash

# ln /opt/bin/bash /opt/bin/rbash
# mkdir /opt/rbin

éditer /home/trillian/.profile :

TMOUT=3600
PATH=/opt/rbin
set -r
PS1="Vous êtes en mode TREMPLIN, vous pouvez ouvrir un tunnel\n"

protégez le fichier /home/trillian/.profile :

# chmod a-w /home/trillian/.profile

Pour parachever votre Tremplin domestique, créez le service personnalisé SSH server qui associera le port 22 de votre routeur au port 22 de votre Slug. Dit autrement, vous ouvrez par DIODE votre Slug.

Gestion des clefs

Si l’on peut assigner un programme par utilisateur dans la base de données Unix, on peut, avec openSSH, assigner un programme par clef cryptographique. Ensuite on distribue ces clefs à des utilisateurs locaux ou distants. À tout moment, on peut annuler les droits d’une clef au niveau de la ressource qu’elle contrôle. Nous sommes confrontés au choix suivant, est-il préférable de gérer des comptes utilisateur ou des clefs ? Les clefs sont faciles à documenter et faciles à gérer. De plus, dans ce projet, la gestion des clefs n’interfère pas avec la configuration du Slug, gérée par l’interface de Linksys.
Créez un couple de clefs sans mot de passe pour le service de synchronisation à distance :

# cd .ssh
# ssh-keygen -t dsa -f r-mynas4

Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in r-mynas4.
Your public key has been saved in r-mynas4.pub.
The key fingerprint is:
cf:12:11:cf:8d:9e:95:38:25:db:8f:f3:34:04:8d:c6 root@MYNAS

Installez la clef publique sur la machine à laquelle vous souhaitez accéder

# cat r-mynas4.pub | ssh ikijibiki.no-ip.org "cat >> /root/.ssh/authorized_keys"

The authenticity of host 'ikijibiki.no-ip.org (128.178.11.69)' can't be established.
RSA key fingerprint is 6f:cb:e9:60:61:24:47:7d:ed:53:56:2d:77:1d:ca:23.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ikijibiki.no-ip.org' (RSA) to the list of known hosts.
root@ikijibiki.no-ip.org's password:

Testez votre clef

# ssh -i r-mynas4 suzywong.servepics.com date

The authenticity of host 'suzywong.servepics.com (128.178.11.69)' can't be established.
RSA key fingerprint is 6f:cb:e9:60:61:24:47:7d:ed:53:56:2d:77:1d:ca:23.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'suzywong.servepics.com' (RSA) to the list of known hosts.
Tue Aug 17 11:26:05 CEST 2005

# ssh -i r-mynas4 suzywong.servepics.com date

Tue Aug 17 11:27:34 CEST 2005

Mêmes opérations sur le Slug utilisé pour la réplication :

# cd .ssh
# ssh-keygen -t dsa -f r-mynas7

Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in r-mynas7.
Your public key has been saved in r-mynas7.pub.
The key fingerprint is:
47:ff:74:85:38:3b:83:1c:87:a7:6f:f4:f4:53:86:0d root@MYNAS77

# cat r-mynas7.pub | ssh dg.is-a-geek.com "cat >> /root/.ssh/authorized_keys"

Warning: Permanently added the RSA host key for IP address '83.76.248.207' to the list of known hosts.
root@dg.is-a-geek.com's password:

#ssh -i r-mynas7 dg.is-a-geek.com date

Tue Aug 17 00:10:10 CEST 2005

Dans cette configuration les clefs échangées donnent tout pouvoir d’un système sur l’autre. Pour limiter le pouvoir attribué à une clef complétez le fichier authorized_keys en suivant la documentation de sshd. Ces ajouts, qui ont préséance sur la configuration globale /opt/etc/openssh/sshd_config, sont les suivants : from="pattern-list",command="command", environment="NAME=value",no-port-forwarding, no-X11-forwarding,no-agent-forwardind,no-pty,permitopen="host:port" CLEF commentaires

command="date",no-port-forwarding ssh-dss AAAA...jw== r-mynas4 retourne la date

from="network.epfl.ch",command="/opt/etc/scripts/wake AMD" ssh-dss AAAC...fg== debout WakeUp on LAN

Avec les bonnes clefs sur vous, vous lisez l’heure du Slug depuis n’importe où dans le monde. Mais c’est uniquement depuis network.epfl.ch que vous pouvez lancer un script démarrant un PC sur le LAN de votre foyer. La compromission de ces clefs ne compromet que les fonctions qu’elles permettent d’accéder.

# ssh -i /root/.ssh/r-mynas4 suzywong.servepics.com

Tue Aug 17 23:29:03 CEST 2005
Connection to suzywong.servepics.com closed.

[grandjea@network ~]$ ssh -i ~/.ssh/debout suzywong.servepics.com

AMD dort mais je le réveille...
Connection to suzywong.servepics.com closed.

Si le champ from= est présent dans authorized_keys, n’utilisez pas de noms IP ddns parmi les hosts. Leur vérification sera toujours un échec, et la connexion ne sera jamais établie.

My NTPD

Pour synchroniser les horloges de systèmes informatiques à travers un réseau, on utilise le NTP (Network Time Protocol). Détaillé dans le RFC 2030, ce protocole permet de s’accommoder du temps de propagation variable des paquets traversant l’Internet. Dans ce cas NTP permet d’assurer une précision de l’ordre du 1/100 de seconde. NTP utilise un système hiérarchique de strates d’horloges ; les systèmes de la strate 1 sont synchronisés avec une horloge GPS ou au césium ; alors que ceux de la strate 2 calculent le temps en fonction d’un ou plusieurs serveurs de strate 1.
L’installation de ntpd sur le Slug va tout d’abord synchroniser son horloge interne et fournir accessoirement au réseau domestique un serveur de temps. Car si bien des modems routeurs sont clients ntp, ils ne font pas office de serveur pour leurs clients.

Installation de ntpd

# ipkg install ntp

Installing ntp (4.2.0-1) to root...
Downloading http:.../ntp_4.2.0-1_armeb.ipk
Configuring ntp

Configuration de ntp

Il est préférable d’utiliser des serveurs proches au sens de la topologie du réseau, c’est-à-dire dont les messages traverseront un minimum de routeurs.

/opt/etc/ntp/ntp.conf

driftfile /var/spool/ntp/ntp.drift
server 0.ch.pool.ntp.org
server 1.ch.pool.ntp.org
server 2.ch.pool.ntp.org

/opt/etc/init.d/S77ntp est le script qui relance le processus ntpd

#!/bin/sh

if [ -n "`pidof ntpd`" ]; then
   /bin/killall ntpd 2>/dev/null
fi

if [ ! -d /var/spool/ntp ] ;  then
   mkdir -p /var/spool/ntp
fi

# correct the incorrect tick value on the {Slug} before starting ntpd!
/opt/bin/tickadj 10000

/opt/bin/ntpd -c /opt/etc/ntp/ntp.conf -f \ /var/spool/ntp/ntp.drift -s /var/spool/ntp -k \ /opt/etc/ntp -l /var/spool/ntp/ntp.log

/unslung/rc.rstimezone se substitue au script de Linksys

La diversion /unslung/rc.crond édite /etc/crontab

/etc/crontab après la modification du script de diversion

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/
# ------ ------ Default is Empty -------- -- #
0 0-23/8 * * * root /usr/sbin/CheckDiskFull &>/dev/null
0 0 * * * root /usr/sbin/WatchDog &>/dev/null
1 * * * * root /usr/sbin/hwclock --adjust --localtime &>/dev/null

Comme vous avez modifié des scripts de diversion et d’édition de crontab, c’est une bonne chose de redémarrer le Slug pour vérifier que tout tombe en place comme souhaité.

Test de ntp

Après quelques heures, le Slug doit s’être synchronisé avec les serveurs de temps. Pour le vérifier, la commande date devrait retourner l’heure exacte et la commande ntpq donne accès au Shell du serveur de temps :

# ntpq -n

ntpq> pe
    remote           refid      st t when poll
==============================================
130.60.7.43     .STEP.          16 u    - 1024
+130.60.7.43     130.60.7.51      3 u  419 1024
*217.150.242.8   .DCFa.           1 u  441 1024
ntpq> exit

L’astérisque * indique que ntpd s’est synchronisé sur ce serveur. La colonne st nous dit que c’est un serveur stratum 1. Donc, tout va bien. Le + désigne d’autres serveurs éligibles pour la synchronisation. Plus de documentation sur la configuration et le dépannage de ntpd : www.ntp.org.

Service de Fichiers

Disques

La nature mécanique des disques magnétiques les désigne comme le maillon faible d’une infrastructure de stockage. En regard des autres composants, ils sont considérés comme lents et peu fiables. Pour pallier cet état de fait, diverses stratégies d’agrégation ont été publiées. En 1988 elles furent formalisées sous la dénomination RAID : Redundant Array of Inexpensive Disks, soit matrice redondante de disques bon marché, www.cs.cmu.edu/ garth/RAIDpaper/Patterson88.pdf. Mais le terme inexpensive a rapidement cédé la place à la dénomination independant. Cette nouvelle appellation, qui est celle qui demeure aujourd’hui, est plus propice à justifier les plus-values demandées pour cette technologie dans l’industrie du stockage. À l’aune de 1988, les disques d’aujourd’hui sont incroyablement fiables, rapides et bon marché. Leur taille qui frise le Tera Byte nous dispense d’envisager une agrégation pour couvrir les besoins d’espace d’un foyer. Le débit d’un seul disque peut saturer un lien Ethernet.

Paranoïa

Dans tout projet impliquant une composante de sécurité, la première question à se poser est qui est votre ennemi ? On ne prendra pas les mêmes mesures pour se protéger de l’indiscrétion de son voisin de palier ou d’un plan Échelon ou d’un de ses clones. La suivante, quelles sont les pertes que l’on est capable de supporter ? La dernière question, quel est le budget ? Une redondance des disques magnétiques a un effet immédiat et évident sur le coût du projet. Un miroir double le nombre de disques pour une capacité de stockage inchangée. Le coût du stockage est doublé. Un miroir nous protège contre la défaillance d’un disque. Dans un usage domestique est-ce là ce qui est le plus à craindre ? Est-ce l’investissement le plus utile ?
Les ennemis de vos données sont les erreurs. Les erreurs humaines d’abord, les erreurs de programme ensuite comme la corruption des données ou de structures des files systems. Autres ennemis, et non les moindres, les applications hostiles comme des vers ou des virus prêts à corrompre ou effacer vos fichiers. Les ressources nécessaires pour vous prémunir contre ces sinistres dépendent de l’ampleur des pertes qui vous sont supportables. Selon le genre de fichier, perdre les modifications d’une semaine n’est pas critique, pour d’autre, le travail d’une matinée est précieux.
On peut alors établir le classement suivant :

  • Se protéger contre les erreurs humaines et les programmes malicieux. Et pour cela, profiter d’une journalisation des fichiers (snapshot).
  • Se protéger d’une défaillance des disques magnétiques en introduisant une redondance. Un second disque sera utilisé pour stocker les snapshots. Cette approche augmente la capacité à disposition pour snapshots. La présence de plusieurs disques avec plusieurs systèmes de fichiers mitige l’impact d’une corruption de l’un d’eux. Bien sûr, le système de fichier sera choisi robuste.
  • Se protéger d’un sinistre total de l’infrastructure en installant un site distant, dans une autre pièce, sur une autre phase du secteur, ou à l’autre bout de la planète.
  • Et en dernier lieu, se protéger contre une panne de disque avec une technique RAID. C’est la coûteuse cerise sur le gâteau. Dans ce dernier cas, la perte d’un disque passera inaperçue. Ce qui ne sera pas les cas de défaillance du système RAID : complication supplémentaire et donc source d’erreur potentielle.
    Avant d’en faire trop sur la redondance des disques, il faut garder à l’esprit qu’une panne du secteur ou de l’alimentation d’un des composants est plus probable que la défaillance d’un disque moderne. Une telle panne pourra précipiter la corruption des données sur le disque et la défaillance des composants de l’infrastructure. Les puissances en jeux étant faibles, une trentaine de Watts avec un disque Maxtor One-Touch de 200 Gigas Octets, l’installation d’une alimentation ininterruptible pour votre serveur et votre routeur coûtera moins d’une centaine de francs pour plus d’une heure d’autonomie. Une autre approche est d’utiliser un petit disque conçu pour être alimenté par le port USB et quatre piles rechargeables NiMh AA pour disposer d’une excellente alimentation secourue ou d’un serveur transportable.

Choix d’architecture

JPEG - 9.6 ko
Deux slugs en réplication

Nous considérerons les configurations suivantes :

  • Un Slug avec un (gros) disque, données et snapshots sur le même disque.
  • Un Slug avec 2 (gros) disques : données sur un disque et les snapshots sur l’autre.
  • Deux Slugs avec un ou deux disques chacun, offrent les options suivantes :
    • Un des Slug sert aux données, l’autre aux snapshots.
    • Le premier Slug stocke données et snapshots, le second réplique le premier in extenso. La réplique se substitue à l’original en cas de désastre.
    • Chaque Slug stocke ses données propres et les snapshots de l’autre.
      • Dans un même réseau local, la distribution des services entre les Slug distribue également leur charge.
      • À travers l’Internet, cela établit une infrastructure collaborative, la réplication devient un moyen de distribution de données entre plusieurs sites distants.
        Vous allez le constater, toutes ces configurations sont intrinsèquement identiques. Si elles se distinguent que par la quantité de matériel, d’un point de vue logique, elles n’ont que peu de différences. Gardez aussi à l’esprit qu’il sera extrêmement aisé de passer d’un modèle à l’autre. Voir de panacher les approches pour coller au besoin qui découlera de l’usage. C’est le bénéfice de la modularité et de la transparence des outils sélectionnés pour ce projet.
        Bien que techniquement possible, car parfaitement gérée par Linux, nous n’aborderons pas l’utilisation de redondance par la technologie RAID. Dans un projet comme celui-ci, l’augmentation des coûts est disproportionnée par rapport aux bénéfices récoltés. C’est en effet les disques qui représentent la majorité du budget.
        Si vous consentez toutefois à faire ce lourd investissement, il y a une démarche encore plus simple. Il existe sur le marché des boîtiers contenant deux disques. À l’installation, leur contrôleur interne vous donne le choix entre redondance ou contenance. Finalement, tout est transparent pour le Slug qui ne voit qu’un banal disque sur ses ports USB.

Samba

Samba est une implémentation open source du protocole SMB, Server Message Block d’IBM et des extensions de Microsoft. Samba a vu le jour en 1992 pour servir des clients smb pathworks de la défunte DEC. Vers 1996, pour paraître l’instigateur d’Internet, Microsoft renomme SMB le Common Internet File Sytem Protocol ou CIFS. Cet éditeur y ajoute régulièrement ses personnalisations.
Le Slug arrive d’origine avec une version 2.2.7 de Samba. Bien que fiable, cette version est obsolète et souffre des limitations suivantes :

  • Limitation dans la longueur des paths. Il est donc impossible d’avoir des arborescences très profondes ou des longs noms de fichier.
  • Pas de support pour le nommage des fichiers en Unicode, excluant, par exemple, la manipulation de noms en langues orientales.
    Pour en savoir plus sur les très nombreuses fonctionnalités des serveurs Samba, ses astuces de configuration, visitez le miroir samba le plus proche samba.epfl.ch. Installons une version 3.0. Cette dernière est plus arrangeante avec les récentes versions des clients Windows :

# ipkg install samba

Downloading http:.../samba_3.0.14a-6_armeb.ipk
...
Configuring cyrus-sasl-libs
Configuring gdbm
Configuring libdb
Configuring openldap-libs
Configuring popt
Configuring readline
Configuring samba
The original samba version 2 config (/etc/samba/smb.conf) is no longer working with this version of samba.
Please create a new samba version 3 config (/opt/etc/samba/smb.conf).
After verify your smb.conf file, modify and execute /opt/etc/init.d/S80samba to activate the samba version 3.0.

Gestion des utilisateurs

La base de données des utilisateurs Samba avec les mots de passe encryptés différemment que pour le login Unix se trouve dans le fichier /etc/samba/smbpasswd, en fait un lien vers /share/hdd/conf/passwd. Ce fichier est mis à jour par l’interface Web d’administration. Le fichier /etc/samba/smbusers entretient la relation entre un ou plusieurs noms d’utilisateurs Windows et un nom d’utilisateur Unix.

# Unix_name = SMB_name1 SMB_name2 ...
nobody = guest
trillian = TriciaMcMillan

Configuration de Samba 3.0

Reprise de la configuration de 2.2.7 :

cp /etc/samba/* /opt/etc/samba

Si l’on souhaite modifier le fichier de configuration du serveur Samba, /share/hdd/conf/share/smb.conf, il est judicieux de le faire dans le script de diversion /unslung/rc.samba. Cela préserve la compatibilité avec l’édition de la configuration par l’interface Web et n’entrave pas la mise à jour du système. /opt/etc/init.d/S80samba lance les deamons Samba en lieu et place de rc.samba

NFS

Le protocole Network files system fut développé par Sun Microsystems en 1984. Mis à disposition des autres constructeurs, ses différentes implémentations font l’objet de tests d’interopérabilité qui traquent les divergences. Originaire du monde UNIX, il est principalement répandu sur ces systèmes.
NFS fournit à son client un files system UNIX distant qui est pratiquement indiscernable d’un file système local. Utilisé sur un LAN en UDP (par opposition à TCP/IP), il est stateless. Concrètement, un service client peut-être rendu insensible au redémarrage d’un serveur de fichier. Ces facultés rendent NFS particulièrement bien indiqué pour la réalisation de serveurs applicatifs. Un exemple type est un ensemble de serveurs Web publiant les données d’un ensemble de serveurs NFS.
NFS est aussi utilisé dans la séquence de démarrage réseau des machines de type UNIX comme Mac OS (NetBoot) ou des bootloaders de processeurs de systèmes embarqués. N’installez NFS que si vous en avez besoin. Le processus portmap qui attend les connexions rpc NFS consommerait inutilement de la mémoire. L’installation peut être faite en tout temps ultérieurement :

# ipkg install portmap

Installing portmap (4-3) to root...
Downloading http:.../portmap_4-3_armeb.ipk
Configuring portmap

# ipkg install nfs-utils

Installing nfs-utils (1.0.6-3) to root...
Downloading http:.../nfs-utils_1.0.6-3_armeb.ipk
Configuring nfs-utils
To complete the installation, you must edit /opt/etc/exports,
and then run /opt/etc/init.d/S56nfs-utils to start the nfs server.

rsync

Crée par Andrew Tridgell, le père de Samba, rsync permet de synchroniser des arborescences de fichiers localement ou entre des machines distantes en minimisant la quantité de données transférées. Rsync utilise openSSH comme moyen de communication entre systèmes distants, profitant ainsi de ses mécanismes d’authentification et de chiffrage. Il est employable comme client ou comme serveur, répondant par défaut sur le port UDP/TCIP 873. Dans une infrastructure partagée, la possibilité de configurer la bande passante réseau consommée par rsync est précieuse. La sophistication de l’outil permet de mettre aisément en place des procédures de réplication locale ou distante ainsi que la création de snapshots.

# ipkg install rsync

Installing rsync (2.6.3-7) to root...
Downloading http:.../rsync_2.6.3-7_armeb.ipk
Configuring rsync

Testons notre rsync en copiant le contenu d’un iPod mini sur notre NAS. La première fois, c’est long, sans gains d’optimisation. La seconde, seul ce qui est modifié est mis à jour, juste une vérification dans ce cas. C’est alors 193’988 fois plus rapide !

# rsync -av -e "/opt/bin/ssh -i /root/.ssh/r- mynas4" iPod suzywong.servepics.com:/share/hdd/data/music

building file list ... done
iTunes Music/
iTunes Music/Abba/
...
iTunes Music/ZZ Top/

sent 6221468967 bytes  received 19240 bytes  617119.30 bytes/sec
total size is 6220637116  speedup is 1.00

# rsync -av -e "/opt/bin/ssh -i /root/.ssh/r-mynas4" iPod suzywong.servepics.com:/share/hdd/data/music

building file list ... done

sent 32047 bytes  received 20 bytes  5830.36 bytes/sec
total size is 6220637116  speedup is 193988.75

rsnapshot

Les snapshots permettent d’obtenir une image à un temps donné de tout ou partie d’un file système. Une bonne présentation permet à l’utilisateur de naviguer dans ces images comme s’il voyageait dans le temps. Elle permet de comparer deux versions de fichiers, de récupérer sans intervention extérieure un fichier effacé par erreur. Avec rsync et openSSH vous avez tous les composants d’un système de snapshot, local ou distant. Ils permettent de créer des images qui ne consomment que la taille des fichiers modifiés depuis la dernière prise. Une telle réalisation est décrite dans l’article : www.mikerubel.org/computers/rsync_snapshots/index.html. Nathan Rosenquist a construit sur cette base un utilitaire en Perl, rsnapshot. Ce script ordonne et automatise la prise d’image et centralise la configuration en un seul fichier texte. Rsnapshot a aussi un intérêt didactique, car il est capable de tourner à blanc et d’afficher les commandes qu’il eut exécutées. C’est une bonne source d’inspiration si vous souhaitez peaufiner une organisation toute personnelle de sauvegarde.

# ipkg install rsnapshot

Installing rsnapshot (1.2.0-1) to root...
Downloading http:.../rsnapshot_1.2.0-1_armeb.ipk
Installing coreutils (5.2.1-8) to root...
Downloading http:.../coreutils_5.2.1-8_armeb.ipk
Configuring coreutils
update-alternatives: Linking //opt/bin/kill to /opt/bin/coreutils-kill
update-alternatives: Linking //opt/bin/uptime to /opt/bin/coreutils-uptime
Configuring perl
Configuring rsnapshot

Avec l’interface Web, créez un partage nommé snapshot accessible uniquement par l’administrateur en lecture seule. Cela créera le répertoire /share/hdd/data/snapshot si il est sur le disque raccordé au port USB1 ou /share/flash/data/snapshot pour le port USB2. Cet emplacement sera la racine de tous les snapshots. Le document rsnapshot HOWTO est clair et vous explique parfaitement la logique du programme. Le fichier de configuration /opt/etc/rsnapshot.conf est bien documenté et facile à personnaliser. Les mots clefs et les options doivent impérativement être séparés par des tabulations. Modifiez les valeurs :

{snapshot}_root        /share/hdd/data/{snapshot}
no_create_root  1
one_fs  1
# identité utilisée pour la connexion distante
ssh_args        -i /root/.ssh/r-mynas4
# la profondeur des sauvegardes
interval        hourly  3
interval        daily   7
interval        weekly  4
# sauvegardes
backup  root@suzywong.serverpics.com:/share/hdd/data/music      suzywong.serverpics.com
backup  /share/hdd/data/trillian     localhost/

Des deux exemples de sauvegarde, désignés par le mot clef backup, le premier va chercher le partage music chez suzywong pour le répliquer localement. L’opération se fera avec les privilèges de l’utilisateur root. Le second crée une sauvegarde locale du partage de Tricia. La seule limitation de rsnapshot dans la rédaction des backups est que seule la source peut être distante. On va donc chercher les données. Toutefois, rien ne vous empêche d’utiliser rsync pour envoyer ou pousser une réplication vers un site distant.
Vérifiez la syntaxe de la configuration :

# /opt/bin/rsnapshot configtest

Syntax OK

Editez la diversion de cron pour lancer rsnapshot aux intervales choisis :

sed -i -e '/\/opt\/bin\/rsnapshot/d' \
/etc/crontab
echo "30 6,12,18 * * *  /opt/bin/rsnapshot hourly"  >> /etc/crontab
echo "0 1 * * *         /opt/bin/rsnapshot daily"   >> /etc/crontab
echo "0 0 * * 0         /opt/bin/rsnapshot weekly"  >> /etc/crontab

Les actions d’un snapshot horaire :

# rsnapshot hourly

echo 2942 > /opt/var/run/rsnapshot.pid
/opt/bin/rm -rf /share/hdd/data/{snapshot}/hourly.2/
mv /share/hdd/data/{snapshot}/hourly.1/ /share/hdd/data/{snapshot}/hourly.2/
mv /share/hdd/data/{snapshot}/hourly.0/ /share/hdd/data/{snapshot}/hourly.1/
/opt/bin/rsync -ax --delete --numeric-ids \ --relative --delete-excluded \
--rsh=/opt/bin/ssh -i /root/.ssh/r-mynas7 \
root@suzywong.serverpics.com:/share/hdd/data/music \
/share/hdd/data/{snapshot}/hourly.0/suzywong.serverpics.com
/opt/bin/rsync -ax --delete --numeric-ids \ --relative --delete-excluded \
--link-dest=/share/hdd/data/{snapshot}/hourly.1/localhost/ \
/share/hdd/data/trillian/ /share/hdd/data/{snapshot}/hourly.0/localhost/
touch /share/hdd/data/{snapshot}/hourly.0/

Vous avez défini le snapshot du partage trillian. Pour en présenter agréablement l’historique à Tricia, établissez un partage snapshot_trillian, avec accès en lecture seule pour trillian.
Ce dernier point est primordial, car nul client ne doit être en mesure d’altérer les archives. Le répertoire /share/hdd/data/trillian_snapshot résultant est bien sûr vide. Créez des liens symboliques entre les archives et le partage.

# ln -s /share/hdd/data/{snapshot}/hourly.0/localhost/share/hdd/trillian /share/hdd/data/trillian_{snapshot}/hourly.0
# ln -s /share/hdd/data/{snapshot}/hourly.1/localhost/share/hdd/trillian /share/hdd/data/trillian_{snapshot}/hourly.1
# ln -s /share/hdd/data/{snapshot}/hourly.2/localhost/share/hdd/trillian /share/hdd/data/trillian_{snapshot}/hourly.2
...

Tricia peut ainsi connecter le lecteur réseau \\MyNAS\trillian sur X : et \\MyNAS\trillian_shapshot\hourly.1 sur Y :. Le lecteur Y : représente l’état du lecteur X : quelques heures dans le passé.

Archivage de la messagerie

S’il n’y a pas de touche effacer sur Internet, il n’y a pas non plus de touche restaurer.
De nombreux services de messagerie électronique vous offrent des comptes E-mails agréables et efficaces à utiliser par l’intermédiaire d’une interface Web. Ils allouent des capacités de stockages de plusieurs Giga Bytes qui les transforment en espace de stockage accessible de partout. Ils offrent des services tels que la détection des Spams, le tri et l’indexation des messages, traitement et réponse automatique. Toutes choses simplement pas envisageables chez soi. Mais aucun de ces prestataires ne nous garantit la pérennité des données qui leur sont confiées. Cela changera peut-être comme séquelle d’un nouveau cadre légal qui imposerait l’archivage du contenu du courrier de leur clientèle ; pour le moment seules les enveloppes sont officiellement conservées. Il est alors indispensable d’agir pour préserver la mémoire de nos échanges et sauvegarder notre courrier.
Nous allons donc installer et configurer un service qui ira collecter une copie du courrier dans les comptes des Gmail et autre Bluewin pour l’archiver et la classer sur notre serveur de fichier. Le tout sera bien sûr automatique. Pour le moment, on ne présume aucune utilisation de cette information, mais elle sera là, chez soi, en sécurité.

Fetchmail

L’utilitaire fetchmail rapatrie les courriers électroniques distants sur le système local de l’utilisateur. Fetchmail est capable d’utiliser de nombreux protocoles tels que POP, IMAP et ODMR. Nous allons configurer fetchmail pour surveiller le contenu d’une boîte aux lettres Gmail en utilisant un canal sécurisé par STARTTLS. Comme avec un échange HTTPS pour un site Web sécurisé, nous aurons la garantie que nous parlerons bien à un serveur de Google et que le contenu de nos échanges sera inintelligible pour un observateur externe.Installez fetchmail :

# ipkg install fetchmail

Installing fetchmail (6.2.5-5) to root...
Downloading http:.../fetchmail_6.2.5-5_armeb.ipk
Configuring fetchmail

Please edit /opt/etc/fetchmailrc
and start /opt/etc/init.d/S52fetchmail

/opt/etc/init.d/S52fetchmail

Collectez le certificat de Google :

# mkdir /root/.certs
# openssl s_client -connect smtp.gmail.com:995 -showcerts > /root/.certs/gpop.pem

Editez le fichier /root/.certs/gpop.pem pour ne garder que le certificat de Google. Soit le bloc de texte qui commence par la ligne -----BEGIN CERTIFICATE----- et se termine par la ligne -----END CERTIFICATE----- La lecture du certificat vous indique qu’il est signé par l’autorité de certification Thawte. Bien que très répandu, ce certificat root manque à la distribution d’openSSL du NSLU2. Il est disponible dans le fichier /usr/share/ca-certificates/mozilla/Thawte_Server_CA.crt de Knoppix. Stockez le certificat dans /root/.certs/thawte.pem. Ce fichier ainsi que tous les scripts décrits dans le présent article sont disponibles sur la page network.epfl.ch/MyNAS. Une FAQ, Foire Aux Questions, s’y trouve également.
Un autre absent du paquetage openSSL, est l’utilitaire ((c_rehash)). Ci-après un petit script qui le remplacera pour cet usage.

# cd /root/.certs
# ls -asl

2 -rw-------  1 root root 1192 ... gpop.pem
2 -rw-------  1 root root 1127 ... thawte.pem
1 -rwx------  1 root root  122 ... c_rehash

# cat ./c_rehash

#!/bin/sh
for c in *.pem
  do /opt/bin/openssl x509 -in "$c" -out "$(/opt/bin/openssl x509 -noout -hash -in "$c").0"
done

Créez les hashs des certificats utilisés par fetchmail :

# ./c_rehash
# ls -asl

2 -rw-------  1 root root 1192 ... 34ceaf75.0
1 -rwx------  1 root root  122 ... c_rehash
2 -rw-------  1 root root 1127 ... ddc328ff.0
2 -rw-------  1 root root 1192 ... gpop.pem
2 -rw-------  1 root root 1127 ... thawte.pem

Vérifiez vos certificats avec la commande :

# openssl s_client -connect pop.gmail.com:995 -CApath /root/.certs

CONNECTED(00000003)
depth=1 /C=ZA/ST=Western Cape/L=Cape Town/O=Tha
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=G
verify return:1
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Goog
  i:/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte
---
Server certificate
-----BEGIN CERTIFICATE-----
...
   Timeout   : 300 (sec)
   Verify return code: 0 (ok)
---
+OK Gpop g2pf501558rne ready.
read:errno=0

Tout s’est passé sans problème, vous avez une connexion sécurisée avec pop.gmail.com /opt/etc/fetchmailrc

Nous pouvez maintenant configurer le classement de courrier avec procmail.

Procmail

Procmail est un MDA, Mail Delivery Agent. Il accepte les courriers électroniques entrants et les distribue dans les boîtes aux lettres des destinataires. Mais la grande particularité de procmail est la possibilité de classer le courrier selon le contenu des champs de l’adresse (FROM TO Subject) et le contenu du message. Procmail peut être utilisé comme antispam ou pour générer des réponses automatiques. Procmail est accompagné du programme formail qui permet de traiter votre courrier déjà archivé localement. Pour l’exemple, nous nous contenterons de configurer un filtre tout simple. Commencez par installer procmail :

# ipkg install procmail

Installing procmail (3.22-1) to root...
Downloading http:.../procmail_3.22-1_armeb.ipk
Configuring procmail

Les utilisateurs créés dans l’interface du NSLU2 existent au niveau Unix, mais n’ont ni home directory ni accès Shell. Si nous voulons que le tri du courrier se fasse avec les privilèges (ou l’absence de privilèges) de son propriétaire, il faut lui attribuer un home directory. C’est dans cet espace que procmail viendra chercher les règles de filtrage à appliquer au courrier.

# grep trillian /etc/password

trillian:sc2azXsxnZIrX:2000:501:TriciaMcMillan:/home/trillian:/opt/bin/rbhsh

Procmail va rechercher dans le home directory le fichier nommé .procmailrc. Dans l’exemple qui va suivre nous allons ajouter au partage SMB de l’utilisatrice Trillian un répertoire Mail pour le courrier et un sous répertoire procmail pour le journal de procmail et les règles de filtrage. Si le partage a été crée avec l’interface Web, il est dans /share/hdd/data/trillian.

# mkdir -p /share/hdd/data/trillian/Mail/procmail
# chown 2000:501 /share/hdd/data/trillian/Mail/procmail
# ln -s /share/hdd/data/trillian/Mail/ \
procmail/.procmailrc /home/trillian/.procmailrc

Ainsi, Tricia pourra personnellement éditer les règles de gestion de ses mails sans avoir besoin d’un accès Shell interactif. Éditons le fichier .procmailrc :

rc.testing : si le sujet du mail contient la chaîne de caractère test, alors il est stocké dans la boîte aux lettres IN-testing

:0:
* ^Subject:.*test
IN-testing

rc.catchall : tous les mails qui n’auront pas été classés à ce point seront mis dans la boîte aux lettres Inbox.

:0:
Inbox

Procmail permet de mettre en place un environnement de traitement du courrier très sophistiqué. Son application fait l’objet de nombreux sites fourmillant de conseils et de configurations utiles.

My Mediaserver

En dehors des sempiternels Apaches et MySQL qui sont bien sûr disponibles pour le Slug, une nouvelle famille de services est en cours d’émergence. Ce sont les serveurs de médias. Ils gèrent et servent des clients spécialisés dans la consommation de vidéos d’images et de sons. Dans le monde selon Apple, le client est une application compatible iTunes. Dans une autre incarnation, le client est compatible UPnP. Ces clients sont un ordinateur avec un logiciel adéquat ou un objet réseau complètement autonome comme un Terratec Noxon ou un Roku SoundBridge. Ces objets se connectent par l’intermédiaire de votre réseau, avec ou sans fil, au serveur de média, votre Slug dans le cas qui nous intéresse aujourd’hui, et jouent vos fichiers de musique qui s’y trouvent. Pour transformer votre Slug en serveur iTunes, if faut installer et configurer l’application de domaine public mt-daapd. Pour les clients UPnP, le mediaserver commercial de Twonky fait très bien l’affaire. Mais tout cela est de la musique d’avenir dans ces pages.

Et + encore ?

Au cours de ce parcours, vous vous êtes rendu compte, que tranquillement, brique par brique, vous pouviez construire une infrastructure fiable et efficace et transparente qui saura se faire oublier dans un recoin de votre habitation. Mais êtes-vous A, B ou C ?

A

Vous faites peut-être partie de la minorité des lecteurs qui n’est pas sortie indemne de ce voyage. Vous voilà dépendant à la personnalisation des petits objets réseau. Plus rien ne doit être privé d’une interface Ethernet. Tout va y passer, le porte-savon, le téléphone, tout ! La RFC 2321 est votre saint Graal. Votre prochain article pour le Flash informatique sera MyGRID.

B

Vous trouvez toute cette explication fastidieuse, épuisante. Mais au fond de vous-même vous pressentez bien qu’il y a quelque chose à faire pour que votre informatique@home reste sweet. Comme la personnalisation des Slugs est pratiquée par une communauté croissante et active, il existe certainement dans votre entourage une personne qui mettra sa Geek attitude au service de votre repos. Mais ne ratez pas l’occasion de la regarder faire. Vous constaterez que ce n’était pas une tâche si dantesque et vous passerez un bon moment.

C

Vous avez entamé le voyage, mais vous avez perdu la route. Vous avez d’ores et déjà toutes les bases pour vous aventurer dans les groupes de discussion consacrés au Slug ou pour faire appel à votre entourage. Allez, haut les coeurs !

Liens




Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.