Retrouvez cet article dans : Linux Magazine Hors série 21
Parmi tous les moyens et méthodes de communication qu’offre le Net, il en est un qui fait se croiser la souplesse du mail avec l’interactivité des forums. Il s’agit des groupes de discussion Usenet. Une fois que vous y aurez pris goût, l’accès vous paraîtra sans doute trop lent ou trop contraignant. Alors pourquoi ne pas dédier une machine pour régler le problème ?
Un peu d’histoire
Retour en été 1979. En ce temps-là , une nouvelle version du système Unix venait d’arriver (version 7) et était livrée avec bon nombre d’utilitaires puissants qui existent encore aujourd’hui (awk, sed, bourne shell, etc.). Autre nouveauté, Unix version 7 utilisait le protocole de communication UUCP (Unix to Unix CoPy) permettant de standardiser la communication entre systèmes. Fin 1979, une émulation se forme entre deux utilisateurs d’Unix Version 7. Nous avons d’un coté Tom Truscott et de l’autre Jim Ellis, un étudiant qui vient d’installer un Unix Version 7. Suite à cette installation, quelques programmes ne fonctionnent plus et en particulier celui qui fournissait un service de tableaux d’annonces partagé entre utilisateurs. Une conversation entre Tom Truscott et Jim Ellis et l’idée de créer un réseau mondial d’annonces entre plusieurs ordinateurs jaillit : Netnews venait d’être imaginé. Deux autres étudiants rejoignirent nos compères : Dennis Rockwell et Steve Bellovin. Tous les quatre se mirent d’accord sur le format des fichiers à échanger et l’utilisation du protocole UUCP. Le premier système était un simple script shell qui fonctionnait parfaitement avec 2 ou 3 messages par jours. C’est Steve Daniel rejoignant le groupe qui l’idée de structurer les forums d’annonces en une hiérarchie. A ce moment le réseau d’annonces est composé de trois ordinateurs dont deux sous Unix Version 7. Après une conférence de deux membres du groupe, d’autres utilisateurs et ordinateurs se joignent au réseau : Netnews devient alors Usenet pour Unix uSErs NETwork ou USEr’s NETwork (bien que le premier acronyme soit plus logique). Le réseau devient plus important et il faut récrire le script. Steve Daniel et Tom Trustcott créent alors A-News. Le réseau relie maintenant 8 ordinateurs. Et, par chance, l’une de ces machines, l’ucbvax (University of California at Berkeley), est reliée à Arpanet. C’est ainsi que l’ucbvax devient le point de relais entre Arpanet et les autres machines Usenet. Usenet connaît un succès sans cesse croissant. A plusieurs reprises, le réseau devient instable. Le trafic et le volume de Usenet augmentent et commencent à coûter cher. En 1983, de tous côtés, des administrateurs système dédient des machines au transport des informations Usenet en dépit du coût des communications : le backbone voit le jour. Son objectif est de transférer les données le plus rapidement possible d’un point du backbone à l’autre pour répartir les données moins rapidement. Les administrateurs des machines du backbone acquièrent ainsi un contrôle sur Usenet. Si un utilisateur crée un groupe qui ne plaît pas aux grands maîtres administrateurs, celui-ci ne passe tout simplement pas sur le backbone. En 1986, un nouveau protocole est créé pour Usenet : NNTP. Ce protocole à pour but de standardiser le transport des messages (ou articles) sur le réseau Arpanet qui utilise TCP/IP et non pas UUCP. NNTP est conçu pour les forums Usenet afin d’obtenir une diffusion rapide et moins lourde. C’est toujours ce protocole qui est utilisé pour les forums Usenet de nos jours sur Internet.Accès à Usenet
Usenet est aujourd’hui le plus gros système décentralisé d’information du monde. En d’autres termes, il forme un réseau de machines interconnectées au travers d’Internet pour former le plus gros système de forum ayant jamais existé. Chaque fournisseur d’accès à Internet possède normalement un lien avec Usenet. Il stocke donc une copie de tous les groupes et de leur contenu. En fonction de leur nom (reflétant leur contenu), le fournisseur d’accès peut refuser de fournir un groupe à ses clients. Ceci peut être fait arbitrairement, en raison de lois propres au pays où vous vous trouvez ou tout simplement pour des questions d’éthique. Dans tous les cas, le fournisseur d’accès précise l’adresse de son serveur Usenet dans sa documentation. Vous pouvez ainsi récupérer les articles et poster les vôtres. Pour cela, vous utilisez un lecteur de News qui accèdera directement au serveur du fournisseur (port 119). Avec un usage intensif des groupes de discussion, on arrive vite à perdre patience et ce, même avec une connexion Internet haut débit. En effet, à chaque lecture d’un article vous devrez le télécharger. Lorsqu’il s’agit de simples articles, cela reste supportable mais avec des images de taille conséquente (comme sur le serveur news.povray.org) chaque lecture est précédée d’un temps d’attente. Pire encore, dans le cas d’un réseau local domestique ou d’entreprise, plusieurs postes accédant aux mêmes articles vont devoir télécharger les informations... une consommation bien inutile de la connexion. Il est bien plus efficace de dédier une machine récupérant les articles des groupes préférés pour une consultation locale.Principe et logiciels
Un serveur Usenet comme celui de votre fournisseur maintient une copie des articles et des groupes sur une machine locale. Cette même machine permet de procéder à l’opération inverse, c’est-à -dire, répercuter les articles que ses utilisateurs postent sur les autres serveurs Usenet. Installer une machine dédiée à Usenet chez vous revient quasiment au même. Le principe de base est le suivant : Votre machine récupèrera la liste des groupes et les articles des groupes qui vous intéressent. Inutile d’espérer récupérer l’intégralité des articles de tous les groupes si vous ne disposer pas d’un débit digne de celui d’un fournisseur d’accès ou d’une université ainsi que d’un espace disque plus de conséquent. La machine fera office de serveur Usenet local. Par défaut, seules les connexions du localhost sont autorisées. Il faudra une configuration spécifique pour permettre à d’autres machines d’utiliser votre serveur local. Quoi qu’il en soit, votre machine fournira ainsi les groupes et leur contenu sur simple demande, et ce, avec un débit bien plus intéressant qu’un téléchargement ponctuel sur le serveur de votre fournisseur. Votre serveur NNTP local acceptera également les articles que vous posterez. A sa charge ensuite de " remonter " ces articles au serveur de votre fournisseur lors de la récupération des articles. Vous l’aurez compris, afin de faciliter localement la consultation et l’utilisation des groupes de discussion, on concèdera un peu d’interactivité.
En effet, votre serveur ne sera pas connecté de manière permanente à celui du fournisseur d’accès mais procèdera à une synchronisation à intervalle régulier. Le contenu des groupes n’est ainsi actualisé qu’un certain nombre de fois par jour (ou par semaine) et vous obtenez un certain décalage temporel. On notera toutefois que l’interactivité n’est pas un élément clef des discussions sur Usenet même si, parfois, on a vraiment envie de répondre très vite ;). Il existe plusieurs solutions permettant de procéder comme décrit plus haut. Parmi les deux plus populaires, nous ne parlerons ici que du duo Leafnode et Fetchnews en oubliant délibérément le couple NNTPCache et INN. Comme avec bien des applications libres, il existe des utilisateurs défendant l’une et l’autre solution logicielle. Nous nous limitons ici à Leafnode pour plusieurs raisons dont le fait qu’il soit légèrement plus populaire et que le projet semble encore pleinement actif. Nous pouvons ajouter à cela que Leafnode est spécialement conçu pour les petits sites.
Installation
La distribution de référence ici est une Debian Sarge. Il s’agit d’un choix délibéré car pour un système " serveur ", cette distribution s’avère à la fois légère et administrable facilement. Bien sûr, d’autres distributions pourront être utilisées selon vos préférences et les explications devraient être relativement faciles à adapter. D’un point de vue matériel, la configuration peut être très petite. Selon le nombre de groupes et l’activité de ceux-ci, c’est en particulier au niveau de l’espace disque qu’il faudra être attentif. En effet, les articles sont massivement stockés sur le système de fichiers, mais le reste de la solution n’est pas très gourmande en termes de processeur ou de mémoire. Un simple Pentium ou compatible avec 16 ou 32Mo de mémoire devrait faire l’affaire. On préfèrera cependant un Pentium II et 64 ou 128 Mo de mémoire pour un plus grand confort d’utilisation et de maintenance du système. Les articles Usenet n’étant pas exempts de virus, spyware, bombes logiques et autres scripts fort nuisibles, il pourra être intéressant d’ajouter un système anti-virus comme ClamAV pour protéger d’éventuels postes Windows. L’installation de Leafnode est très simple puisqu’un simpleInterlude " sécurité "
Avant de poursuivre, nous allons traiter de la sécurité de la configuration. Le serveur Leafnode est normalement lancé par le super démon inetd lors d’une tentative de connexion au port 119. Dans un premier temps, on préfèrera xinetd au classique inetd. Offrant plus de finesse dans la configuration, il permettra de se protéger, par exemple, contre une éventuelle attaque de type DOS (Deny Of Service). Le serveur Leafnode est exécuté par le super démon via tcpd permettant ainsi d’autoriser ou non certaines connexions en fonction de la machine cliente. Par défaut avec Debian Sarge, tcpd est configuré de manière à n’autoriser les connexions à Leafnode que depuis le localhost (127.0.0.1). Si vous tentez, avec la configuration par défaut de vous connecter au port 119, tcpd vous coupera la route. Vérifiez donc les fichiers
service nntp
{
flags = NAMEINARGS NOLIBWRAP
socket_type = stream
protocol = tcp
wait = no
user = news
server = /usr/sbin/tcpd
server_args = /usr/sbin/leafnode
instances = 7
per_source = 3
}
On retrouve des paramètres classiques pour xinetd et les éléments également présents dans le ssh -L 9119:127.0.0.1:119 denis@192.168.0.68Cette simple commande vous permet de vous connecter au serveur (192.168.0.68) tout en créant un tunnel entre le port 9119 de la machine cliente et le 119 du serveur. Le client n’aura alors qu’à configurer son lecteur Usenet de manière à accéder au serveur 127.0.0.1 sur le port 9119 et toutes les requêtes transiteront par le tunnel SSH. Bien sûr, il faudra recréer le tunnel à chaque connexion au serveur Leafnode.
Mise en œuvre et réglages
Maintenant que votre serveur est plus sûr et que vous avez procédé à la récupération de la liste des groupes, il ne vous reste plus qu’à vous connecter au serveur Leafnode avec un client Usenet. La connexion se fait exactement de la même manière qu’avec un serveur Usenet public. La seule différence provient du fait que votre FAI maintient la totalité des groupes à jour alors que cela ne vous est pas possible (du moins, pas raisonnablement). Ainsi lorsque, dans votre client Usenet, vous allez vous abonner pour la première fois à un groupe, le seul message que celui-ci contiendra sera un article du serveur Leafnode ayant pour sujet " Leafnode placeholder for group... ". Il s’agit d’un " article balise " qu’il vous faudra lire pour que Leafnode sache que ce groupe vous intéresse. Ainsi, lors de la prochaine synchronisation par Fetchnews, les articles les plus récents de ce groupe seront téléchargés depuis le serveur de votre FAI. Ce premier téléchargement d’articles apparaît clairement dans les informations affichées par la commandepovray.general: skipping articles 1-57659 inclusive (initial limit) povray.general: considering articles 57660 - 57959 povray.general: 51 articles fetched, 248 killedLa mention
initialfetch = 300C’est là l’un des rares paramètres à personnaliser en fonction de votre configuration. Voici, en guise d’exemple le contenu d’un fichier de configuration de Leafnode :
expire = 20 server = news.povray.org initialfetch = 300 server = news.wanadoo.fr initialfetch = 500 server = news.zoo-logique.org username = zoo password = entrer initialfetch = 300Comme vous pouvez le voir, la configuration n’est pas très lourde. Deux directives sont obligatoires :
Inscription et désinscription
Nous venons de le voir, c’est la consultation d’un article fictif initial qui provoquera la récupération en masse des articles d’un groupe. Au bout du nombre de jours spécifié par la directive expire, le programme Texpire supprimera du serveur les articles considérés comme obsolètes. Ce système permet de garder une masse contrôlable d’articles stockés sur notre serveur. Texpire est lancé en même temps que Fetchnews et, normalement, en moyenne, les articles expirants sont remplacés par les nouveaux. La désinscription à un groupe est un peu plus délicate. Vos clients Usenet et Leafnode communiquent via le protocole NNTP. Celui-ci n’inclut pas de fonctionnalité permettant au client de spécifier l’inscription et la désinscription aux groupes. Il ne s’agit que de téléchargement. C’est donc la consultation des groupes (et non des articles) qui permet de justifier le maintien du téléchargement par Fetchnews. Lorsque plus aucun client n’accède à un groupe au-delà d’un délai par défaut de 7 jours, celui-ci est considéré comme inintéressant et n’est plus synchronisé. On pourra changer cette valeur par défaut en renseignant la directiveConclusion
Avant de conclure, signalons que Leafnode ne sert pas seulement à récupérer le contenu des groupes, mais fait également l’interface pour l’envoi de vos articles. Ceux-ci, envoyés à Leafnode sont placés dans une file d’attente et sont expédiés lors de la synchronisation. Il reste beaucoup à dire sur ce système car la personnalisation permet d’obtenir une solution véritablement élégante. Il est ainsi possible d’archiver des articles pour les groupes que l’on aime ou encore de jouer sur quasiment tous les paramètres de synchronisation/récupération. Nous dirons que ceci vous est laissé en guise d’exercice afin de bien prendre en main le logiciel. Enfin, on notera que Leafnode n’est pas sous licence GNU GPL. Il s’agit, bien sûr d’un Logiciel libre mais les responsables n’aiment pas la philosophe de la FSF. La licence de Leafnode est ainsi beaucoup plus permissive que la GPL (absence de Copyleft) car, comme cela est dit dans la FAQ : " la liberté inclut aussi la liberté de ne pas être d’accord avec moi et de pouvoir, tout de même, utiliser mon logiciel ".Retrouvez cet article dans : Linux Magazine Hors série 21





Donnez votre avis
Vous devez avoir ouvert une session pour écrire un commentaire.