Avahi (Français)

État de la traduction:
Cet article est la version francophone de
Avahi
. Date de la dernière traduction: 2022-10-03. Vous pouvez aider à synchroniser la traduction s'il y a eu des
changements
dans la version anglaise.
Selon
Wikipedia
:
Avahi
est une mise en œuvre des protocoles
Zeroconf
(connexion au réseau avec zéro configuration) permettant ainsi à des logiciels de publier et de découvrir des services et des hôtes en cours d'exécution sur un réseau local TCP/IP sans configuration particulière. Par exemple, un utilisateur peut brancher son ordinateur sur un réseau et trouver instantanément des imprimantes pour imprimer, des fichiers à lire et des personnes à qui parler. Avahi est publié sous la licence publique générale limitée GNU (LGPL).
Installation
Installez
le paquet
avahi
.
Vous pouvez gérer le daemon Avahi avec
avahi-daemon.service
en utilisant systemd
.
Note
systemd-resolved
possède un service mDNS intégré, assurez-vous de désactiver le résolveur/répondeur DNS multicast de systemd-resolved (reportez-vous à
resolved.conf(5)
) ou
désactivez
systemd-resolved.service
entièrement avant d'utiliser Avahi.
Utilisation d'Avahi
Résolution des noms d'hôtes
Avahi fournit la résolution des noms d'hôtes locaux en utilisant un schéma de nommage "
hostname
.local". Pour l'activer, installez le paquet
nss-mdns
et
démarrez
et/ou
activez
avahi-daemon.service
.
Ensuite, éditez le fichier
/etc/nsswitch.conf
et modifiez la ligne
hosts
pour inclure
mdns_minimal [NOTFOUND=return]
avant
resolve
et
dns
:
hosts : mymachines
mdns_minimal [NOTFOUND=return]
resolve [!UNAVAIL=return] files myhostname dns
Note
Si vous rencontrez des ralentissements dans la résolution des hôtes
.local
(ou que vous ne souhaitez pas utiliser IPv6), essayez d'utiliser
mdns4_minimal
et
mdns4
au lieu de
mdns_minimal
et
mdns
respectivement.
La ligne ci-dessus rend
nss-mdns
autoritaire pour le domaine
.local
, à moins que votre serveur DNS unicast ne réponde à des requêtes
SOA
pour le nom
local
de premier niveau, ou si la requête comporte plus de deux labels. Consultez les
notes d'activation
de
nss-mdns
.
systemd-resolved
répond à ces requêtes même si son support mDNS est désactivé. Consultez
#systemd-resolved empêche nss-mdns de fonctionner
.
Plus d'informations sur la configuration de nss peuvent être trouvées sur
nss-mymachines(8)
et dans la
documentation d'Avahi
.
Configuration du mDNS pour un TLD personnalisé
Le module
mdns_minimal
gère uniquement les requêtes pour le TLD
.local
. TLD uniquement. Notez le
[NOTFOUND=return]
, qui spécifie que si
mdns_minimal
ne trouve pas
*.local
, il ne continuera pas à le chercher dans
dns
,
myhostname
, etc.
Si vous voulez qu'Avahi prenne en charge d'autres TLDs, vous devez :
remplacer
mdns_minimal [NOTFOUND=return]
par le module
mdns
complet. Il existe également des modules IPv4 seulement et IPv6 seulement
mdns[46](_minimal)
Personnalisez
/etc/avahi/avahi-daemon.conf
avec le
domain-name
de votre choix.
Liste blanche des TLD personnalisés d'Avahi dans
/etc/mdns.allow
.
Outils
Avahi comprend plusieurs utilitaires qui vous aident à découvrir les services fonctionnant sur un réseau. Par exemple, exécutez
$ avahi-browse --all --ignore-local --resolve --terminate
pour découvrir les services de votre réseau.
Le navigateur Zeroconf d'Avahi (
avahi-discover
) - notez qu'il nécessite les dépendances facultatives d'Avahi
gtk3
,
python-dbus
et
python-gobject
) affiche les différents services de votre réseau. Vous pouvez également parcourir les serveurs SSH et VNC en utilisant respectivement
bssh
et
bvnc
.
Pare-feu
Assurez-vous d'ouvrir le port UDP
5353
si vous utilisez un
pare-feu
.
Chat local (Bonjour/Zeroconf)
Avahi peut être utilisé pour prendre en charge le protocole Bonjour sous Linux. Consultez
Wikipedia:Comparison of cross-platform instant messaging clients
ou
List of applications/Internet#Instant messaging clients
pour obtenir une liste des clients prenant en charge le protocole Bonjour.
Obtention de l'adresse IPv4LL
Par défaut, si vous obtenez une IP en utilisant DHCP, vous utilisez le paquet
dhcpcd
. Il peut tenter d'obtenir une adresse IPv4LL s'il n'a pas réussi à en obtenir une via DHCP. Par défaut, cette option est désactivée. Pour l'activer, commentez la chaîne noipv4ll :
/etc/dhcpcd.conf
].
...
#noipv4ll
...
Alternativement, exécutez
avahi-autoipd
:
# avahi-autoipd -D
Ajout de services
Avahi annonce les services dont les fichiers
*.service
se trouvent dans
/etc/avahi/services
. Les fichiers de ce répertoire doivent être lisibles par l'utilisateur/groupe
avahi
.
Si vous voulez faire la publicité d'un service pour lequel il n'existe pas de fichier
*.service
, il est très facile de créer le vôtre.
Par exemple, disons que vous voulez faire la publicité d'un service de citation du jour (QOTD) fonctionnant selon la
RFC:865
sur le port TCP
17
que vous exécutez sur votre machine.
La première chose à faire est de déterminer le
<type>
.
avahi.service(5)
indique que le type doit être "le type de service DNS-SD pour ce service, par exemple '_http._tcp'". Comme le
registre DNS-SD a été fusionné dans le registre IANA en 2010
, nous recherchons le nom du service sur le
registre IANA
ou dans le fichier
/etc/services
. Le nom du service qui y figure est
qotd
. Puisque nous exécutons QOTD sur tcp, nous savons maintenant que le service est
_qotd._tcp
et que le port (selon l'IANA et la RFC 865) est
17
.
Notre fichier de service est donc :
qotd.service
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>

  <name replace-wildcards="yes">%h</name>

  <service>
    <type>_qotd._tcp</type>
    <port>17</port>
  </service>

</service-group>
Pour des scénarios plus compliqués, tels que les services de publicité fonctionnant sur un serveur différent, les sous-types DNS et ainsi de suite, consultez
avahi.service(5)
.
Gardez à l'esprit qu'Avahi ne prends pas en charge les chaînes arbitraires dans le champ <type>, vous ne pouvez définir que des valeurs connues dans la
base de données des services d'Avahi
. Si vous voulez enregistrer une valeur personnalisée, vous devrez probablement modifier la définition de la base de données, construire une version mise à jour et la distribuer à vos hôtes.
SSH
Avahi est livré avec un exemple de fichier de service pour annoncer un serveur SSH. Pour l'activer :
# cp /usr/share/doc/avahi/ssh.service /etc/avahi/services/
Partage de fichiers
NFS
Si vous avez configuré un partage
NFS
, vous pouvez utiliser Avahi pour pouvoir les monter automatiquement dans les navigateurs compatibles avec Zeroconf (comme Konqueror sur KDE et Finder sur macOS) ou les gestionnaires de fichiers comme
GNOME/Files
.
Créez un fichier
.service
dans
/etc/avahi/services
avec le contenu suivant :
/etc/avahi/services/nfs_Zephyrus_Music.service
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">NFS Music Share on %h</name>
  <service>
    <type>_nfs._tcp</type>
    <port>2049</port>
    <txt-record>path=/data/shared/Music</txt-record>
  </service>
</service-group>
Le port est correct si vous avez
insecure
comme option dans votre
/etc/exports
; sinon, il doit être modifié (notez que
insecure
est nécessaire pour les clients macOS). Le chemin est le chemin de votre exportation, ou un sous-répertoire de celui-ci. Pour une raison quelconque, la fonctionnalité de montage automatique a été supprimée dans Leopard, mais
un script est disponible
. Ceci était basé sur
ce post
.
Samba
Si le daemon Avahi est exécuté à la fois sur le serveur et le client, le gestionnaire de fichiers du client devrait trouver automatiquement le serveur.
Vsftpd
Vous pouvez également détecter automatiquement les serveurs FTP ordinaires, tels que
vsftpd
. Installez le paquet
vsftpd
et modifiez les paramètres de vsftpd en fonction de vos préférences personnelles (consultez
cette discussion sur ubuntuforums.org
ou
vsftpd.conf(5)
).
Créez un fichier
.service
dans
/etc/avahi/services
avec le contenu suivant :
/etc/avahi/services/ftp.service
.
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name>Partage de fichiers FTP</name>
  <service>
    <type>_ftp._tcp</type>
    <port>21</port>
  </service>
</service-group>
Le serveur FTP devrait maintenant être annoncé par Avahi. Vous devriez maintenant être en mesure de trouver le serveur FTP à partir d'un gestionnaire de fichiers sur un autre ordinateur de votre réseau. Vous devrez peut-être activer la
#Résolution des noms d'hôtes
sur le client.
Dépannage
Changements de nom d'hôte avec ajout de nombres incrémentaux
Il s'agit d'un
bug connu
qui est causé par une condition de concurrence de nom d'hôte. Une solution possible est de
désactiver IPv6
pour essayer d'empêcher la condition de concurrence. Si plusieurs interfaces sont présentes,
utiliser allow-interfaces
pour limiter Avahi à une seule interface. Une autre solution possible est de
désactiver le cache
pour empêcher Avahi de vérifier les conflits de noms d'hôtes, mais cela empêche Avahi d'effectuer des recherches.
systemd-resolved empêche nss-mdns de fonctionner
nss-mdns
ne fonctionne que si le serveur DNS listé dans
/etc/resolv.conf
renvoie NXDOMAIN aux requêtes SOA pour le domaine "local".
[1]
Vérifiez si votre serveur DNS configuré répond d'abord à la requête SOA pour le domaine "local" avec
NXDOMAIN
. Par exemple :
$ host -t SOA local
Si le serveur DNS répond avec
NXDOMAIN
, vous n'avez pas besoin de suivre les étapes ci-dessous. 
Avahi devrait être capable de trouver des ressources sur le réseau normalement, même en utilisant
systemd-resolved
.
Dans les anciennes versions de
systemd-resolved
, le paramètre global pour
MulticastDNS=no
dans
resolved.conf(5)
entraînait des codes de réponse incompatibles avec Avahi pour le domaine "local". Il en résultait qu'Avahi ne trouvait pas correctement les ressources (imprimantes). Voir le problème
n°21659 de systemd
pour référence.
Toutefois, si la requête DNS ci-dessus ne renvoie pas
NXDOMAIN
pour le domaine "local", vous pouvez utiliser le module NSS
mdns
complet au lieu de
mdns
. NSS complet au lieu de
mdns_minimal
et créer
/etc/mdns.allow
pour autoriser uniquement le domaine "local". Par exemple :
/etc/nsswitch.conf
hosts : mymachines
mdns [NOTFOUND=return]
resolve [!UNAVAIL=return] files myhostname dns
/etc/mdns.allow
.local.
.local
Note
La solution ci-dessus bloque les recherches inversées dans les utilitaires réseau tels que
mtr
et
traceroute
. Ces applications tenteront d'effectuer une recherche inverse via Avahi et s'arrêteront au lieu de se rabattre sur d'autres services DNS. Cela semble similaire au
bug 433943 de Debian
où la recommandation est, malheureusement, d'utiliser
mdns_minimal
au lieu de
mdns
.
ECONNREFUSED (Connexion refusée) sur la socket avahi
Si votre instance d'Avahi démarre et fonctionne correctement, mais que nss ne semble pas transmettre les requêtes à mdns, cela peut être dû à un socket bloqué
/run/avahi-daemon/socket
. Ceci peut être vérifié, par exemple, avec strace. Dans ce cas,
redémarrez
à la fois
avahi-daemon.service
et
avahi-daemon.socket
pour que cela fonctionne correctement.
Voir aussi
Avahi
- Site officiel du projet
Wikipedia:fr:Avahi (logiciel)
iTunes (inclus Bonjour)
- Configurer Zeroconf pour Windows
http://www.zeroconf.org/