Avahi что это такое linux

Welcome to Avahi

Avahi is a system which facilitates service discovery on a local network via the mDNS/DNS-SD protocol suite. This enables you to plug your laptop or computer into a network and instantly be able to view other people who you can chat with, find printers to print to or find files being shared. Compatible technology is found in Apple MacOS X (branded «Bonjour» and sometimes «Zeroconf»).

Avahi is primarily targetted at Linux systems and ships by default in most distributions. It is not ported to Windows at this stage, but will run on many other BSD-like systems. The primary API is D-Bus and is required for usage of most of Avahi, however services can be published using an XML service definition placed in /etc/avahi/services.

See also the nss-mdns project, which allows hostname lookup of *.local hostnames via mDNS in all system programs using nsswitch

News

February 2020

* 2020-02-18: We have released Avahi 0.8! This release has a number of new features and a D-Bus/avahi-core API change related to racing signals with D-Bus object creation. For full details of all bug fixes, changes and new features check out the release page or docs/NEWS!

July 2017

* 2017-07-10: We have released Avahi 0.7! The main new feature of this release is the ability to encode binary (non-text) TXT records into XML service definitions (/etc/avahi/services). For full details of all bug fixes, changes and new features check the release page

February 2016

* 2016-02-16: We have released Avahi 0.6.32! This is a bugfix release with a couple of minor new configuration options or default changes. Full details and downloads at the link. Please file any issues or pull requests through github.com/lathiat/avahi

October 2015

* 2015-10-10: We have a release candidate, 0.6.32-rc! This is mostly a bugfix release, see the NEWS (Change Log). This is intended for release soon, please file any issues you notice through github.com/lathiat/avahi.

February 2012

April 2011

March 2011

* 2011-03-09: We have released Avahi 0.6.29! This is a bugfix release and fixes a minor security issue.

August 2010

July 2010

June 2010

* 2010-06-29: We have released Avahi 0.6.26! This is a bugfix release and fixes a minor security issue.

Источник

Avahi

Avahi is a free Zero-configuration networking (zeroconf) implementation, including a system for multicast DNS/DNS-SD service discovery. It allows programs to publish and discover services and hosts running on a local network with no specific configuration. For example you can plug into a network and instantly find printers to print to, files to look at and people to talk to. It is licensed under the GNU Lesser General Public License (LGPL).

Читайте также:  Precision time protocol linux

Installation

You can manage the Avahi daemon with avahi-daemon.service using systemd.

Note: systemd-resolved has a built-in mDNS service, make sure to disable systemd-resolved’s multicast DNS resolver/responder (refer to resolved.conf(5) ) or disable systemd-resolved.service entirely before using Avahi.

Using Avahi

Hostname resolution

Avahi provides local hostname resolution using a «hostname.local» naming scheme. To enable it, install the nss-mdns package and start/enable avahi-daemon.service .

Then, edit the file /etc/nsswitch.conf and change the hosts line to include mdns_minimal [NOTFOUND=return] before resolve and dns :

hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns
  • If you experience slowdowns in resolving .local hosts (or you do not want to use IPv6) try to use mdns4_minimal and mdns4 instead of mdns_minimal and mdns respectively.
  • The line above makes nss-mdns authoritative for the .local domain, unless your unicast DNS server responds to SOA queries for the top level local name, or if the request has more than two labels. See nss-mdns activation notes.
    • systemd-resolved responds to these queries even if its mDNS support is disabled. See #systemd-resolved prevents nss-mdns from working.
    • More info about nss configuration can be found on nss-mymachines(8) and in Avahi docs.

    Configuring mDNS for custom TLD

    The mdns_minimal module handles queries for the .local TLD only. Note the [NOTFOUND=return] , which specifies that if mdns_minimal cannot find *.local , it will not continue to search for it in dns , myhostname , etc.

    In case you want Avahi to support other TLDs, you should:

    • replace mdns_minimal [NOTFOUND=return] with the full mdns module. There also are IPv4-only and IPv6-only modules mdns[46](_minimal)
    • customize /etc/avahi/avahi-daemon.conf with the domain-name of your choice
    • whitelist Avahi custom TLDs in /etc/mdns.allow

    Tools

    Avahi includes several utilities which help you discover the services running on a network. For example, run

    $ avahi-browse --all --ignore-local --resolve --terminate

    to discover services in your network.

    The Avahi Zeroconf Browser ( avahi-discover – note that it needs Avahi’s optional dependencies gtk3 , dbus-python and python-gobject ) shows the various services on your network. You can also browse SSH and VNC Servers using bssh and bvnc respectively.

    Firewall

    Be sure to open UDP port 5353 if you are using a firewall.

    Avahi can be used for Bonjour protocol support under Linux. Check Wikipedia:Comparison of instant messaging clients or List of applications#Instant messaging clients for a list of clients supporting the Bonjour protocol.

    Obtaining IPv4LL IP address

    This article or section is a candidate for merging with dhcpcd.

    The dhcpcd client can attempt to obtain an IPv4LL address if it failed to get one via DHCP. By default this option is disabled. To enable it, comment noipv4ll string:

    Alternatively, run avahi-autoipd :

    Adding services

    Avahi advertises the services whose *.service files are found in /etc/avahi/services . Files in this directory must be readable by the avahi user/group.

    If you want to advertise a service for which there is no *.service file, it is very easy to create your own. As an example, let us say you wanted to advertise a quote of the day (QOTD) service operating per RFC:865 on TCP port 17 which you are running on your machine

    The first thing to do is to determine the . avahi.service(5) indicates that the type should be «the DNS-SD service type for this service. e.g. ‘_http._tcp'». Since the DNS-SD register was merged into the IANA register in 2010, we look for the service name on the IANA register or in /etc/services file. The service name shown there is qotd . Since we are running QOTD on tcp, we now know the service is _qotd._tcp and the port (per IANA and RFC 865) is 17 .

    For more complicated scenarios, such as advertising services running on a different server, DNS sub-types and so on, consult avahi.service(5) .

    Keep in mind that Avahi does not support arbitrary strings in the field, you can only set values known in service database of Avahi. If you want to register something custom you will likely have to edit the database definition, build an updated version and distribute it to your hosts.

    SSH

    Avahi comes with an example service file to advertise an SSH server. To enable it:

    # cp /usr/share/doc/avahi/ssh.service /etc/avahi/services/

    File sharing

    NFS

    If you have an NFS share set up, you can use Avahi to be able to automount them in Zeroconf-enabled browsers (such as Konqueror on KDE and Finder on macOS) or file managers such as GNOME/Files.

    Create a .service file in /etc/avahi/services with the following contents:

    /etc/avahi/services/nfs_Zephyrus_Music.service
       NFS Music Share on %h _nfs._tcp 2049 path=/data/shared/Music   

    The port is correct if you have insecure as an option in your /etc/exports ; otherwise, it needs to be changed (note that insecure is needed for macOS clients). The path is the path to your export, or a subdirectory of it. For some reason the automount functionality has been removed from Leopard, however a script is available. This was based upon this post.

    Samba

    With the Avahi daemon running on both the server and client, the file manager on the client should automatically find the server.

    Vsftpd

    You can also auto-discover regular FTP servers, such as vsftpd. Install the vsftpd package and change the settings of vsftpd according to your own personal preferences (see this thread on ubuntuforums.org or vsftpd.conf(5) ).

    Create a .service file in /etc/avahi/services with the following contents:

    /etc/avahi/services/ftp.service
       FTP file sharing _ftp._tcp 21   

    The FTP server should now be advertised by Avahi. You should now be able to find the FTP server from a file manager on another computer in your network. You might need to enable #Hostname resolution on the client.

    Troubleshooting

    Hostname changes with appending incrementing numbers

    This is a known bug that is caused by a hostname race condition. One possible workaround is disabling IPv6 to attempt to prevent the race condition. If multiple interfaces are present use allow-interfaces to limit Avahi to a single interface. Another possible workaround is to disable the cache to prevent Avahi from checking for host name conflicts altogether, but this prevents Avahi from performing lookups.

    systemd-resolved prevents nss-mdns from working

    nss-mdns only works if the DNS server listed in /etc/resolv.conf returns NXDOMAIN to SOA queries for the «local» domain.[1]

    Check if your configured DNS server answers the SOA query for the «local» domain with NXDOMAIN first. For example:

    If the DNS server responds with NXDOMAIN , you do not need to follow the steps below. Avahi should be able to find resources in the network normally, even if using systemd-resolved.

    In older versions of systemd-resolved the global setting for MulticastDNS=no in resolved.conf(5) lead to Avahi-incompatible response codes for the «local» domain. This resulted in Avahi not finding resources (printers) correctly. See systemd issue 21659 for reference.

    However, if the DNS query above fails to return NXDOMAIN for the «local» domain, you can use the full mdns NSS module instead of mdns_minimal and create /etc/mdns.allow to allow only the «local» domain. For example:

    hosts: mymachines mdns [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns

    Note: The above solution will break reverse lookups in networking utilities such as mtr and traceroute . These applications will attempt to do a reverse lookup via Avahi and time out instead of falling back to other DNS services. This seems similar to Debian issue 433943 where the recommendation is, unfortunately, to use mdns_minimal instead of mdns .

    ECONNREFUSED (Connection refused) on avahi socket

    If your Avahi instance starts and operates correctly, but nss does not seem to forward requests to mdns, this may be caused by stuck socket /run/avahi-daemon/socket . This can be verified e.g. with strace. In this case you may have to restart both avahi-daemon.service and avahi-daemon.socket to make it work correctly.

    See also

    Источник

    Avahi-daemon

    Avahi-daemon это система обеспечивающая обнаружение сервисов в локальной сети.
    Это означает, что после подключения компьютера к локальной сети, мгновенно становятся доступными сетевые принтеры, появляется возможность увидеть, какие разделяемые ресурсы имеются в сети и так далее. Avahi является реализацией протокола Zeroconf, который позволяет пользователям создавать IP-сети без специальных конфигурационных служб типа DNS-серверов.

    Установка

    Обычно в современных дистрибутивах Avahi-daemon устанавливается автоматически. Если этого не произошло то
    Пакет присутствует в хранилище пакетов debian.
    Для установки пакета

    • в командной строке: следует выполнить команду # apt-get install avahi-daemon
    • в графическом режиме: воспользоваться специализированной программой управления пакетами

    После установки пакет готов к использованию.

    Некоторые часто используемые команды

    # service avahi-daemon restart - перезапуск демона

    Настройка

    Файлы конфигурации Avahi-daemon находятся в каталоге /etc/avahi/.

    Для установки имени хоста, с которым avahi-daemon пытается зарегистрироваться в сети

    Для ограничения работы avahi-daemon только на одном сетевом устройстве

    [server] allow-interfaces=eth0 deny-interfaces=eth1

    Отказ от сервиса

    В некоторых случаях, например на рабочей станции с установленным DNS-сервером Bind, возможно правильнее будет отказаться от использования Avahi-daemon.

    # aptitude purge avahi-daemon
    # /etc/init.d/avahi-daemon stop # update-rc.d -f avahi-daemon remove # mv /etc/default/avahi-daemon /etc/default/avahi-daemon.bak # echo ‘AVAHI_DAEMON_DETECT_LOCAL=0′ > /etc/default/avahi-daemon

    Литература

    Справочная информация

    • 05.12.2011: Avahi-daemon: создание статьи о системе обнаружения сервисов в локальной сети

    Источник

Оцените статью
Adblock
detector