Difference between revisions of "Avahi Notes"

From Noah.org
Jump to navigationJump to search
m
m
(3 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
Monitor Zeroconf advertisements:
 
Monitor Zeroconf advertisements:
 
<pre>
 
<pre>
avahi-browse -a --resolve
+
avahi-browse --all --resolve
 +
</pre>
 +
 
 +
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.
 +
<pre>
 +
avahi-browse _ssh._tcp
 +
avahi-browse --resolve _ssh._tcp
 +
</pre>
 +
 
 +
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'''.
 +
 
 +
== publish ==
 +
 
 +
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.
 +
<pre>
 +
avahi-publish -s "KVM guest VNC for $(hostname)" _rfb._tcp 5900 "KVM guest with VGA screen via RFB (VNC)."
 +
</pre>
 +
You would look for this announcement from another machine with the following command.
 +
<pre>
 +
avahi-browse _rfb._tcp --resolve
 +
</pre>
 +
If the '''avahi-publish''' is running then you should see something like the following (assume the publishing machine's hostname is '''vmhost-1''').
 +
<pre>
 +
+  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 = [10.0.0.151]
 +
  port = [5900]
 +
  txt = ["KVM guest with VGA screen via RFB (VNC)."]
 
</pre>
 
</pre>
  
Line 23: Line 57:
 
   </service>
 
   </service>
 
</service-group>
 
</service-group>
 +
</pre>
 +
 +
== 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'''.
 +
<pre>
 +
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.
 +
</pre>
 +
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.
 +
<pre>
 +
service dbus start
 
</pre>
 
</pre>

Revision as of 20:22, 23 October 2012


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.

publish

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 = [10.0.0.151]
   port = [5900]
   txt = ["KVM guest with VGA screen via RFB (VNC)."]

avahi-daemon

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">
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_ssh._tcp</type>
    <port>22</port>
  </service>
</service-group>

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