Mdns-bridge

Aus wiki.freifunk.net
Zur Navigation springenZur Suche springen

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.