jensano
Goto Top

PfSense - Firewall Rules für AVAHI und Airplay

Hallo liebe Helfer,

Systeminfo
pfSense 2.4.5-RELEASE-p1 (amd64)
Package AVAHI 2.1_1
Cisco SG350
Unifi AP AC Pro

Einleitung
Ich habe mittlerweile AVAHI mit einer Neuinstallation des Packages zum Laufen bekommen. Mit einem Bonjour Scanner kann ich die Bonjour Dienste im Netzwerk sehen.
Ich konnte problemlos von meinem iPhone mittels "Bildschirmsynchronisierung (Airplay)" den Telefoninhalt auf meinem Samsung Fernseher darstellen

Netzwerkaufbau
VLAN_10_ADMIN
  • Netzwerk 192.168.10.1/24
  • iPhone ist Teilnehmer
  • Firewall Rule = ALLOW ANY

VLAN_30_IOT
  • Netzwerk 192.168.30.1/24
  • Samsung Fernseher ist Teilnehmer
  • Firewall Rule =
2020-09-01 17_43_57

Problem
Ich konnte eigentlich bis jetzt problemlos mein iPhone über Airplay auf dem Samsung wiedergeben. Seit kurzen geht es nicht mehr. Im iPhone findet er zwar den Samsung TV und ich kann ihn auch für Airplay auswählen, jedoch zeigt der Fernseher nichts an. Ich habe dann mit einem "Allow Any" und loggen der Firewall Regel mal geschaut was der Fernseher so macht. Er versucht einmal auf mein iPhone zuzugreifen von dem ja quasi die Anfrage kahm. Wenn ich das in den Firewall Rules explizit erlaube (obere ausgegraute Regel) geht Airplay wieder.
Jetzt ist natürlich das Ziel, dass der Fernseher nicht auf das iPhone im Admin Netz zugreifen kann. So hat es auch eigentlich bis vor Kurzem auch funktioniert. Die Anfrage kommt ja von meinem iPhone weshalb ich nicht verstehe, warum ich hier den Zugriff vom IOT VLAN explizit in das ADMIN VLAN erlauben muss. Normal müsste der Weg doch für die Rückantwort automatisch geöffnet werden.
Was kann sich da verstellt haben bzw. kann mir wer auf die Sprünge helfen?

Logging
firewall log

AVAHI EInstellung
screenshot_2020-09-01 pfsense mylocal - services avahi

Content-Key: 600902

Url: https://administrator.de/contentid/600902

Printed on: April 26, 2024 at 10:04 o'clock

Member: aqui
aqui Sep 03, 2020, updated at Sep 04, 2020 at 10:02:47 (UTC)
Goto Top
Normal müsste der Weg doch für die Rückantwort automatisch geöffnet werden.
Nur wenn es TCP ist, UDP hat einen festen Session Timeout.
Bonjour nutzt aber Multicast mit einer nicht routebaren Link Local Multicast Gruppenadresse 224.0.0.251 und Port UDP 5353.
Nimm einen Wireshark oder den onboard Packet Tracer der pfSense und checke genau was der Fernseher vom iPhone will und öffne das dann mit einer spezifischen Regel.
Member: Jensano
Jensano Sep 03, 2020 at 16:18:53 (UTC)
Goto Top
Aah danke. Also nur bei TCP wird die Antwort durchgelassen.
Den Zugriff der betroffenen Geräte auf 224.0.0.251 UDP 5353 habe ich bereits erlaubt gehabt damit die Geräte ihre Adresse dorthin preisgeben können bzw. sehen können welche Adressen die anderen Geräte haben.

"Packet Capture" der pfSense - Hier nur UDP, da TCP ja eh als Rückantwort durchgelassen wird da statefull.
Kannst du mir sagen was der Zugriff auf die 192.168.30.255 bedeutet? Die Adresse ist doch außerhalb des IP Bereich für das Subnet 192.168.30.1 bis 192.168.30.254. Wer oder was ist 192.168.30.255?
2020-09-03 17_32_24

Neue Regeldarstellung
Hier habe ich jetzt den Zugriff des Fernsehers per UDP auf den Anfrager (iPhone) erlaubt, da ja nicht statefull und somit die Rückantwort nicht automatisch durchgelassen wird. Auf einen bestimmten Port kann man das nicht beschränken oder? Ich habe mal gelesen und sehe auch in wiederholten Captures das sich der Port regelmäßig ändert.
2020-09-03 18_12_38

Meinste so macht man das? Oder habe ich da irgendwelche Böcke drinn?
Member: aqui
aqui Sep 04, 2020 updated at 09:13:15 (UTC)
Goto Top
Kannst du mir sagen was der Zugriff auf die 192.168.30.255 bedeutet?
Wie du selber weisst ist die .255 die Broadcast Adresse in dem Netzwerk. (.255 = alle Hostbits auf 1) Solche simplen Basics kennt man aber als Netzwerker... face-wink
Broadcast Frames in diesem Netz an UDP Port 15600 blockt die Firewall also an ihrem Port. Eigentlich ganz logisch.
Wireshark ist hier wie immer dein Freund !
Auf einen bestimmten Port kann man das nicht beschränken oder?
Doch, natürlich ! Sowohl für die Destination als auch Sorce Adresse kannst du immer auch einen Port definieren !
und sehe auch in wiederholten Captures das sich der Port regelmäßig ändert.
Ja, aber nur der Source Port, der ist ja immer Random. Nie aber der Destination Port. Auch das sind IP Basics die man kennen sollte...
Oder habe ich da irgendwelche Böcke drinn?
Nope...sieht gut aus.
Mitglied: 145916
145916 Sep 04, 2020 updated at 09:52:19 (UTC)
Goto Top
Zitat von @aqui:
UDP ist nicht stateful.
Sorry, aber die Aussage ist ausgemachter Blödsinn wenn du damit die Firewall-States meinst. Sonst würden ja bspw. DNS Abfragen über UDP auf dem Rückweg sofort an der Firewall hängen bleiben wenn diese den State dafür nicht vorhalten würde.
https://www.it-administrator.de/lexikon/stateful_packet_inspection.html

Auch das sind IP Basics die man kennen sollte...
Dito 🐟 . Einfach mal in die States-Table deines Routers schauen face-wink.

Was man aber beachte sollte sind die State-Timeouts für UDP-Packets, sind die zu kurz kann es zu solchen Problemen bei Traffic zwischen Devices kommen
https://docs.netgate.com/pfsense/en/latest/book/config/advanced-firewall ...
Member: Jensano
Jensano Sep 04, 2020 updated at 10:51:04 (UTC)
Goto Top
Zitat von @145916:

Zitat von @aqui:
UDP ist nicht stateful.
Sorry, aber die Aussage ist ausgemachter Blödsinn...

Ohha. Das Thema hatte ich mit aqui auch schon. LINK Aber ich glaube man redet aneinander vorbei.

UDP ist ein Protokoll was KEINE Antwort von der Gegenstelle erwartet. Also hier findet keine Überprüfung statt ob die Informationen stimmen. Der Status der Sendung ist also unbekannt und kann nicht überprüft werden.

Jetzt ist es jedoch so wie @145916 schreibt, auch wenn nicht bekannt ist ob das was gesendet werden sollte auch so ankam, kann doch die Firewall trotzdem hier die Antworten auf eine Anfrage durchlassen. Sa steht es bei besagt das auch.

Zitat von :
Die Zustandsverwaltung der Firewalls greift nicht nur bei verbindungsorientierten Protokollen wie TCP, sondern sogar bei zustandslosen Protokollen wie UDP. Auch dort werden die dynamischen Regeln für Antworten erst dann für eine kurze Zeit freigeschalten, wenn auch eine Anforderung per UDP verschickt wurde. Dadurch werden zum Beispiel nur Antworten auf DNS-Anfragen akzeptiert von Servern akzeptiert, die auch angefragt wurden.

Zitat von Rule Methodology:
Because all rules in pfSense are stateful by default

Dann stellt sich ja jetzt die Frage warum wird die Rückverbindung (ich sag mal extra nicht Antwort) bei meiner Firewall dann geblockt und warum brauche ich derzeit extra eine statische Firewall Freigabe für den Fernseher hin zu meinem iPhone.
Hierfür werde ich mir mal die States tabelle und die State Timeouts nachher anschauen. So wie ich es verstehe müsste das ja ohne statische Zugriffsregel des Fernsehers auf das iPhone funktionieren. Ausser die pfSense kann diese UDP Pakete in kein Zusammenhang bringen und blockt das vom Fernseher deswegen weil sie sagt das es nicht zur Anfrage gehört. ???
Mitglied: 145916
145916 Sep 04, 2020 updated at 13:36:47 (UTC)
Goto Top
Dann stellt sich ja jetzt die Frage warum wird die Rückverbindung (ich sag mal extra nicht Antwort) bei meiner Firewall dann geblockt und warum brauche ich derzeit extra eine statische Firewall Freigabe für den Fernseher hin zu meinem iPhone.
evt. kommt die Antwort zu spät, bis dahin hat sich der State dann schon in der Firewall verabschiedet und sie blockt dann dementsprechend.
Stell die Firewall sie mal auf optimization mode "Conservative". Bzw. passe alternativ nur die Timeouts für UDP unter System > Advanced > Firewall (ganz unten an).
So wie ich es verstehe müsste das ja ohne statische Zugriffsregel des Fernsehers auf das iPhone funktionieren.
Ja, so wie Airplay-Mirroring aufgebaut ist muss das eigentlich so funktionieren. Habe ich hier auch so laufen, weitere Freigaben sind hier nicht nötig.
Member: Jensano
Jensano Sep 08, 2020 updated at 17:22:40 (UTC)
Goto Top
Also ich bin mir sicher das ging vor ein paar Tagen bei mir auch noch so. Hatte mich ja deswegen gewundert warum das Telefon sich zwar "scheinbar" verbunden hatte, aber auf dem TV nichts angezeigt wurde. Die Anzeige vom Telefon ist sonst nach Anwahl des TV in weniger als einer Sekunde da.

States
1. System / Advanced / Firewall & NAT / State Timeouts
Ich habe die UDP Werte, auch mal einfach alle Werte auf 60 Sekunden gestellt.
Es kommt trotzdem keine Verbindung mit dem TV zu stande.

2. System / Advanced / Firewall & NAT / Firewall Optimization Options
Den Modus auf Conservative stellen bring keinen Erfolg

3. Diagnostics / States / States
a) Zugriff TV auf iPhone nicht explizit in den Rules erlaubt
Wenn der Zugriff vom Fernseher auf das Telefon nicht explizit in den Firewall Rules genehmigt ist, sehe ich lediglich folgende Einträge wo mein iPhone als Source und der TV als Destination gelistet ist. TV als Source ist nicht zu sehen. Und auch keine UDP Einträge
2020-09-08 17_30_03

b) Zugriff TV auf iPhone explizit in den Rules erlaubt
Wenn der Zugriff vom TV auf das iPhone erlaubt ist sehe ch die folgenden Einträge
2020-09-08 17_44_13

UDP ist lediglich von TV in Richtung des iPhones zu sehen. Wenn das so ist kann doch keine automatische Firewall Öffnung existieren die dem TV Zugriff auf das iPhone als Rückantwort gewehrt.
@145916 kannst du mal schauen wie das bei dir aussieht. Wenn du das gleiche machst dann müsstest du doch ähnliche Zugriffe haben.

Anbei mal meine EInstellungen von Firewall / NAT
Kann da irgendwas faul sein? Oder gibt es irgendwelche anderen Orte wo was schief sein kann?
screenshot_2020-09-08 pfsense mylocal - system advanced firewall nat
Member: Bahnfreak90
Bahnfreak90 May 12, 2021 at 16:20:52 (UTC)
Goto Top
Moin,

Konntest du das Problem inzwischen lösen?
Ich stehe vor einer vergleichbaren Konstellation mit einem Samsung TV und bekomme es nicht zum laufen.
Member: aqui
aqui May 12, 2021 at 18:01:56 (UTC)
Goto Top
Den Haken "Bypass Firewall Rules on the same interface" sollte man immer setzen ! Das fehlt oben...
Member: Jensano
Jensano May 27, 2021 at 15:47:11 (UTC)
Goto Top
Hallo Bahnfreak,

nein abschließend konnte ich es nicht lösen.

  • Ohne die besagte extra Freigabe für die "Rückantwort" geht es nicht. Das Bild auf dem Fernseher bleibt schwarz.
  • Dazu habe ich Probleme mit VLANs die kein Allow Any haben, dass sie mal die Airplay Geräte bei mir angezeigt bekommen und mal nicht. Mal bekommen sie diese auch nur angezeigt, wenn sie mit einem bestimmten Accesspoint von meinen zwei Verbunden sind. Wechsele ich zu dem anderen, finden sie kein Airplay Gerät. Ich denke, das hängt irgendwie mit dem Announcement zusammen. Die verschiedensten Geräte im Netzwerk speichern ja die Airplay (Bonjour) Geräte zwischen. So kann mir z.B. auch das Radio mitteilen das es einen Fernseher mit Airplay Funktion gibt. Jeder Teilnehmer im Netzwerk führt eine eigene Liste mit Geräten und kann diese auch anderen mitteilen. Das habe ich mal im Netz gefunden. Da steht das sicher noch genauer. Das merkt man auch das manchmal der Fernseher noch als Airplay angezeigt wird obwohl er längst ausgeschaltet ist. Ich habe bisher aber nie herausgefunden, welche Firewallrules ein Gerät hier wirklich benötigt um immer die Bonjour Announcings mitzubekommen. So ist es momentan mit den Geräten in dem betreffenden VLAN Glückssache ob es geht.
  • aquis "Bypass Firewall Rules on the same intrfaces" hat bei mir keine EInfluss auf die Airplay Funktionalität. Nach Recherche dieser Funktion dürfte die damit auch nicht in Zusammenhang stehen. Da mag es eventuell Ausnahmen geben.
Member: aqui
aqui May 27, 2021 updated at 16:20:57 (UTC)
Goto Top
Dazu habe ich Probleme mit VLANs die kein Allow Any haben,
Das ist Unsinn, denn AVAHI ist mDNS und das nutzt bekanntlich die Multicast IP Adresse 224.0.0.251.
https://de.wikipedia.org/wiki/Zeroconf#Multicast_DNS
Es reicht also diese freizzugeben sofern man etwas stringentere Firwall Regeln nutzen möchte statt das Scheunentor "any" !
eine eigene Liste mit Geräten und kann diese auch anderen mitteilen.
Sie teilen nicht die ganze Liste mit sondern nur sich selber via Multicasting. Die Liste erstellen sie intern selbst aus den anderen Multicast Announcements.
noch als Airplay angezeigt wird obwohl er längst ausgeschaltet ist.
Logisch, denn der Devise Cahce (das was du als Liste bezeichnest) in jedem Gerät hat natürlich einen Timeout der einmal gelernte Geräte im Cache hält. Üblicherweise beträgt der Timeout 3mal die Multicast Update Time bevor diese aus der Liste entfernt werden.
welche Firewallrules ein Gerät hier wirklich benötigt um immer die Bonjour Announcings mitzubekommen.
Nur ein einziges Mal deinen Wireshark angeschmissen und du hättest du es in 3 Minuen gewusst !! face-wink
Multicast Gruppenadresse 224.0.0.251 mit UDP Port 5353
mdns
(Beispiel Apple TV im Netz)
Glückssache ob es geht.
Sowas gibt es in der IT bekanntlich nicht sondern nur im Spielcasino. face-wink
hat bei mir keine EInfluss auf die Airplay Funktionalität.
Klar, denn die haben auch mit Multicasting nix zu tun...da hast du absolut recht.
Member: Jensano
Jensano May 27, 2021 updated at 21:01:34 (UTC)
Goto Top
Es wäre schön wenn es so einfach funktionieren würde. Tut es aber leider reproduzierbar nicht.

...224.0.0.251... ...Es reicht also diese freizzugeben...
Diese habe ich bei sämtliche VLANs freigegeben. Reicht aber alleine nicht.
Mein iTunes Remote funktioniert ohne das mein Mac Rechner Zugriff auf mein iPhone hat.
Airplay vom iPhone auf den Samsung TV funktioniert nur wenn der Fernseher auch Zugriff auf das iPhone hat. Schalte ich diesen Zugriff aus, zeigt das iPhone zwar einen Haken beim Samsung Fernseher an als ob es verbunden ist, der Samsung zeigt aber kein Spiegelbild vom iPhone an.
Das ist reproduzierbar.

Sie teilen nicht die ganze Liste mit sondern nur sich selber via Multicasting.
Ich habe die Literatur so verstanden, dass grundsätzlich jeder Client auf Anfragen von anderen Clienten antworten könnte wenn er die Antwort kennt und seine TTL noch länger ist als die des Anfragenden. Es muss nicht immer der antworten der auch den Dienst anbietet bzw. der, der der gesuchte ist.
So hatte ich das Kapitel "Vermeidung redundanten Netzwerkverkehrs" verstanden. Kann mich aber auch täuschen. Ich sehe hier in zwei iPhones jedenfalls folgendes. Dabei ist zu beachten das der TV-Wohnzimmer schon seit über 4 Stunden aus ist. Und nur das iPhone im AllowAny VLAN listet beide TVs auf.
iphones

der einmal gelernte Geräte im Cache hält
Ja das kenne ich auch. Nur ist bei mir der TV seit 4 Stunden aus und wird immer noch angezeigt.

Nur ein einziges Mal deinen Wireshark angeschmissen... ...Multicast Gruppenadresse 224.0.0.251 mit UDP Port 5353
Wie gesagt, das habe ich in den VLANs freigegeben. Eventuell funktioniert das bei AVAHI aber über die Subnetzgrenzen hinweg dann doch anders. Wie gesagt funktioniert das mit dem iPhone im VLAN mit Allow Any tadellos egal mit welchem Accespoint es verbunden ist.
Mit dem iPhone im anderen Netz (siehe Firewall Rules am Ende) funktioniert das machmal, egal mit welchem Accespoint es verbunden ist und manchmal zeigt es mir mein Airplay (iTunes Remote) auf dem Mac mini nicht an. Dann gehe ich mit dem iPhone zum anderen Accespoint und iTunes Remote wird angezeigt. Zurück zum anderen Accespoint und es ist wieder weg.

Sowas gibt es in der IT bekanntlich nicht sondern nur im Spielcasino.
Ja grundsätzlich haste da recht. Deswegen habe ich mir versucht das Problem so herzuleiten das es eventuell daran liegt das ein anderer Client diesem iPhone iTunes Remote Dienst mitteilt und wenn dieser es mal selber nicht weis weil er aus ist, dann sieht das iPhone ihn halt nicht. Ich kann es mir nicht erklären warum es nur sporadisch geht. Setze ich dann übrigens die Rule für das VLAN auf Allow Any sind sofort alle Probleme weg. Schlagartig. Bzw. zur gleichen Zeit findet das andere iPhone den iTunes Remote Dienst.

Ich bezahle gerne dafür, dass mir jemand das Problem hier ausfindig macht und sagen kann was los ist. Aber ich habe mit Seitenweise lesen noch keine Lösung gefunden.
2021-05-27 21_49_25
Member: aqui
aqui May 28, 2021 updated at 10:25:37 (UTC)
Goto Top
Reicht aber alleine nicht.
Ist ja auch logisch, denn damit machen sich ja nur die mDNS Devices untereinander bekannt und zwar rein nur im lokalen IP Netz, niemals über Netzgrenzen hinweg. Jedenfalls nicht ohne zusätzliche Funktionen wie einen mDNS/AVAHI Proxy. Das liegt daran das diese Multicast Gruppenadresse eine Link Local Multicast IP ist, also nicht routebar und ist einzig nur in der eigenen Layer 2 Broadcast Domain relevant. Ohne einen AVAHI oder mDNS Proxy gelangen diese Infos, wie bereits gesagt, also niemals in andere IP Netzsegmente. Siehe dazu auch hier.
Ein Wireshark Trace würde dir das sofort zeigen ob diese mDNS Multicasts der Geräte auch im lokalen IP Segment zu sehen sind. Nur dann können andere Geräte drauf zugreifen. Sofern das IP Regelwerk natürlich auch stimmt.
Der Multicast dient lokal lediglich dazu allen anderen mDNS/Bonjour Geräten die Dienste und Ziel IP Adressen der mDNS Endgeräte mitzuteilen damit diese dann eine normale IP Verbindung aufbauen können. Sprich man muss natürlich im Regelwerk auch noch deren Absender- und Zieladressen bzw. Dienste Ports beachten wenn man granularer danach filtert.
Wenn du diese aus dem "Family Netz" natürlich nicht freigibst können die niemals miteinander kommunizieren. face-wink
Aber ich habe mit Seitenweise lesen noch keine Lösung gefunden.
Sniffer doch einfach mal mit dem Wireshark in deinen IP Segmenten ob dort die mDNS Multicasts ALLER Geräte untereinander sichtbar sind. Das müssen sie damit eine Diensteverbindung aufgebaut werden kann.
Member: hell.wien
hell.wien Oct 15, 2021 at 21:21:05 (UTC)
Goto Top
Was war die Lösung? Verzweifle auch mit dem Dreck