{{tag>réseau Partage}}
====== Zeroconf ======
**[[wpfr>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.).
**[[wpfr>Avahi_(logiciel)|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 [[wpfr>DHCP]] (et [[wpfr>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 :
* Partager de la musique : [[:Rhythmbox]], iTunes, [[:mt-daapd]]
* Échanger des fichiers : **(//en//)** [[https://linux.softpedia.com/get/Desktop-Environment/Tools/gnome-user-share-11597.shtml|gnome-user-share]]
* Découvrir automatiquement les autres clients VoIP : [[:Ekiga#avahi|Ekiga]]
* Discuter par messagerie instantanée sur le réseau local : [[:gajim]], [[:pidgin]], [[:empathy]]
* Partager des [[:paquet|paquets]] : [[:quid-deb-proxy]]
* [[:tutoriel:installer_imprimante_partage|Partager des imprimantes]]
* Publier les sites web servis avec [[:Apache2]] : [[:tutoriel:comment_installer_un_paquet|installer le paquet]] ''[[apt>libapache2-mod-dnssd]]'' puis activer le module Apache avec la commande ''[[:apache2#fichiers_de_configuration|a2enmod dnssd]]''
* Publier un serveur [[:SSH]] (voir discussion sur le [[https://forum.ubuntu-fr.org/viewtopic.php?id=206906|forum]])
===== Installation =====
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'[[:tutoriel:comment_installer_un_paquet|installer les paquets]] [[apt>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//).
===== Utilisation =====
==== 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, [[:desinstaller_une_application#methodes_standardspour_deb_snap_et_flatpak|désinstallez le paquet]] ''libdns22''.(([[https://bugs.launchpad.net/ubuntu/+source/bind9/+bug/147731|bug #147731]]))
Dès lors, n'importe quel ordinateur peut utiliser ''//hostname//.local'' à la place d'une adresse IP. Par exemple vous pouvez utiliser ''[[man>ping]]''
ping banane.local
ou [[:SSH]]
ssh banane.local
==== Découvrir les services ====
Sur Ubuntu, **[[:nautilus|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 [[:nautilus#les_signets|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]] ([[:lecteur_audio|audio]] et [[:lecteur vidéo|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]] ''[[apt>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''.
===== Problèmes connus =====
==== 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
==== Aucun trafic Zeroconf ====
La commande
avahi-browse -a
ne retourne rien par exemple.
Le problème peut venir du [[:pare-feu]], qui bloque ce trafic.
=== Firewalld ===
Pour l'autoriser, avec **[[wp>Firewalld]]** :
sudo firewall-cmd --add-service=mdns --permanent
sudo firewall-cmd --reload
sudo systemctl restart avahi-daemon
=== Guarddog ===
Si vous utilisez le pare-feu **[[wpfr>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 ''''. Relancer **Guarddog** et cocher les cases qui permettent le trafic [[#mDNS]] entre vos zones.
mDns,Bonjour,Avahi,ZeroconfmDnsmDnsmDnsmDnsProtocols to allow networks to configure themselves. It is called Bonjour (formerly Rendezvous) by Apple, and used extensively on macOS.
===== Voir aussi =====
==== Ressources externes ====
* **(//en//)** [[http://www.zeroconf.org/|Site officiel]]
* **(//en//)** [[http://0pointer.de/lennart/projects/nss-mdns/|libnss-mdns]]
* **(//en//)** [[http://avahi.org/|Avahi mdns responder]]
==== Pages en rapport ====
{{backlinks>.#!utilisateurs:}}
----
//Contributeurs : [[:contributeurs|les contributeurs du wiki]], [[:utilisateurs:sbrunner]], Xorios, kanor, [[:utilisateurs:Id2ndR]], [[:utilisateurs:Ner0lph]], [[:utilisateurs:krodelabestiole]].//