Avahi
Avahi is an implementation of Zeroconf, the zero-configuration method for network services. This would otherwise be accomplished through local DNS resolution.
Associated executables are tools including avahi-browse and avahi-discover. The primary functionality is a service, accessed in systemd as avahi-daemon.service.
Accessing Local Services
To make use of the "hostname.local" name resolution, an additional dependency (commonly named nss-mdns) is required.
Insert mdns_minimal [NOTFOUND=return] into /etc/nsswitch.conf, as below.
hosts: files mymachines myhostname mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns
More powerful configurations are of course possible, but this is the simplest and most minimal one.
You should be able to discover local services now. Try:
avahi-browse --all
Hosting Services
Avahi uses all /etc/avahi/services/*.service files that are readable by the avahi user and group. These take the form of structured XML. For example, an FTP service:
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name>FTP</name>
<service>
<type>_ftp._tcp</type>
<port>21</port>
</service>
</service-group>Also, Avahi broadcasts over port 5353. See details in the article for UFW setup.
