Size: 1577
Comment:
|
Size: 1884
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
'''Avahi''' is an implementation of '''Zeroconf''', the zero-configuration method for network services. This would otherwise be accomplished through local DNS resolution. | '''Avahi''' is an implementation of Zeroconf and mDNS. |
Line 5: | Line 5: |
Associated executables are tools including `avahi-browse` and `avahi-discover`. The primary functionality is a service, accessed in `systemd` as `avahi-daemon.service`. | The project began with Lennart Poettering's implementation of mDNS and DNS-SD. <<TableOfContents>> |
Line 11: | Line 13: |
== Accessing Local Services == | == Installation == |
Line 13: | Line 15: |
To make use of the "hostname.local" name resolution, an additional dependency (commonly named `nss-mdns`) is required. | Most Linux distributions offer an `avahi` package. For BSD distributions, try `avahi-daemon`. For `systemd`-capable systems, [[Linux/Systemd|start and enable]] `avahi-daemon.service`. The daemon binary is named `avahi-daemon(8)`. ---- == Configuration == [[Linux/SystemdNetworkd|networkd]] has a competing mDNS implementation that will need to be disabled before `avahi` can be made to work. Alternatively, [[Linux/Systemd|disable]] `systemd-resolved.service` entirely. === Name Resolution === For Avahi to insert domain name resolution for discovered services, an additional dependency (commonly named `nss-mdns`) is required. |
Line 21: | Line 43: |
More powerful configurations are of course possible, but this is the simplest and most minimal one. | === Firewalls === `avahi-daemon(8)` binds to port 5353. Firewalls such as [[UFW|ufw]] or [[Awall|awall]] must be reconfigured to open it. |
Line 27: | Line 53: |
== Installation == | == Usage == |
Line 29: | Line 55: |
---- | === Advertising Services === |
Line 31: | Line 57: |
== Advertising 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: |
`avahi-daemon(8)` 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: |
Line 51: | Line 73: |
=== Networking === | === Discovery === |
Line 53: | Line 75: |
Avahi broadcasts over port 5353. A common pitfall is failing to account for this in the firewall. See details in the articles for [[UFW|UFW]]. ---- == Inspecting Services == |
In a terminal, use `avahi-browse(1)`. |
Line 65: | Line 81: |
Alternatively there is the graphical client `avahi-discover(1)`. |
Avahi
Avahi is an implementation of Zeroconf and mDNS.
The project began with Lennart Poettering's implementation of mDNS and DNS-SD.
Contents
Installation
Most Linux distributions offer an avahi package. For BSD distributions, try avahi-daemon.
For systemd-capable systems, start and enable avahi-daemon.service.
The daemon binary is named avahi-daemon(8).
Configuration
networkd has a competing mDNS implementation that will need to be disabled before avahi can be made to work.
Alternatively, disable systemd-resolved.service entirely.
Name Resolution
For Avahi to insert domain name resolution for discovered services, 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
Firewalls
avahi-daemon(8) binds to port 5353. Firewalls such as ufw or awall must be reconfigured to open it.
Usage
Advertising Services
avahi-daemon(8) 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>
Discovery
In a terminal, use avahi-browse(1).
avahi-browse --all
Alternatively there is the graphical client avahi-discover(1).