Zeroconf

Zeroconf est un ensemble de protocoles servant à la configuration automatique d'un réseau privé. Cette technologie est appelée Bonjour (ou encore RendezVous) par Apple et est utilisée par macOS et iOS, ainsi que la plupart des machines réseau modernes (box Internet, imprimantes, NAS, etc.).

Avahi est une collection d'outils propres à Linux, permettant d'y implémenter les protocoles Zeroconf.

Zeroconf offre différentes fonctionnalités utiles au partage réseau :

  • Résolution de noms avec mDNS (multicast DNS) ;
  • Publication de service sur le réseau ;
  • Allocation d'adresses.

Traditionnellement, la plupart de ce travail est réalisé par DHCP (et DNS sur Internet). Cependant, Zeroconf est souvent plus pratique pour les réseaux privés, domestiques ou de petite entreprise. De plus, cela se fait sans aucune configuration (mise à part celle de l'installation d'Avahi).

Avahi s'intègre très bien avec les outils traditionnels. Par exemple, vous pouvez obtenir une adresse IP par DHCP et utiliser le service DNS pour résoudre les adresses sur Internet, tout en utilisant le hostname.local de mDNS pour résoudre les adresses des autres ordinateurs sur le LAN.
Cette solution est donc très pratique avec SMB !

Si vous souhaitez utiliser Zeroconf sur un réseau qui ne vous appartient pas, il est préférable de contacter au préalable l'administrateur réseau. Bien que Zeroconf soit un protocole performant, l'administrateur peut ne pas vouloir de ce trafic réseau additionnel. Soyez aussi vigilant, car il est aisé d'usurper un nom mDNS (.local).

Cette technologie peut actuellement être utilisée pour :

Avahi est installé et activé par défaut sur Ubuntu. Vous n'avez donc rien de particulier à faire pour en profiter.

Si ce n'est pas le cas, il suffit d'installer les paquets avahi-daemon avahi-autoipd.

Il se peut que la configuration du pare-feu bloque la communication mDNS par défaut. Dans le panneau de configuration du pare-feu, on pourra si nécessaire changer le niveau de confiance par défaut (réseau public) pour un niveau plus permissif (réseau domestique ou home).

mDNS

Chaque machine utilisant Zeroconf s'identifie elle-même sur le réseau comme hostname.local, où hostname est le nom d'hôte de la machine. Par exemple un ordinateur banane, s'identifie lui-même comme banane.local.

Si ceci ne fonctionne pas, désinstallez le paquet libdns22.1)

Dès lors, n'importe quel ordinateur peut utiliser hostname.local à la place d'une adresse IP. Par exemple vous pouvez utiliser ping

ping banane.local

ou SSH

ssh banane.local

Configuration du pare-feu

Si vous utilisez un pare-feu et que vous recevez une erreur telle que

sam@titania:~$ ping flute.local
ping: unknown host flute.local

alors il est probable que le pare-feu bloque les communications Zeroconf.
Un moyen simple de s'en assure est de désactiver temporairement le pare-feu et de réessayer.

Guarddog

Si vous utilisez le pare-feu Guarddog, vous aurez besoin de créer une nouvelle zone pour le trafic multicast et d'ajouter une entrée au fichier networkprotocoldb.xml.

Appeler cette nouvelle zone multicast et positionner les adresses de la zone ainsi 224.0.0.0/255.0.0.0. Ajouter le code XML ci-dessous dans /usr/share/apps/guarddog/networkprotocoldb.xml, juste au-dessus de l'endroit où il est écrit <protocol name="domain">. Relancer Guarddog et cocher les cases qui permettent le trafic mDNS entre vos zones.

<protocol name="mDns">
  <!-- Protocol information guessed by Greg N <emailgregn@googlemail.com> -->
  <longname>mDns,Bonjour,Avahi,Zeroconf</longname>
  <longname lang="nl">mDns</longname>
  <longname lang="fr">mDns</longname>
  <longname lang="it">mDns</longname>
  <longname lang="es">mDns</longname>
  <description>Protocols to allow networks to configure themselves. It is called Bonjour (formerly Rendezvous) by Apple, and used extensively on macOS.</description>
 
  <classification class="net"/>
  <network>
    <udp source="server" dest="client">
      <source><port portnum="nonprivileged"/></source>
      <dest><port portnum="5353"/></dest>
    </udp>
    <udp source="client" dest="server">
      <source><port portnum="5353"/></source>
      <dest><port portnum="nonprivileged"/></dest>
    </udp>
  </network>
  <security threat="medium" falsepos="low"/>
</protocol>

Sur Ubuntu, GNOME Fichiers est généralement le choix le plus simple pour visualiser et explorer les services exposés par Zeroconf : le panneau Réseau (le signet est en haut de la colonne de gauche – anciennement Autres emplacements) utilise certains de ces protocoles pour afficher les partages réseau et les noms des machines qui les proposent.

De la même manière certains lecteurs multimédia (audio et vidéo), par exemple, utilisent ces protocoles pour accéder à du contenu sur le réseau local. C'est généralement transparent pour l'utilisateur, qui n'a pas à se soucier du nom du protocole ou de sa mise en place.

Utilisation en ligne de commande

Depuis un terminal on peut procéder à un scan plus exhaustif grâce à la commande avahi-browse, fournie par le paquet avahi-utils :

avahi-browse -av

(Ctrl+C pour quitter).

Pour résoudre l'adresse IPv4 d'une hypothétique machine banane :

avahi-resolve -n4 banane.local

À l'inverse, pour connaître le nom mDNS d'une machine :

avahi-resolve -a IP.de.la.machine

en remplaçant IP.de.la.machine.

hostname-2.local

Parfois Avahi n'identifie pas correctement certaines machines et leurs ajoute un -2, qui donne hostname-2.local.

Pour retrouver un hostname correct sous la forme hostname.local, nous devons effectuer ces quelques manipulations :

On modifie le nom d'hôte de l'ordinateur :

sudo hostname HOSTNAME_CORRECT

Puis on redémarre le daemon :

sudo systemctl restart avahi-daemon

Pour finir on s'assure que tout fonctionne correctement :

ps -ef | grep -i avahi

Ressources externes

Pages en rapport


Contributeurs : les contributeurs du wiki, sbrunner, Xorios, kanor, Id2ndR, Ner0lph, krodelabestiole.


  • zeroconf.txt
  • Dernière modification: Le 12/01/2026, 19:27
  • par krodelabestiole