15/07/2010

Zeroconf : Réseaux IP sans configuration

Zeroconf est un ensemble de protocoles permettant de créer des réseaux IP et y fournir plusieurs services sans aucune configuration. Zeroconf permet entre autres de :

  • Allouer automatiquement des IP, sans configurer un serveur DHCP
  • Résoudre des noms de domaines locaux, sans configurer de serveur DNS
  • Annoncer et découvrir des services, sans serveur d’annuaire

Aventurons-nous donc un peu dans le monde du « zOMG ça marche tout seul ! »

Les protocoles dits “Zeroconf”

Zeroconf n’est qu’une appellation générique de différents protocoles. Sa première implémentation est imputable à Apple, qui l’appela Rendezvous puis Bonjour. Ensuite Microsoft a plus ou moins imposé son équivalent, l’UPnP.

Sous Linux nous profitons d’une implémentation des protocoles d’Apple, sous le nom de Avahi. Contrairement aux protocoles Microsoft, ceux de Bonjour et Avahi sont promulgués par l’IETF, l’organisme établissant les standards de l’Internet. Ils ne sont toutefois pas encore admis en tant que standards, la plupart n’étant décrits que dans des RFC informels.

Installation

Avahi apparait généralement dans les gestionnaires de paquets comme une multitude de paquets. Bien que déjà présente dans Ubuntu, on peut ajouter quelques packages utiles :

sudo apt-get install avahi-daemon avahi-discover avahi-utils avahi-ui-utils avahi-dnsconfd libnss-mdns service-discovery-applet mdns-scan

Sous Gentoo, c’est un peu plus délicat : il faut d’abord ajouter les USE flags avahi et zeroconf à votre /etc/make.conf, recompiler les packages nécessaire et installer net-dns/avahi ainsi que net-misc/mDNSResponder.

IPv4LL : Création d’un réseau IP sans DHCP

IPv4LL, pour Local-Link, fait partie de Zeroconf mais est la partie moins poétique, souvent à l’origine d’erreurs de configurations IP… Elle consiste en fait en une norme RFC proposant l’allocation dynamique des adresses IP de 169.254.0.0 à 169.254.254.254 (fe80::/16 en IPv6) sur les réseaux ne possédant pas de serveur DHCP. Il y a évidemment un test évitant que deux ordinateurs prennent la même IP.

Ce n’est pas très propre et ces IP sont haïes de pas mal d’administrateurs. Remarquons toutefois que les dernières versions de NetworkManager implémentent un mode “Partagé avec d’autres ordinateurs” lors de la création d’un réseau Ad-Hoc, ce qui crée un vrai serveur DHCP.

Résolution de noms locale

Si Avahi est correctement installé, vous pouvez commencer à résoudre des noms automatiquement. Chaque machine s’attibue un nom de domaine sous la forme HOSTNAME.local. Par exemple, ma machine s’appelant epsilon :

tito@epsilon:~$ ping epsilon.local
PING epsilon.local (10.0.73.18) 56(84) bytes of data.

epsilon.local a bien été résolu par Avahi !

Cette magie est amenée par Multicast DNS, ou mDNS : chaque machine membre du réseau Zeroconf maintient en fait un petit serveur avec ses propres enregistrements DNS. Lorsqu’un membre du réseau fait une requête (multicast vers 224.0.0.251 ou ff02::fb, port UDP 5353), la machine se reconnaissant répond.

Découverte de services

Tous les serveurs supportant Zeroconf peuvent annoncer qu’ils fournissent un service. On pourra ainsi détecter automatiquement des partages de fichiers, des serveurs VNC, des serveurs SSH et bien d’autres.

Ce système est lui aussi basé sur un serveur mDNS, sous forme d’enregistrements de type SRV, TXT et PTR.

Pour lister les services disponibles sur le réseau Zeroconf il existe plusieurs outils, je citerai juste avahi-discover qui est simple et complet.

Quelques applications bien cools de Zeroconf

XMPP décentralisé

Intégrée dans quelques clients Jabber, dont Pidgin (libpurple) entre autres, la norme XMPP XEP-0174 définit les communications XMPP sans serveur. Dans Pidgin, une fois le protocole Bonjour activé, vous verrez de nouveaux contacts apparaître comme par magie dès qu’ils se connectent !

C’est très pratique pour discuter sans aucune configuration avec ses collègues, sa famille ou même des inconnus sur un réseau Ad-Hoc dans un train ^_^

PulseAudio

Malheureusement PulseAudio n’a pas de bonne interface pour le présenter, mais exploite très bien ZeroConf en détectant facilement les autres serveurs PulseAudio. Il m’arrive souvent de streamer l’audio de mon laptop vers mon desktop afin de profiter d’une meilleure qualité sonore. Tout ça bien entendu sans configuration ni reconfiguration en cas de changements sur mon réseau.

Over VPN

Si vous êtes connecté sur un VPN (au sens propre du terme, pas un VPN de tunneling tel qu’IPredator) Zeroconf y passera normalement sans accroc ! Après tout, un VPN c’est aussi un réseau local.

Couplé au XMPP décentralisé, c’est un super moyen de discuter avec ses collègues facilement, ainsi que toutes les autres applications auxquelles vous pouvez penser.

En savoir plus…

  • ZeroConf.org
  • MultiCast DNS
  • « Zero Configuration Networking: The Definitive Guide » de Daniel H Steinberg et Stuart Cheshire, O’Reilly, Décembre 2005.