6845
Comment: Added a wiki note and some text to Hostname Resolution.
|
6846
typos
|
Deletions are marked like this. | Additions are marked like this. |
Line 81: | Line 81: |
`avahi-resolve` obtains an IP address or hostname directly from the mDNS multcats from hosts. It does not use the NSS functionality of libnss-mdns. | `avahi-resolve` obtains an IP address or hostname directly from the mDNS multicast from hosts. It does not use the NSS functionality of libnss-mdns. |
Line 155: | Line 155: |
<<Anchor(disbale)>> | <<Anchor(disable)>> |
Line 195: | Line 195: |
* A scanning service is generally observed to be published by a modern [[PrintingGlossaryandIndex#mfd|MFD]] scanning device and shown on discovery as having a [[#browse|service type]] of ''_uscan._tcp''. DebianPkg:libsane1 and DebianPkg:sane-airscan provisde backends for scanner discovery via avahi-daemon and the [[SaneOverNetwork#escl|escl]] protocol. | * A scanning service is generally observed to be published by a modern [[PrintingGlossaryandIndex#mfd|MFD]] scanning device and shown on discovery as having a [[#browse|service type]] of ''_uscan._tcp''. DebianPkg:libsane1 and DebianPkg:sane-airscan provides backends for scanner discovery via avahi-daemon and the [[SaneOverNetwork#escl|escl]] protocol. |
Translation(s): none
An account of the Avahi (zeroconf, Apple Bonjour) framework provided by Debian. Based on the packages distributed with Debian 10 (buster) and Debian 11 (bullseye).
Contents
Introduction
Avahi technology is dependent on the mDNS and DNS-SD protocols and allows machines to
- publish services and hosts running on a local network, and
- discover services and hosts running on a local network.
The local network is assumed to be trusted. A firewall should should permit multicast traffic on port 5353. Installation of Avahi is straightforward and generally maintenance-free afterwards.
apt install avahi-daemon
Machines that have cups installed will already have avahi-daemon as a recommended package.
Avahi Utilities
Basically, avahi-daemon will quietly get on with its job of publishing and discovering network services and hosts and most users will require little more from it apart from hostname resolution.
However, it is sometimes desirable to interact directly with avahi-daemon and, for that purpose, avahi-utils is available. The utilities are
Other packages (GUI) of interest are
Hostname Resolution
Hostname resolution via the system's Name Server Switch (NSS) facility is performed by libnss-mdns, which is recommended by avahi-daemon. Otherwise do
apt install libnss-mdns
As explained in /usr/share/doc/libnss-mdns/README.Debian, the package's post-installation script alters a line in /etc/nsswitch.conf to read
hosts: files mdns4_minimal [NOTFOUND=return] dns
The mDNS domain .local is where hosts on the network reside and mdns4_minimal handles queries only for that domain. Hostname resolution takes place automatically with commands such as
ping <hostname>.local ssh <hostname>.local nmap <hostname>.local
To resolve a hostname to an IPv4 address with avahi-resolve:
avahi-resolve -n -4 <hostname>.local
The reverse process is performed with
avahi-resolve -a 192.168.7.235
avahi-resolve obtains an IP address or hostname directly from the mDNS multicast from hosts. It does not use the NSS functionality of libnss-mdns.
Using avahi-browse
For a complete view of services and hosts on the network:
avahi-browse -art | less
An entry from the output of one such command will be used to illustrate the common features of any entry.
= eth0 IPv4 Music Player @ desktop Music Player Daemon local hostname = [desktop.local] address = [192.168.7.20] port = [6600] txt = []
Music Player Daemon is the friendly service name. The service is running on port 6600 of the machine desktop.local with an IPv4 address 192.168.7.20. The text record (txt =) in this case is empty. If a service name is not available it will be replaced by the service type. All this information is published and will be available to a client wishing to access the service.
A list of all the service names known to avahi-daemon is given by
avahi-browse --dump-db
Executing
avahi-browse --dump-db -k
gives a list of matching service types, application protocol names. The service type _mpd._tcp matches the human-readable Music Player Daemon. This service can specifically be browsed for with
avahi-browse -rt _mpd._tcp
Or, in general:
avahi-browse -rt <service-type>
Display service types of services discovered on the network:
avahi-browse -kat
Debian Package Integration with Avahi
Some indication of the Debian packages that support service publication and discovery may be gleaned from libavahi-client3:
apt rdepends libavahi-client3
An incomplete list of packages that co-operate with avahi-daemon to give service publication and discovery is:
Disabling avahi-daemon
With root privileges and for temporary disablement:
systemctl disable avahi-daemon.service avahi-daemon.socket systemctl stop avahi-daemon.service avahi-daemon.socket
Reverse this state of affairs:
systemctl enable avahi-daemon.service avahi-daemon.socket systemctl start avahi-daemon.service avahi-daemon.socket
For permenant disablement (surviving a machine reboot):
systemctl mask avahi-daemon.service avahi-daemon.socket systemctl disable avahi-daemon.service avahi-daemon.socket systemctl stop avahi-daemon.service avahi-daemon.socket
Registering a New Service in Avahi
avahi-daemon will publish local services set up according to .service files placed in the directory /etc/avahi/services. This is independent of the services published from what the system is already aware of on the network.
An example is ssh. openssh-server does not advertise via mDNS but can be induced to by the .service file provided in /usr/share/doc/avahi-daemon/examples/.
Printing and Scanning Services
The Debian 11 printing and scanning systems support discovery of printing and scanning services on the network and over USB.
Printing services are published by a CUPS server and any moderd printer on the network. They are shown on discovery as having a service type of _ipp._tcp.
A scanning service is generally observed to be published by a modern MFD scanning device and shown on discovery as having a service type of _uscan._tcp. libsane1 and sane-airscan provides backends for scanner discovery via avahi-daemon and the escl protocol.