mDNS wird zur Namensauflösung von Hostnamen zu IP-Adressen verwendet. Diese Kommunikation passiert völlig automatisch und dient häufig zur automatischen Erkennung von Geräte im Netzwerk. Ein mir bekanntes Beispiel ist die Erkennung von Elgato Lichtern in meinem Netzwerk.

In meinem Falle lautet das Problem meine Netzwerksegmentierung mit Hilfe von VLANs und einem Router welcher diese Pakete nicht weiterleitet. Die Multicast Pakete finden nicht Ihren Weg in andere Netze. Apropos diese Pakete werden mittels UDP Port 5353 an 224.0.0.251 gesendet, falls Ihr mal euer Netzwerk mittels Wireshark abscannen möchtet.

Avahi Server/Daemon einrichten

Als erstes braucht Ihr natürlich ein Linux System welches in alle Netze über welche Ihr hinweg die mDNS Pakete senden möchtet eine Netzwerkkarte hat. Ob eine virtuelle Maschine oder Raspberry Pi ist erstmal egal, Hauptsache das System kommt mit OSI Schicht Layer 2 in das Netzwerk und empfängt auch die mDNS Pakete.

Wer möchte kann mit dem Tool “tcpdump” doch einfach mal rein sehen ob mDNS Pakete am System ankommen.

apt install tcpdump
tcpdump -i any port 5353

10:50:36.825043 eth0  M   IP 192.168.20.20.mdns > 224.0.0.251.mdns: 0 TXT (QM)? Elgato Key Light 95FC._elg._tcp.local. (55)
10:50:36.825059 lo    In  IP localhost.mdns > 224.0.0.251.mdns: 0 SRV (QM)? Elgato Key Light 95FC._elg._tcp.local. (55)
10:50:36.825080 eth0  Out IP 192.168.20.23.mdns > 224.0.0.251.mdns: 0*- [0q] 2/0/0 (Cache flush) SRV elgato-key-light-95fc.local.:9123 0 0, PTR Elgato Key Light 95FC._elg._tcp.local. (105)
10:50:36.825220 eth1  Out IP 192.168.70.29.mdns > 224.0.0.251.mdns: 0 [1a] TXT (QM)? Elgato Key Light 95FC._elg._tcp.local. (141)
10:50:36.825240 lo    In  IP localhost.mdns > 224.0.0.251.mdns: 0 TXT (QM)? Elgato Key Light 95FC._elg._tcp.local. (55)
10:50:36.825254 eth0  Out IP 192.168.20.23.mdns > 224.0.0.251.mdns: 0*- [0q] 1/0/0 (Cache flush) TXT "mf=Elgato" "dt=53" "id=3C:6A:9D:1A:82:AC" "md=Elgato Key Light 20GAK9901" "pv=1.0" (135)

Kommen wir nun dazu den Avahi Dienst zu installieren und zu konfigurieren.

apt install avahi-daemon

### Autostart bei Reboot aktivieren ###
systemctl enable avahi-daemon

### KONFIGURATION ÄNDERN ###
nano /etc/avahi/avahi-daemon.conf

### ÄNDERE FOLGENDE ZEILE IN YES ###
[reflector]
enable-reflector=yes

### Dienst neustarten ###
systemctl restart avahi-daemon

Ab sofort werden alle mDNS Pakete welche auf egal welchem Netzwerkinterface ankommen in alle Netze weitergeleitet.