IGMP Proxy auf UniFi Security Gateway (USG) konfigurieren für TV7 (Init7)

IGMP Proxy auf UniFi Security Gateway (USG) konfigurieren für TV7 (Init7)

Init7_TV7

Init7 zeigt sich sehr grosszügig! Am 22.Mai habe ich von Init7 eine EMail bekommen mit folgendem Absatz:

Heute überraschen wir Sie mit einem telegenen Geschenk: Als Fiber7-Abonnent erhalten Sie jetzt zusätzlich unser Fernsehpaket TV7 kostenlos dazu.

Ich war erstaunt über dieses E-Mail und habe mich gefreut das Init7 nun TV7 für alle Fiber7 Kunden Gratis zur Verfügung stellt.

Das TV7 Angebot von Init7 nutzt Multicast. Die Multicast-Technologie erlaubt ein verzögerungsfreies empfangen des TV-Signals. Was dies bedeutet, könnt ihr hier genauer nachlesen: TV7 - Technisch voraus

Hardware Voraussetzungen

  • IGMP Proxy und Multicast fähige/r Firewall/Router/Switch(es)
  • IGMP Snooping aktiviert im Netzwerk (Weiss nicht ob dies zwingend der Fall sein muss.)

Meine Netzwerktopolgie:

Um TV7 zu testen habe ich mein Macbook wie folgt angeschlossen:

OTO-Steckdose
⤷ Gigabit Ethernet Media Converter
   ⤷ USG Firewall
      ⤷ UniFi Switch 8 POE
         ⤷ MacBook (via Ethernetkabel)

TV7 wie anschauen ohne Apple TV?

Ich teste TV7 auf meinem Macbook mit Ethernetkabel direkt am UniFi Switch. Dazu nutzte ich die Möglichkeit via VLC TV7 zu empfangen. Siehe: Kann ich TV7 auch auf anderen Geräten als Apple TV anschauen?

UniFi Security Gateway (USG) und Multicast mit IGMP Proxy

Mit folgenden Schritten habe ich bei mir TV7 zum laufen gebracht:

  • Firewall Gruppe
  • Firewall Regel für WAN_IN
  • Firewall Regel für WAN_LOCAL
  • IGMP Snooping aktivieren
  • IGMP Proxy Konfiguration

Firewall

Die Firewall Einstellungen können via UniFi Controller Weboberfläche vorgenommen werden.

Firewall: Gruppe erstellen

Unter Einstellungen->Routing & Firewall, dann Tab Firewall->Gruppe anklicken:
Neue Gruppe erstellen anklicken und folgendes eintragen:
TV7-Firewall_Group

Netzwerke:

224.0.0.0/4     # Multicast Netzwerk (siehe Wikiartikel in den Quellen)
77.109.128.0/19 # Init7 Netzwerk

Firewallregel für WAN_IN

Unter Einstellungen->Routing & Firewall ==> Firewall->Rules IPv4->WAN_IN:
Neue Regel erstellen anklicken und folgendes eintragen:
TV7_Firewall_Rule-WAN_IN

Unter Quelle (Source) wählt ihr die vorher erstellte Gruppe aus.

Firewallregel für WAN_LOCAL

Unter Einstellungen->Routing & Firewall ==> Firewall->Rules IPv4->WAN_LOCAL:
Neue Regel erstellen anklicken und folgendes eintragen:
TV7_Firewall_Rule-WAN_LOCAL

Unter Ziel (Destination) wählt ihr die vorher erstellte Gruppe aus.

IGMP Snooping

IGMP Snooping sollte auf dem LAN Netzwerk eingeschalten sein.

Unter Einstellungen->Netzwerke, dann Netzwerk wählen und Enable IGMP Snooping aktivieren:
USG_IGMP_Snooping
Speichern nicht vergessen.

IGMP Proxy auf der USG konfigurieren

Konfiguration via config.gateway.json Datei

Standard Pfad ist bei mir /usr/lib/unifi/data/sites/default/config.gateway.json.
Falls es die Datei nicht gibt, müsst ihr diese anlegen.
Mehr Informationen => UniFi - Advanced USG Configuration

eth0 => WAN Interface
eth1 => LAN Interface (alt-subnet ist das LAN Netzwerk)

{
  "protocols": {
    "igmp-proxy": {
      "interface": {
        "eth0": {
          "alt-subnet": [
            "224.0.0.0/4",
            "77.109.128.0/19"
          ],
          "role": "upstream",
          "threshold": "1",
          "whitelist": [
            "239.0.0.0/8"
          ]
        },
        "eth1": {
          "alt-subnet": [
            "192.168.xxx.0/24"
          ],
          "role": "downstream",
          "threshold": "1"
        }
      }
    }
  }
}

Um die Konfiguration nun auf die USG zu bringen, müsst ihr die USG manuell Provisionieren.

Manuelle Konfiguration via CLI über SSH

Ihr könnt die manuelle Konfiguration auch via CLI über SSH ausführen. Jedoch sind nach jeder Provisionisierung die Einstellungen wieder weg. Die Konfiguration ist so also nicht persistent. Dies eignet sich am besten um die IGMP Proxy Einstellungen zu testen.

eth0 => WAN Interface
eth1 => LAN Interface (alt-subnet ist das LAN Netzwerk)

# Via SSH auf die USG verbinden:
ssh <username>@<IP-USG>

$ configure
# edit protocols igmp-proxy
# set interface eth0 role upstream
# set interface eth1 role downstream
# set interface eth0 alt-subnet 224.0.0.0/4
# set interface eth0 alt-subnet 77.109.129.16/32
# set interface eth0 whitelist 239.0.0.0/8
# set interface eth1 alt-subnet 192.168.xxx.0/24
# set interface eth0 threshold 1
# set interface eth1 threshold 1
# show interface eth0
# show interface eth1
# commit
# save
# exit
$ restart igmp-proxy

IGMP Proxy Einstellungen in der Boot Konfiguration überprüfen:

grep -A20 "igmp-proxy" /config/config.boot

IGMP Proxy testen

Via SSH auf die USG verbinden::

ssh <username>@<IP-USG>

Testen ob der IGMP Proxy läuft:

$ ps -ef | grep igmpproxy
root     31501     1  0 10:31 ?        00:00:00 /sbin/igmpproxy /etc/igmpproxy.conf

Aktuelle Statistiken/Information vom IGMP Proxy anschauen:

$ show ip multicast mfc
$ show ip multicast interfaces

TV7 und WLAN?

Multicast über WLAN? Nicht unbedingt eine gute Idee!

Multicast über WLAN funktioniert unter Umständen nicht richtig. Es kann jedoch möglich sein das es doch geht mit moderneren Access Points.

Mehr Informationen zum Thema Multicast und WLAN (in Englisch):

Es gibt Personen die berichten das es gut funktioniert mit UniFi AP Pro in geringer Distanz. Ihr solltet dann jedoch die WLAN Multicast Enhancement aktivieren:
Unter Einstellungen->Wireless Netzwerke, WLAN Netzwerk wählen und die Option Enable multicast enhancement (IGMPv3) aktivieren:

TV_WLAN_IGMPv3

Und es geht doch? Multicast zu http mit updxy iptv stream relay

Dieser Tweet beschreibt wie boessiCH den Multicast Traffic mittels udpxy umleitet an HTTP Clients.

Was macht udpxy?

udpxy is a UDP-to-HTTP multicast traffic relay daemon

Link zu udpxy IPTV Stream Relay

Meta

Ich bin kein Experte was Multicast und die IGMP Proxy Konfiguration anbelangt. Ich bin bin mir z.B. nicht wirklich sicher was die IGMP Proxy Konfiguration der alt-subnets betrifft.
Falls euch etwas auffält das man besser/anders konfigurieren könnte, schreibt mir das in den Kommentaren.

Quellen