.local und seine Probleme

Wer kennt sie nicht, die gute alte .local Domain. Seit Jahren leistet sie uns gute Dienste bei der Sortierung unserer LAN Hosts. Irgendjemand scheint das jetzt dann doch alles zu reibungslos verlaufen zu sein, deshalb erschuf er mDNS bzw. den avahi-daemon. Eigentlich ein ganz brauchbarer kleiner Dienst der den Zweck hat dafür zu sorgen das sich Rechner innerhalb eines lokalen Netzwerkes anhand ihrer Hostnamen erkennen und ein paar Dienste bereitgestellt werde. Dafür wir auf eine Technik zurückgegriffen die sich mDNS, also Multicast DNS nennt. Zu DNS gehört allerdings auch immer ein Domainname, was glaubt ihr jetzt welcher da  bei avahi per default zum Einsatz kommt? Richtig, natürlich .local. Was genau passiert jetzt also wenn der avahi-daemon und ein lokaler DNS-Server mit eingestellter .local Domain aufeinander treffen? In der Theroie exakt gar nichts, da (zumindest bei Debian) die /etc/default/avahi-daemon so aussieht:

# 1 = Try to detect unicast dns servers that serve .local and disable avahi in
# that case, 0 = Don't try to detect .local unicast dns servers, can cause
# troubles on misconfigured networks
AVAHI_DAEMON_DETECT_LOCAL=1

Avahi stellt also den Dienst direkt ein sobald es einen normalen DNS Server findet. Funktioniert das in der Praxis? Meistens. Doch was passiert wenn es einmal nicht klappt?

nslookup und das host command liefern uns die richtige IP zurück, Ping sagt uns das es den Hostnamen nicht auflösen kann. WTF? Wie kommt es zu einem solchen verhalten? Schauen wir doch einmal was in der nsswitch.conf drinnen steht.

:~$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd:         compat
group:          compat
shadow:         compat
hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis

Das ist dann wohl die Erklärung. Wir schauen also erst einmal ob der Hostname in der /etc/hosts vorhanden ist (files). Ist jetzt nicht die schlechteste Idee. Falls nicht fragen wir beim mdns nach, warum jetzt genau erst den mdns4_minimal ist eine gute Frage. So jetzt kommt der Hammer, sollte dieser mdns der Meinung sein das er den Hostnamen nicht kennt und für .local zuständig ist erfolgt ein Abbruch ([NOTFOUND=return]). Unsere Anfrage schafft es also gar nicht bis zum zuständigen DNS Server, der uns die korrekte IP zurückliefern würde.

Warum das so ist, bzw was man sich dabei so gedacht hat gehört zu den Fragen die wohl ewig Unbeantwortet bleiben. Aber alleine schon aufgrund der Tatsache das ich nach diesem Problem einige Zeit suchen musste hat der avahi-deamon bei mir inzwischen einen relativ schlechten Stand und um auch wirklich ganz sicher zu gehen das ich NIEMALS wieder in dieses Problem laufe werde ich meine lokale Domain demnächst auf etwas umstellen das garantiert nie in einem rfc landet.

Bleibt noch zu klären wie es dazu kommen kann das der avahi-daemon trotzdem startet wenn irgendwo im Netz ein DNS ist der .local Domains verteilt. Meine vorläufige Erklärung dafür ist jetzt zunächst einmal das der avahi irgendwie startet bevor es der DNS-Server tut bzw aufgrund irgendwelcher Netzwerk fuckups der DNS mal kurzzeitig nicht erreichbar ist.

Kleines Update:

Besonders viel Freude hat man natürlich auch bei wenn man irgendwie auf die dumme Idee kommen sollte sich erst lange nach dem starten seines Rechners mit einem VPN zu verbinden in dem zufällig ein DNS Server steht der eine .local Domain auflöst. In diesem Fall startet natürlich der Avahi-daemon immer zuerst und damit war es das dann auch mit der Namensauflösung. Ich bleibe dabei das Avahi Zeug hat mir bis jetzt deutlich mehr Probleme verursacht als es mir genutzt hat.

Tagged , , , , , . Bookmark the permalink.

About Brechthold

Brechthold gehört zu dem Gründungsteam von Contempt-it . Nach ein paar Jahren der Abstinenz jetzt wieder zurück im Adminteam um ein wenig Ordnung zu schaffen. Zu seinen Lieblingsthemen gehören Honeypots, IDS-Systeme und Servermonitoring. Neben seiner Arbeit im Adminteam werkelt er noch an seinem Brechtblog

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.