mDNS über vlans funktioniert im WLAN nicht

Rakor

Administrator
Teammitglied
Hallo zusammen,

ich habe mein Netzwerk zu Hause angepasst und stolpere leider über ein sehr nerviges Problem bezgl mDNS und hoffe ihr könnt mir auf die Sprünge helfen.

Ich habe einen Raspberry im Netzwerk der mittels Raspotify als "Spotify-Connect" Lautsprecher Musik abspielen soll. Gesteuert wird das Ganze über die Spotify-App die entweder auf dem Smartphone oder auf dem Notebook läuft. Alle Geräte befinden sich in unterschiedlcihen vlans. Spotify benötigt mDNS um den Lautsprecher zu finden. Leider funktioniert das nur vom Notebook aus und nicht vom Smartphone. Ich bin mittlerweile etwas hilflos...
Das schönste Phänomen ist allerdings das folgende:
  • Der Rasperry ist gebootet
  • Ich starte die App auf dem Handy
  • Der Raspberry wird nicht gefunden (ich kann warten bis St. Nimmerlein)
  • Ich starte die Spotify-App auf dem Notebook
  • Der Raspberry erscheint sofort als Lautsprecher auf dem Notebook und auf dem Smartphone

Auf mich macht es also den Eindruck als kämen die mDNS-Anfragen aus dem WLAN-Netz nicht beim Raspberry an. Sobald das Notebook jedoch seine Anfrage losschickt bekommt das auch das Smartphone mit. Aber evtl liege ich auch völlig daneben.
Sobald ich das Notebook in das WLAN hänge findet es den Lautsprecher auch nicht mehr.

Folgend eine schematische Darstellung des Netzwerks.


mDNS-Problem.png


  • 3 vlans
    • vlan10: vertrauenswürdige Geräte die per Ethernet verbunden sind (mein Notebook)
    • vlan50: vertrauenswürdige Geräte die per WLAN verbunden sind (mein Smartphone)
    • vlan70: Lautsprecher. Hier ist der Raspotify verortet
  • Die vlans werden durch eine OpnSense verbunden
  • Spotify benötigt mDNS zum Discovery der Lautsprecher (224.0.0.251:5353)
  • Auf der OpnSense ist das Plugin UDP Boradcast Relay konfiguriert um die mDNS-Pakete in die anderen Netze zu befördern.
    • Alle drei vlans sind eingetragen
    • Wie man am Notebook sieht scheint das ja auch grundsätzlich zu funktionieren
  • Smartphone ist ein Android
  • Notebook ist ein Linux mir Spotify-Linux-App
  • Raspotify ist ein Raspbian
  • WLAN AP ist ein Mikrotik, nachdem ich dachte, dass ich zu blöd bin das Ding zu konfigurieren habe ich es jedoch auch mit einem alten TP-Link mit OpenWRT versucht mit identischem Ergebnis.

Auch an den Firewall-Regeln auf der OpnSense könnte ich nun nicht erkennen wo da Problem liegen sollte:
Für das Lautsprecher-Netz
Code:
pass in quick on lagg0_vlan70 inet proto udp from (lagg0_vlan70:network) to 239.255.255.250 port = 1900 keep state
pass in quick on lagg0_vlan70 inet proto udp from (lagg0_vlan70:network) to 224.0.0.251 port = mdns keep state
pass in quick on lagg0_vlan70 inet proto tcp from (lagg0_vlan70:network) to <InterneDNS> port = domain flags S/SA keep state
pass in quick on lagg0_vlan70 inet proto udp from (lagg0_vlan70:network) to <InterneDNS> port = domain keep state
block drop in quick on lagg0_vlan70 inet from any to <InternetRouter>
block drop in quick on lagg0_vlan70 inet from any to (self)
pass in quick on lagg0_vlan70 route-to (igb0 192.168.1.1) inet from (lagg0_vlan70:network) to any flags S/SA keep state

Für das Trusted-Netz
Code:
pass in quick on lagg0_vlan10 inet proto icmp from (lagg0_vlan10:network) to any keep state
pass in quick on lagg0_vlan10 inet proto tcp from any to <InterneDNS> port = domain flags S/SA keep state
pass in quick on lagg0_vlan10 inet proto udp from any to <InterneDNS> port = domain keep state
pass in quick on lagg0_vlan10 inet proto tcp from (lagg0_vlan10:network) to (lagg0_vlan70:network) port = lupa flags S/SA keep state
pass in quick on lagg0_vlan10 inet proto tcp from (lagg0_vlan10:network) to (lagg0_vlan70:network) port = 60006 flags S/SA keep state
pass in quick on lagg0_vlan10 inet proto tcp from (lagg0_vlan10:network) to (lagg0_vlan70:network) port = http flags S/SA keep state
pass in quick on lagg0_vlan10 inet proto udp from (lagg0_vlan10:network) to 224.0.0.251 port = mdns keep state
pass in quick on lagg0_vlan10 inet proto udp from (lagg0_vlan10:network) to 239.255.255.250 port = 1900 keep state
pass in quick on lagg0_vlan10 inet proto tcp from (lagg0_vlan10:network) to (lagg0_vlan70:network) port = ssh flags S/SA keep state
block drop in quick on lagg0_vlan10 inet from any to (self)
block drop in quick on lagg0_vlan10 inet from any to <InternetRouter>
pass in quick on lagg0_vlan10 route-to (igb0 192.168.1.1) inet from (lagg0_vlan10:network) to any flags S/SA keep state

Für das WLAN-Netz
Code:
pass in quick on lagg0_vlan50 inet proto tcp from (lagg0_vlan50:network) to <InterneDNS> port = domain flags S/SA keep state
pass in quick on lagg0_vlan50 inet proto udp from (lagg0_vlan50:network) to <InterneDNS> port = domain keep state
pass in quick on lagg0_vlan50 inet proto tcp from (lagg0_vlan50:network) to (lagg0_vlan70:network) port = lupa flags S/SA keep state
pass in log quick on lagg0_vlan50 inet proto tcp from (lagg0_vlan50:network) to (lagg0_vlan70:network) port = 60006 flags S/SA keep state
pass in log quick on lagg0_vlan50 inet proto tcp from (lagg0_vlan50:network) to (lagg0_vlan70:network) port = http flags S/SA keep state
pass in log quick on lagg0_vlan50 inet proto tcp from (lagg0_vlan50:network) to (lagg0_vlan70:network) port = rtsp flags S/SA keep state
pass in log quick on lagg0_vlan50 inet proto tcp from (lagg0_vlan50:network) to (lagg0_vlan70:network) port 49152:49154 flags S/SA keep state
pass in quick on lagg0_vlan50 inet proto tcp from (lagg0_vlan50:network) to 224.0.0.251 port = mdns flags S/SA keep state
pass in quick on lagg0_vlan50 inet proto tcp from (lagg0_vlan50:network) to 239.255.255.250 port = 1900 flags S/SA keep state
block drop in quick on lagg0_vlan50 inet from any to <InternetRouter>
block drop in quick on lagg0_vlan50 inet from any to (self)
pass in quick on lagg0_vlan50 route-to (igb0 192.168.1.1) inet from (lagg0_vlan50:network) to any flags S/SA keep state

Vielleicht kann mir jemand einen Tipp geben warum das über das WLAN nicht funktioniert. Vielen Dank!
 
Zuletzt bearbeitet:
Avahi Dämon auf den benötigten (vlan ) hören lassen , dann fungiert das Ding als "Multicast"Router

Holger ( auf limnos)
 
Hallo @mark05, danke für die Antwort. Die OpnSense verbindet ja meine VLANs und dort habe ich das Plugin "UDP Boradcast Relay" laufen, das diesen Job erfüllen soll. Ich hatte auch schon das Plugin "MDNS Repeater" versucht, aber das hat auch nichts gebracht. Leide ist es so, dass OpnSense kein Avahi direkt mitbringt und ich es eigentlich auch nicht unnötig verbiegen will.
Es ist ja so, dass es vom Notebook aus funktioniert, also grundsätzlich das Relay wohl funktioniert. Nur eben für das WLAN nicht.
 
Broadcast nicht gleich Multicast!
Das ist richtig. Nun ist es aber so, dass das Ding halt so heißt und bei entsprechender Konfiguration (Angabe der Multicast-IP und Port) aber eben auch Multicast relayen.
Wie gesagt funktioniert da auch am Notebook wunderbar. Die Multicast Pakete werden in das andere VLAN gehoben.

Edit: Wireshark sagt auch, dass vom vlan50 keine mDNS-Pakete im vlan70 ankommen. Jedoch kommen die mDNS-Pakete aus vlan10 in vlan70 an.
 
Nach langer Analyse (danke @Columbo0815 !) konnte der Übeltäter gefunden werden. Die pf-Regel war auf tcp gesetzt, was mir trotz mehrmaliger Kontrolle der Regeln leider irgendwie durchgegangen ist.
 
Zurück
Oben