Docker TVHeadend - Firewall Regeln

Status
Für weitere Antworten geschlossen.

tdse

Benutzer
Mitglied seit
27. Mrz 2018
Beiträge
63
Punkte für Reaktionen
2
Punkte
8
Könnte mir bitte jemand sagen, welche Regeln ich für TVHeadend in Docker für die Firewall benötige. 9881 und 9882 zu öffnen reicht nicht aus. Vielen Dank.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.237
Punkte für Reaktionen
581
Punkte
174
Der docker Service ist per Bridge an dein Netzwerk angebunden. Der docker befindet sich im Netzwerk 172.17.0.0/16

Dies kannst du dir wie folgt anzeigen lassen:
Rich (BBCode):
brctl show
bridge        name        bridge id        STP enabled        interfaces
docker0     8000.0242141aa0a1      no                         docker843113a

Und anschließend nach docker über die ifconfig suchen:
Rich (BBCode):
ifconfig docker0
docker0     Link encap:Ethernet HWaddr 02:42:14:1A:A0:A1  
          inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0

Somit müsstest du in der Firewall auch dieses Netzwerk freigeben.

Um herauszufinden welche IP Adresse der jeweilige Container verwendet kannst du folgenden Befehl verwenden:

Rich (BBCode):
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' NAME_OF_CONTAINER

--luddi
 

tdse

Benutzer
Mitglied seit
27. Mrz 2018
Beiträge
63
Punkte für Reaktionen
2
Punkte
8
Vielen Dank für die Antwort. Nachdem docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' NAME_OF_CONTAINER keine IP geliefert hat, und ich ohne Erfolg den Bereich 172.17.0.1 :255.255.0.0 freigegeben hatte, ohne daß THHeadend funktioniert, habe ich mich erinnert, daß es sich um keine Brdige sondern host Installation handelt. Es müssen also irgendwelche anderen Ports im Spiel sein außer TCP 9981 + 9982 und TCP 1900. Noch eine Idee?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Wenn ein Container mit Network=Host läuft, dann klinkt er sich in den Namespace der Host Netzwerkkarten ein und verhält sich aus Netzwerksicht so, als wenn der Prozess direkt auf der DS läuft.

Port 9981 und 9982 sind die Ports die TVHeadend am Host-Interface bindet. Sofert eingehender Verkehr von überall auf diese beiden Ports erlaubt ist, sollte es auch gehen.
Wenn man im Router ein Portfowarding einstellt, dann sollte die Client-IP nicht durch die des Routers ersetzt werden. Wenn Du nun eine Firewall-Regel hast die bspw. nur erlaubt auf die beiden Ports aus dem lokalen Netz zuzugreifen, dann würde es Sinn ergeben warum es von aussen nicht geht.
 

tdse

Benutzer
Mitglied seit
27. Mrz 2018
Beiträge
63
Punkte für Reaktionen
2
Punkte
8
Danke. Leider bekomme ich es nicht hin. Auch im internen Netz kommen der Stream von TVHeadend nicht an. Text wie Kanal und EPG ja, Bild nein. Es müssen noch andere Ports betroffen sein. Ich habe alle Ports für die genutzten Anwendungen, IGMP, 1900 UDP und 9981 + 9982 TCP offen. Hättest Du eine Beispielkonfiguration? Danke.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Blöde Frage: Ohne Firewall funktioniert es aber?
 

tdse

Benutzer
Mitglied seit
27. Mrz 2018
Beiträge
63
Punkte für Reaktionen
2
Punkte
8
Ja einwandfrei und auch VPN und über eine externe Adresse.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
ok, dann würde mir neben der GUI-Einstellungssondierung bei den Beteiligten, was du vermutlich ja schon gemacht hast nur noch einfallen mal die offenen Ports mit netstat mit/ohne tvheadend (ohne Firewall) zu vergleichen oder den Traffik mit wireshark oder ähnlichem mitzuschneiden um zu sehen was da passiert.

Welcher Empfänger? Könnte sein, dass der Video-Stream bei aktiverter Firewall nicht vom Empfänger zu tvheadend gelangt?
 

tdse

Benutzer
Mitglied seit
27. Mrz 2018
Beiträge
63
Punkte für Reaktionen
2
Punkte
8
Empfänger sind auf meinem Laptop vlc und auf einem Apple TV die TVHeadend App. Wie gesagt, Text kommt durch, Bild und Ton nicht. Und wenn ich über die externe Adresse gehe, reicht 1 Port aus. Per reverse proxy 443 auf 9981. Und es funktioniert einwandfrei. Ich möchte noch eine zusätzliche Sicherung einbauen. Drive etc. habe ich aus dem öffentlichen Netz genommen und per VPN verbunden. Bei TVHeadend und einem stationären AppleTV ist das ohne zusätzliche Hardware leider nicht möglich. Eine Verbindung über 2 Fritzboxen ruckelt, obwohl genug Bandbreite vorhanden ist. Auf mobilen Geräten kein Problem.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Bin mir nicht sicher, ob ich deinen komprimierten Sätzen in jedem Detail folgen kann.

Geht es via Reverse Proxy von intern (eventuell mit angepasster Namensauflösung oder Ausnahme im DNS Rebind Schutz der Fritze, falls sich dein Router sperrt)?
Oder was ist der Hauptunterschied extern/intern?

Bei den Fritzboxen kannst auf OS 7.20 hoffen, dass sie ihre Hardware endlich ausreizen und die VPN Performance mal erhöhen (wenn auch immer noch erbärmlich im Vergleich zu Draytek oder anderen die VPN können. Von Wireguard ganz zu schweigen).
 

tdse

Benutzer
Mitglied seit
27. Mrz 2018
Beiträge
63
Punkte für Reaktionen
2
Punkte
8
Bei der Fritzbox schlägt der Rebind Schutz an. Ich hatte es schon im Zusammenhang mit drive gehabt. Es hängt mit ipv6 zusammen. Ich möchte diese Konfiguration (cname bzw. AAAA) nicht ändern.

Auf einer Fritzbox (Empfänger) habe ich schon die Labor installiert. Auf der Senderseite (7582) gibt es leider keine Labor und angeblich bekommt nur die 7590 eine Verbeserung bei VPN. Miit openvpn als Server auf der DS komme ich auf volle 110 mbit , was selbst für 2 x 4k Streams ausreichend wäre (G.Fast). Leider habe ich auf der anderen Seite hkeinen Empfänger, der permanent läuft nur für backups eine 2. DS.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Viele Infos in deinem Kopf die den Weg nicht zur Tastatur finden. ;)

Ja, Rebind-Schutz kann man mit Ausnahme versehen.
Man kann lokal die Namensauflösung auf Geräten anpassen (hosts Datei) oder direkt einen kleinen DNS Server aufsetzen (z.B. in der DS)
Zusammenhang mit ipv6 oder wieso du was an der cname/DNS config beim Domain-Provider ändern müsstest sehe ich nicht.

Wann FritzOS 7.20 kommt ist sowieso noch die Frage. Welche Modelle beschickt werden wird man dann sehen. Daran kranken tun eigentlich fast alle (ab dual-core CPU).
Als Workaround könnte man auch auf einer Seite ein raspi als openVPN Client hinsetzen oder ähnliches.
 

tdse

Benutzer
Mitglied seit
27. Mrz 2018
Beiträge
63
Punkte für Reaktionen
2
Punkte
8
Die 7852 mit G.Fast habe ich erst seit 2 Wochen im Einsatz. Vorher eine 7490 mit Labor und dort gab es keine Verbesserung bei VPN. Mit der 7582 kann ich IPV6 nicht abschalten. Ich hatte das Rebind Problem und eine Ausnahme für drive eingetragen. Dann funktionierte der Zugriff im lokalen Netz überhaupt nicht mehr. Irgendwo hatte ich dann gelesen, daß es mit dem dualstack IPV6 zusammen hängt. Ich habe dann AAAA records angelegt und cname durch A records ersetz (cname und AAAA geht leider nicht und der Anbieter erneuert die AAAA Adresse beim Wechsel der ip). Drive funktionierte dann wieder.

Einen Raspi könnte ich einrichten, möchte aber keinen zusätzlichen Verbraucher (Komplexität) anschließen, werde es aber mit meinem alten Raspi2B probieren, wenn ich wieder am anderen Standort bin.

Es ist das erste Mal, daß ich die Firewall einrichte, daher stochere ich iNebel.

Könnte es sein, daß es an den rtp://ip:10000 liegt? Jeder Kanal hat eine eigene IP. Ich habe IGMP freigegeben und noch den port 10:000. Aber es bringt auch nichts. Könnte es an rtp liegen? Es ist auch komisch, daß nach ein paar Minuten am Laptop mit VLC irgendein Kanal angeht, aber ein Kanalwechsel ist nicht möglich.Eigentlich sollte eine Firewall blocken oder öffnen.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Die VPN Verbesserungen komme auch erst mit 7.20, und nicht mit der 7.19-labor.
DNS-Rebind. Deshalb bevorzuge ich immer einen lokalen DNS server, das ist die saubere Lösung.
CNAME ist unabhängig vom IP Protokoll, jedenfalls prinzipiell, geht ja nur name > name. Probleme kann es geben, wenn die dort hinterlegten A/AAAA records keine öffentlichen IPs sind, je nachdem wie CLients umgehen mit den Prios und Timeouts (Normale prio kette ist ipv6 > ipv4 > nicht erreichbar).

Ich hänge noch daran, dass mit aktivierter Firewall und reverse proxy alles läuft. Sprich wenn außer dem eingehenden Port 9981 noch ausgehende beteiligt sind haben die anscheinend kein Problem den Client zu erreichen.
Deshalb habe ich nach den exakten Unterschieden gefragt zwischen intern/externem Aufruf.
 

tdse

Benutzer
Mitglied seit
27. Mrz 2018
Beiträge
63
Punkte für Reaktionen
2
Punkte
8
Ich habe rebind in der Fritzbox aktualisiert. Jetzt lande ich beim Aufruf der Seite auf der Fritzbox. Das hat mit wohl ipv6 zu tun. Ich werde dann wohl oder übel den AAAA record ändern müssen. Die Gefahr aber ist, daß ich mobil von O2 nicht mehr zugreifen kann, wenn der A record nicht aktualisiert wird. Ich kann nicht gleichzeitig dyndns für AAAA und einen cname einrichten. Ich muß dann einen A record nehmen. Da mein Provider die ips nur sehr sporadisch wechselt, weiß ih nicht, ob die ipv4 Adresse später aktualisiert wird.

Wenn ich auf der DS einenDSN-Server einrichte, wie verhält es sich mit dem Gastnetz? Wird das durch die Fritzbox oder den DNS-Server gemanaged?
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Ein cname ist ja z.B. "sub.example.com IN CNAME dyn.anbieter.de".
Für sub.example.com macht es keinen Sinn einen CNAME zu setzen und ein A-record. Deshalb ist das nicht erlaubt.
dyn.anbieter.de kann aber A/AAAA oder einen von beiden enthalten. Und damit ist dann auch sub.example.com mit allen IP-records die sich hinter dyn.anbieter.de verstecken assoziiert.
Dann hängt es nur davon ab das die dortigen IP-records sauber aktualisiert werden mit öffentlich erreichbaren IPs. Ob das A oder AAAA oder beides ist ist egal, Hauptsache der Client spricht beide oder das jeweilige verfügbare Protokoll.

Bei IPv6 musst du entweder den dynDNS Client auf dem Zielgerät laufen lassen (der die aktuelle IPv6 des Gerätes kennt) oder wenn du dynDNS weiter über den Router laufen lassen willst einen Dienst benutzen der die Präfix-Aktualisierung unterstützt. Beispiele sind myfritz oder dynv6.com, gibt sicher auch noch andere. Bei der IPv6 Aktualisierung an deinem Anschluß ändert sich nämlich normal nur der Präfix den die Fritzbox zur Verteilung im lokalen Netz bekommt. Der Host-ID Teil der IPv6 (die hintere Hälfte) ändert sich nicht.

Der DNS Server auf der DS kann nur das LAN verwalten, das Gastnetz ist ja prinzipbedingt ein abgetrenntes Netz. Die Fritzbox verwaltet das Gastnetz auch weiterhin selbst.
 

tdse

Benutzer
Mitglied seit
27. Mrz 2018
Beiträge
63
Punkte für Reaktionen
2
Punkte
8
Ich habe jetzt einen dynamischen ipv6 AAAA record und einem normalen ipv4 record bei meinem Anbieter erstellt. Ohne firewall kann ich einwandfrei TV mit TVHeadend schauen. Ich habe jetzt nur ein Zertifikatsproblem, weil mein Standardzertifikat die entsprechende subdomain nicht enthält, aber das läßt sich lösen.
Testweise habe ich In der firewall für VPN nur den port 443 freigegeben und die LAN 1 Regel lautet: Die beötigten ports aller apps offen, 9981, 9982, 10000 und IGMP offen.
Ich kann per VPN und über die domain tv.example.com ohne Probleme TV schauen. Wenn ich zurück ins WLAN gehe, geht nichts mehr. Das ist sehr seltsam.

Nochmal zum Thema records:
Wenn ich cname benutze, dann kann ich doch z. B. mit de.example.com mit Fritzbox dyndns in D und at.example.com mit einer Fritzbox in A verbinden. Wenn ich nun einen A und einen AAAA record für example.com anlege wie kommt dann die Aktualisierung zustande? Ich habe einen Domainanbieter, der dyndns direkt anbietet, d. h. ich gebe bei dyndns de.example.com mit meiner aktuellen ipv6 ein und der Anbieter erstellt einen AAAA record mit de.example.com und er (so hoffe ich) aktualisiert dann automatisch. Außerdem habe ich einen „dynamischen“ A record example.com mit meiner aktuellen ipv4 eingegeben in der Hoffnung, daß auch alle anderen A records (ich habe für jede subdomain einen A record angelegt). Zusätzlich habe ich für jede subdomain einen eigenen dyndns AAAA record angelegt (also z. B. drive.example.com zeigt auf die ipv6 der DS, file.example.com auf die ipv6 der DS, test.example.com zeigt auf die virtuelle DS, etc.). Diesen Teil ändere ich gerade mit der VPN Verbindung via openvpn Server.

Hier gibt es viel zu lernen.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Ein CNAME ist wie ein Verweis oder Alias. Bsp.
de.example.com IN CNAME at.example.com >>> Wenn jemand bei deinem Domain-Provider bzw. dessen Nameserver nach de.example.com fragt >>> gib ihm die IP-Records die unter at.example.com eingetragen sind als Antwort.

Wenn du (sub).example.com als dynDNS fähige Domain bei deinem Anbieter konfigurierst gibst du im Normalfall erst mal gar keine Records vor.
Diese trägt ein dynDNS Client dann dort ein.
Wenn du A/AAAA-Records vorgibst, dann bleiben diese auf diesen Vorgaben stehen BIS ein dynDNS-Client neu IPs für diese Records anliefert.
Der Anbieter alleine kann da gar nichts aktualisieren, weil er ja nicht weiß was bei dir am Anschluß los ist.
Der Anbieter ist nur dafür da das "aktuelle Telefonbuch" bereitzustellen.
Für den aktuellen Inhalt musst du selbst bzw. deine dynDNS Clients sorgen.

Bei IPv4 war es kein Problem, dass dies nur der Router gemacht hat, weil sich ja per NAT alle Maschinen im LAN hinter der IPv4 des Routers verborgen haben.
Bei IPv6 bekommen sie jetzt aber öffentliche IPv6 Adressen und sind direkt (ohne NAT) erreichbar, wenn die Router Firewall die Ports geöffnet hat.
Die Ziel-Maschine kennt ihre aktuelle IPv4/IPv6 und kann diese per dynDNS Client aktualisieren.
Will man beim Router für diese Funktion bleiben muss dieser und der Anbieter die Präfix Aktualisierung unterstützen (also eine Art Stellvertreter-Aktualisierung).
Hier liest der Router nicht einfach seine IP aus bzw. die des Zielgerätes, sondern setzt diese aus Kenntnis des Präfix welches er vom Anbieter für seine LAN-Clients bekommen hat mit der Host-ID des Zieles zu einer IPv6 zusammen. Diese wird beim dynDNS Anbieter eingetragen. Jedes Mal wenn der Router jetzt ein neues Präfix bekommt ändert er nur diesen Teil der IPv6 Adresse beim Anbieter ab.

Wo der CNAME eben besonders interessant wird ist, wenn du mehrere Domains hast die auf die selbe Maschine laufen sollen, also auf die identische IPv4/IPv6.
Dann richtet man eine dynDNS.example.com ein und aktualisiert die A/AAAA records mit einem dynDNS Client.
Dann richtet man CNAME records ein für sub1.example.com, sub2.example.com, sub3.example.com .... subX.example.com deren CNAME Ziel bei ALLEN auf dynDNS.example.com lautet.
Damit zeigen alle diese Domains auf die aktuellen IPs die sich hinter dynDNS.example.com verbergen.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.135
Punkte für Reaktionen
898
Punkte
424
Für deinen WLAN Test wäre jetzt der einfachste Fall, dass du im Client PC (funktioniert ähnlich, egal ob OSX, Windows oder Linux) eine feste Namensauflösung in die hosts Datei einträgst (praktisch ein händischer DNS server für Arme, der aber nur auf dem jeweiligen Client funktioniert).
Da steht dann etwas drin ala "tv.example.com 192.168.178.40", also eine Namens-IP Zuordnung fürs lokale Netz.
Danach den Rechner mal neu starten und tv.example.com probieren (das geht dann NUR im LAN/WLAN oder VPN, direkt von extern muss das natürlich dann Fehler werfen, weil private IPs dort nicht erreichbar sind / geroutet werden).
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.002
Punkte für Reaktionen
2.697
Punkte
423
[Diplschiss] Wenn schon, dann "192.168.178.40 tv.example.com" [/Diplschiss] ;)
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat