mDNS/Avahi: Namensauflösung ohne DNS und ohne Server

Zur Namensauflösung in einem internen Netz hat man im Wesentlichen folgende Möglichkeiten:

  1. Die internen Namen in einen öffentlichen DNS eintragen

    Dies ist die “offiziell” nicht empfohlene Methode, das man so interne Informationen nach außen trägt und so (geringe) Sicherheitseinbußen hat.

  2. Die internen Namen in einen internen DNS eintragen (Split-DNS)

    Dies ist die vielleicht die “sauberste” Methode. Aber sie ist komplexer, weil man zwei DNS und Zonenfiles pflegen muss. Außerdem muss man immer dafür sorgen, dass die “richtigen” Rechner den internen DNS verwenden.

  3. Auflösung der internen Namen via mDNS/Avahi – ganze ohne DNS und ohne Server.

    Hier “announcen” die Rechner selbstständig (via Multicast/Broadcast) ihre Namen und angebotenen Services.

Dies habe ich mal ausprobiert und etwas damit experimentiert.

Installation

  • Linux: apt install avahi-daemon libnss-mdns avahi-utils
  • Mac: Hat es schon von vornherein “an Bord”.
  • OpenWrt: opkg install avahi-nodbus-daemon avahi-utils

Basis-Konfiguration

Keine Konfiguration ist nötig, damit alles erstmal funktioniert! Sehr einfach. Toll!

Doch ein paar Kleinigkeiten hatte ich doch zu beachten:

  • Ggf. auf der Firewall den Port UDP 5353 von “außen” dicht machen. Je nach Maschine: intern/extern.
  • Bei einzelnen Maschinen war noch (intern) IPv6 aktiv, was dazu führte, dass die IPv6 Name announct wurde. Abschalten und alles klappt 🙂

Reflector: Namensauflösung über Netze hinweg

Ohne weiteres Zutun funktioniert das Ganze nur im lokalen Netz – nicht über Router hinweg. Um das zu ermöglichen, habe ich folgendes gemacht:

Da bei mir OpenWrt ein Router zwischen internen Netzen ist, bot sich an, diesen als “reflector” zu konfigurieren:

In /etc/avahi/avahi-daemon.conf:

enable-reflector=yes
use-ipv6=no

In /etc/config/network bei einigen Netzen verhindern, dass deren Pseudo-IPv6-Adresse announced wird:

config interface 'lan'
...
option ipv6 0

Außerdem: UDP-Port 5353 von/nach allen Netzen erlauben.

Debugging:

avahi-resolve --verbose --name meinserver.local
avahi-browse -a

Quintessenz

Es ist wirklich eindrucksvoll, wie einfach und schnell das erstmal funktioniert. Bei mir funktioniert das ganze auch via Zerotier-Netz einwandfrei. Im Detail ist dann – wie so oft – doch etwas mehr Handarbeit als zunächst gedacht.

Dass ich das nun “produktiv” einsetzen werde, bezweifle ich jedoch: Da jedes einzelne Gerät (Server) für sich selber entscheidet, was – bzw. welchen Namen und welche IP – es announct, kann das leicht unübersichtlich bzw. schlecht zu kontrollieren sein. Bei einem zentralen DNS entscheidet man als Admin an einer zentralen Stelle, welche Namen zu welchen IPs werden sollen. Das ist mir doch (noch?) sympathischer.

Außerdem scheint sich die Fritzbox ebenso für Vieles zuständig zu fühlen und die Situation so weiter zu verkomplizieren. Das kann ich aber kaum praktisch einschätzen, da sich meine Fritzbox außerhalb der betrachteten Netze befindet.

Anhang: Links

Schreibe einen Kommentar

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