Zum Inhalt springen

Mdns-bridge

Aus wiki.freifunk.net

Brücke zwischen MDNS und DNS

Das Problem

mDNS ist eine Technologie, mit der Teilnehmer eines Netzes Dienste im Netzwerk bekannt machen können. Das funktioniert häufig ganz gut - aber spezielle Software muss bei jedem Teilnehmer installiert sein, damit Dienste auch gefunden werden.

Für einen so zentralen Dienst wie es die Namensauflösung ist, ist das natürlich problematisch - Clients können zunächst einmal nur per DNS Netzwerknamen auflösen und finden damit mDNS-Workstations nicht.

Die Lösung

Eine mDNS-DNS Brücke löst dieses Problem. In kurzen Intervallen werden per alle mDNS Ankündigungen im Netzwerk abgehört und dabei gefundene Netzteilnehmer dem DNS-Server bereitgestellt.

Das Setup sieht wie folgt aus:

  1. Eintragen der Brücke in einen häufigen (minütlich?) Cron-Job
  2. Die Brücke schreibt eine Datei im Stil von /etc/hosts. Diese Datei wird dem DNS-Server als zusätzliche Datenquelle für Namensauflösung bekannt gemacht.

Setup

Eine aktuelle Version dieses Programms kann unter https://kdserv.dyndns.org/svn/freifunk-icvpn/scripts/mdnstohosts heruntergeladen werden. Nutzername und Passwort sind jeweils "freifunk" ohne die ""

Neben dem script muss das Paket avahi-utils installiert sein.

Einrichtung:

  1. speichern des scripts in /usr/bin/mdnsbridge
  2. Einrichten eines Cron-Eintrags in /etc/crontab
    * * * * * root /usr/bin/mdnsbridge
  3. Eintragen der folgenden Zeile in /etc/dnsmasq/dnsmasq.conf
    addn-hosts=/tmp/mdns_hosts

Alternative Lösung

Eine Alternative stellt ein minimaler DNS-Server dar, der alle Namen unter eine Subdomain auf .local mappt und auflöst.

Ein solcher Server findet sich unter http://git.universe-factory.net/mdns-resolver/plain/mdns-resolver ; er ist in Ruby geschrieben und benötigt Ruby 1.9 und eine spezielle net-dns-Version mit einigen Bugfixes (die hoffentlich bald auch upstream sind), die man unter https://github.com/NeoRaider/net-dns finden kann. Die Konfiguration erfolgt im Kopf des Scriptes und sollte selbsterklärend sein, wenn man schon mal irgendwas mit DNS gemacht hat.

Da das Script zur Auflösung von .local-Domains auf die getaddrinfo-Funktion des Systems zurückgreift, muss das System, auf dem das Script läuft, in der Lage sein, diese Domains aufzulösen (mdns-Eintrag in nsswitch.conf).

Fragen zum Script können im Freifunk-IRC-Channel an neoraider gerichtet werden.