Services mit Avahi

Sämtliche Services laut RFC 2782: http://www.dns-sd.org/ServiceTypes.html

Avahi ist eine freie Implementation von Zeroconf, einer Technik zur Vernetzung von Geräten in einem lokalen Netzwerk, ohne dass diese konfiguriert werden müssen. So ist es möglich, zwei Rechner über ein Netzwerkkabel zu verbinden und sofort Daten austauschen zu können. Es brauchen keine IP-Adressen eingestellt zu werden usw.

Ziel ist es, lokale Netzwerke aufzubauen, die „einfach“ funktionieren, d.h. ohne den Einsatz von Diensten wie DHCP oder DNS oder gar einer manuellen Konfiguration von IPs sollen sich Rechner im Netzwerk untereinander ansprechen und ihre Dienste nutzen können. So können manche Instant-Messaging Programme in einem LAN miteinander kommunizieren, ohne dass sie einen Server brauchen, über den die Kommunikation läuft. Dasselbe gilt für Voice over IP, also Telefonieren oder Videogespräche.

Ein anderes beliebtes Beispiel ist die Freigabe von Musikbibliotheken im Netzwerk. So kann man die Musiksammlung eines Rechners auf einem anderen nutzen, ohne dass man sich mit Dateifreigaben beschäftigen muss. Letztendlich soll es auch möglich sein, Dateien und Verzeichnisse freizugeben.

Das heist also die Servicestruktur dokumentiert sich selber. Man kann sich bequem durch die Funktionen eines Netzwerks klicken. Je nach Explorer kann man die Services auch gleich nutzen. Ein Optimum stellt der Zeit der Dateimanager von KDE4 Dolphin dar. Mit ihm wird jedes Service über Netzwerk schön ersichtlich.

Hier ein Serviceauszug der Konsole:

+ eth1 IPv4 Samba Shares on data                          Microsoft Windows Network local
+ eth1 IPv4 Updatecache für sämtliche Software          Network File System  local
+ eth1 IPv4 Firmendaten Storage                           Network File System  local
+ eth1 IPv4 Proxmoxdumps, Backups von VM's                Network File System  local
+ eth1 IPv4 ISO's, Distributionen, DVD's                  Network File System  local
+ eth1 IPv4 pro                                           SSH-Fernzugriff      local
+ eth1 IPv4 app                                           SSH-Fernzugriff      local
+ eth1 IPv4 apt-cacher                                    SSH-Fernzugriff      local
+ eth1 IPv4 data                                          SSH-Fernzugriff      local
+ eth1 IPv4 tcos                                          SSH-Fernzugriff      local
+ eth1 IPv4 gnagios                                       SSH-Fernzugriff      local
+ eth1 IPv4 Remote Terminal on clearos-dc                 SSH-Fernzugriff      local
+ eth1 IPv4 backuppc                                      SSH-Fernzugriff      local
+ eth1 IPv4 lx-office                                     SSH-Fernzugriff      local
+ eth1 IPv4 SFTP File Transfer on pro                     SFTP File Transfer   local
+ eth1 IPv4 SFTP File Transfer on app                     SFTP File Transfer   local
+ eth1 IPv4 SFTP File Transfer on apt-cacher              SFTP File Transfer   local
+ eth1 IPv4 SFTP File Transfer on data                    SFTP File Transfer   local
+ eth1 IPv4 SFTP File Transfer on tcos                    SFTP File Transfer   local
+ eth1 IPv4 SFTP File Transfer on gnagios                 SFTP File Transfer   local
+ eth1 IPv4 SFTP File Transfer on clearos-dc              SFTP File Transfer   local
+ eth1 IPv4 SFTP File Transfer on backuppc                SFTP File Transfer   local
+ eth1 IPv4 SFTP File Transfer on lx-office               SFTP File Transfer   local
+ eth1 IPv4 pro [00:24:81:a8:19:ec]                       Arbeitsplatzrechner  local
+ eth1 IPv4 app [2e:07:03:2b:d3:3e]                       Arbeitsplatzrechner  local
+ eth1 IPv4 apt-cacher [ca:8d:18:27:6b:f6]                Arbeitsplatzrechner  local
+ eth1 IPv4 data [6e:74:c3:cb:1e:ab]                      Arbeitsplatzrechner  local
+ eth1 IPv4 tcos [de:81:aa:bf:cf:df]                      Arbeitsplatzrechner  local
+ eth1 IPv4 gnagios [f2:47:8e:74:86:c4]                   Arbeitsplatzrechner  local
+ eth1 IPv4 clearos-dc [9e:78:5c:00:5e:82]                Arbeitsplatzrechner  local
+ eth1 IPv4 backuppc [00:22:15:97:15:06]                  Arbeitsplatzrechner  local
+ eth1 IPv4 lx-office [ca:95:e4:95:2b:a0]                 Arbeitsplatzrechner  local
+ eth1 IPv4 Proxmox Admininterface für VM's               Web-Angebot          local
+ eth1 IPv4 Clusterverwaltung mit Webmin, Masterserver    Web-Angebot          local
+ eth1 IPv4 Backuppc Benutzerinterface                    Web-Angebot          local
+ eth1 IPv4 WorkCentre 7120 (9f:ff:d2)                    Web-Angebot          local
+ eth1 IPv4 WorkCentre 7120 (9f:ff:d2)                    UNIX Printer         local

Konfiguration

Die Topleveldomain *.local kann jeder Zeit geändert werden.

nano /etc/avahi/avahi-daemon.conf

Die wichtigsten Punkte könnten so aussehen:

domain-name=tux.local
browse-domains=tux.local, local, gentoo.com
allow-interfaces=br0
enable-wide-area=no # muss man hier auf "no" setzen falls man von eine *.local auf eine echte Domain schwenkt. z.B. "gentoo.com"

Sämtliche Servicedateien liegen unter

/etc/avahi-daemon/services/

Sobald eine Servicedatei erstellt wird, wird diese umgehen dem Netz publiziert. SSH, SFTP und die Workgroup selbst, sind Standard.

Avahi (http://avahi.org/wiki/AboutAvahi) is already installed out of the box on all recent Linux distributions, to enable IPv6 for this service make sure the /etc/avahi/avahi-daemon.conf file contains an active „use-ipv6=yes“ line.

To enable m(ulticast)dns resolving of IPv6 addresses change the „hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4“ line to „hosts: files mdns_minimal [NOTFOUND=return] dns mdns“ in the /etc/nsswitch.conf file

You probably have to restart nscd if used (/etc/init.d/nscd restart or service nscd restart)

Every IPv6 enabled host using Avahi/Zeroconf/Bonjour should now be pingable as hostname.local and visible using the avahi-discover utility

To add the .local domain as standard domain for dns queries you could add a „search local“ to resolv.conf and the host is now pingable as just hostname.

Another useful option for users with a mixed Linux/Microsoft environment is to enable Microsoft hostname resolving by changing the line in /etc/nsswitch.conf to „hosts: files mdns_minimal [NOTFOUND=return] dns mdns wins“, just make sure to install winbind on the Linux host.

Services

Hier eine Reihen von Services mit Beispielkonfiguration. Viele Programme kann man auch schon mit Avahisupport installieren. Wie z.B. Distcc, Pidgin, usw…

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name>MythWeb</name> ## Name of the Bookmark
  <service>
    <type>_http._tcp</type>
    <port>80</port>
    <txt-record>path=/mythweb</txt-record> ## Path 
  </service>
</service-group>
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
    <name replace-wildcards="yes">FTP File Sharing on %h</name>
    <service>
        <type>_ftp._tcp</type>
        <port>21</port>
    </service>
</service-group>
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
   <name replace-wildcards="yes">Samba Shares on %h</name>
   <service>
       <type>_smb._tcp</type>
       <port>139</port>
   </service>
</service-group>
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">Music</name> ## Name
<service>
       <type>_nfs._tcp</type>
       <port>2049</port>
       <txt-record>path=/media/someshare</txt-record> ## path to shared Folder
</service>
</service-group>

Dies waren die wichtigsten. Publizieren kann man alles. Siehe auch avahi_dienstliste.