Services mit Avahi
Einleitung
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…
http.service
<?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>
ftp.service
<?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>
samba.service
<?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>
nfs.service
<?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.