Avahi Notes

From Noah.org
Revision as of 20:22, 23 October 2012 by Root (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Monitor Zeroconf advertisements:

avahi-browse --all --resolve

To look for just SSH services use the following command. Note the rather cryptic type name that you must use. You may also find it useful to add the --resolve option.

avahi-browse _ssh._tcp
avahi-browse --resolve _ssh._tcp

The --dump-db option is almost totally useless since it lists the human readable names of the service types, but it does not give you the actual name that you need to use to browse that service. For example, --dump-db will list SSH Remote Terminal as one of the service types, but to actually browse for that service you need to use the type name of _ssh._tcp, which is a name I will never remember. You can't use --dump-db to remind yourself of this.

GUI browser

The avahi-discover package has a simple GUI browser. This is the equivalent of the command-line tool avahi-browse.


If you want to temporarily publish or annouce a service you can use the avahi-publish.

The following example shows how to publish that a VNC server is available for a KVM guest on port 5900.

avahi-publish -s "KVM guest VNC for $(hostname)" _rfb._tcp 5900 "KVM guest with VGA screen via RFB (VNC)."

You would look for this announcement from another machine with the following command.

avahi-browse _rfb._tcp --resolve

If the avahi-publish is running then you should see something like the following (assume the publishing machine's hostname is vmhost-1).

+   eth3 IPv4 KVM guest VNC for vmhost-1                    VNC Remote Access    local
=   eth3 IPv4 KVM guest VNC for vmhost-1                    VNC Remote Access    local
   hostname = [vmhost-1.local]
   address = []
   port = [5900]
   txt = ["KVM guest with VGA screen via RFB (VNC)."]


If you want Avahi to publish your SSH service you must create a service config for it. You can usually just copy the example one and use it without editing it.

cp /usr/share/doc/avahi-daemon/examples/ssh.service /etc/avahi/services/.

If that example is not available then the following should work if copied to /etc/avahi/services/ssh.service.

<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
  <name replace-wildcards="yes">%h</name>

Avahi daemon won't start

If you look in /var/log/syslog you may see errors like the following when trying to start or restart avahi-daemon.

Oct 23 20:09:55 vmhost-1 avahi-daemon[15328]: avahi-daemon 0.6.31 starting up.
Oct 23 20:09:55 vmhost-1 avahi-daemon[15328]: dbus_bus_get_private(): Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
Oct 23 20:09:55 vmhost-1 avahi-daemon[15328]: WARNING: Failed to contact D-Bus daemon.

This can happen if you updated your network settings. This causes D-Bus to crash without logging any information. The solution is to start D-Bus again.

service dbus start