fli4l und (Entertain) IPTV mit VLANs

Intro

Dieses HowTo beschreibt mein Setup, mit dem ich den fli4l an einem Entertain Anschluss mit VDSL betreibe. Auf dem fli4l läuft ein IGMP Proxy, der für die Anbindung des Media Receivers sorgt. Der Media Receiver ist mittels eines separaten VLAN (802.1q) an den fli4l angeschlossen, um das lokale Netz vom Multicast Netz zu separieren. Zwischen fli4l und Media Receiver befindet sich ein (bzw. mehrere) Switches, die VLAN Tagging nach 802.1q unterstützen.

Der fli4l hat 2 LAN Interfaces. Eines davon wird für den Upstream verwendet und führt die VLANs 7 (PPPoE) und 8 (IPTV). Das andere führt zwei VLANs für das Heimnetz (hier VLAN ID 19) und das IPTV Netz (hier VLAN 18). Dies entspricht der Zielnetzarchitektur der Telekom. Die unterschiedliche Nummerierung habe ich absichtlich gewählt, um Verwechslungen vorzubeugen. Der Port, an dem das Heimnetz an den Switch angeschlossen ist, wird als Trunk Port konfiguriert und muss mindestens die VLANs 18 und 19 führen. Die Ports, an denen das Heimnetz bzw. der Media Receiver hängen, sind den entsprechenden VLANs (Heimnetz -> VLAN 19, IPTV Media Receiver -> VLAN 18) zugeordnet. Hier werden die zugehörigen Pakete ungetagged ausgegeben bzw. entgegen genommen.

In diesem Beispiel werden die Interfaces wie folgt verwendet: eth0 ist das interne Interface mit den VLANs 18 und 19. eth1 ist das externe Interface mit den VLANs 7 und 8. Der Internetzugang ist in diesem Fall über ein VDSL Modem Speedport 300 HS angeschlossen.

Konfiguration der VLAN Interfaces

Die VLAN Interfaces werden in der config/advanced_networking.txt konfiguriert. Dazu wird 802.1q mittels OPT_VLAN_DEV='yes' aktiviert  und anschließend die zugehörigen VLAN Interfaces konfiguriert. Der Ausschnitt aus meiner Config sieht aus wie folgt:

advanced_networking.txt
OPT_VLAN_DEV='yes'
VLAN_DEV_N='4'

VLAN_DEV_1_DEV='eth0'
VLAN_DEV_1_VID='18'
VLAN_DEV_2_DEV='eth0'
VLAN_DEV_2_VID='19'

VLAN_DEV_3_DEV='eth1'
VLAN_DEV_3_VID='7'
VLAN_DEV_4_DEV='eth1'
VLAN_DEV_4_VID='8'

Damit sind auf den Schnittstellen eth0 und eth1 jeweils zwei VLAN Interfaces aktiv.

Konfiguration der IP Netze

Damit der fli4l die entsprechenden Routen anlegt und man in der Konfiguration mit Namen statt Interface Nummern arbeiten kann, sind die Netze in der config/base.txt definiert. Hier sind zusätzliche Netze für die VLANs einzutragen. Das gilt für das externe sowie das interne Hardware Interface.

base.txt
IP_NET_N='4'
IP_NET_1='172.18.0.1/24'
IP_NET_1_DEV='eth0.18'
IP_NET_2='172.19.0.1/28'
IP_NET_2_DEV='eth0.19'

IP_NET_3='pppoe'
IP_NET_3_DEV='eth1.7'
# IP_NET_3_MAC='00:12:34:56:78:9A'

IP_NET_4='dhcp'
IP_NET_4_DEV='eth1.8'
# IP_NET_4_MAC='00:12:34:56:78:9B'

Je nachdem an was für einem DSLAM man angeschlossen ist, klappt die PPPoE Einwahl unter Umständen nicht. Das Problem liegt darin, dass für die beiden VLAN Schnittstellen die gleiche MAC-Adresse verwendet wird. Wenn das der Fall ist, müssen zwei unterschiedliche MAC-Adressen konfiguriert werden (s. auskommentierte Zeilen IP_NETx_MAC). Siehe z.B. http://wiki.ipfire.org/de/configuration/system/dial.

Konfiguration des DHCP Clients

Damit der fli4l auf dem externen IPTV Interface eine IP Adresse erhält, muss auf dem Interface mit der VLAN ID 8 ein DHCP Client laufen. Als Referenz auf das zugehörige Interface (hier eth1.8) wird hier der Name aus der config/base.txt verwendet (IP_NET_4_DEV).

dhcp_client.txt
OPT_DHCP_CLIENT='yes'
DHCP_CLIENT_TYPE='dhclient'
DHCP_CLIENT_N='1'
DHCP_CLIENT_1_IF='IP_NET_4_DEV'
DHCP_CLIENT_1_ROUTE='none'
DHCP_CLIENT_1_USEPEERDNS='no'
# DHCP_CLIENT_1_HOSTNAME=''
DHCP_CLIENT_1_STARTDELAY='0'
DHCP_CLIENT_1_WAIT='yes'

Damit wird auf dem VLAN 8 Interface eine IP Adresse per DHCP abgerufen. Diese Verbindung läuft separat neben der PPPoE Session für den eigentlichen Internetzugang.

Konfiguration des DHCP Servers

Für das interne Netz und das IPTV Netz wird ein DHCP Server aus dem opt_dns_dhcp verwendet. Für das separate Netz, in dem der Media Receiver hängt, wird ein zusätzlicher DHCP Pool  angelegt. Aus diesem Pool bezieht der Media Receiver seine IP-Adresse.

dns_dhcp.txt
DHCP_RANGE_2_NET='IP_NET_2'
DHCP_RANGE_2_START='172.19.0.4'
DHCP_RANGE_2_END='172.19.0.14'
DHCP_RANGE_2_DNS_SERVER1=''
DHCP_RANGE_2_DNS_SERVER2=''
#DHCP_RANGE_2_DNS_DOMAIN=''
DHCP_RANGE_2_NTP_SERVER=''
DHCP_RANGE_2_GATEWAY=''
Als Bezeichner für den Pool wird hier wieder die zugehörige Bezeichnung des Netztes aus der config/base.txt verwendet.

Konfiguration des (V)DSL Zugangs

In der config(dsl.txt ist lediglich ein Eintrag notwendig, um den eigentlichen Internet Zugang auf das VLAN 7 umzustellen. Statt eth1 kommt hier nun das Interface eth1.7 (VLAN ID 7) zum Einsatz. Damit wird die PPPoE Session über das VLAN 7 geführt.

dsl.txt
PPPOE_ETH='eth1.7'

Konfiguration des IGMP Proxys

Wichtig ist hier die Verwendung einer 3er Version des IGMP Proxys, da die vorherigen Versionen die Definition eines VLAN Subinterfaces nicht zulassen. In diesem Fall werden die IPTV Multicast Pakete mit der VLAN ID 18 getagged und über den Trunkport am Switch an den Media Receiver weitergegeben. Der Switch entfernt die VLAN Tags bevor die Pakete an den Media Receiver ausgegeben werden. Damit bekommt der MR "normale" Netzwerkpakete. Meine config/igmp.txt sieht aus wie folgt.

igmp_proxy.txt
OPT_IGMP_PROXY='yes'
IGMP_PROXY_DEBUG='no'
IGMP_PROXY_DEBUG2='no'
IGMP_PROXY_QUICKLEAVE_ON='yes'
IGMP_PROXY_UPLOAD_DEV='eth1.8'
IGMP_PROXY_DOWNLOAD_DEV='eth0.18'
IGMP_PROXY_ALT_N='3'
IGMP_PROXY_ALT_NET_1='239.35.0.0/16'     # IPTV streams
IGMP_PROXY_ALT_NET_2='217.0.119.0/24'    # Required for T-Home
IGMP_PROXY_ALT_NET_3='193.158.34.0/23'   # Required T-Home
# IGMP_PROXY_ALT_NET_4='172.18.0.0/24'  # address range of my IPTV-box / not any longer required
IGMP_PROXY_WLIST_N='1'
IGMP_PROXY_WLIST_NET_1='239.35.0.0/16'   # IPTV streams 
Probleme

IPTV Status offline

Mein Media Receiver meinte nach der o.g. Konfiguration in den Einstellungen, dass der IPTV Status offline sei. Ein Zugriff auf die Videothek und andere Dienste war zwar möglich. Allerdings klappte die Programmierung von Aufnahmen über das Webinterface bzw. die Android App nicht. Offenbar konnte der Media Receiver nicht mit dem Portal reden. Nach Analyse eines tcpdumps mit Wireshark konnte ein Haufen von ICMP Destination unreachable Nachrichten gefunden werden. Offenbar fehlte dem fli4l bzw. Media Receiver eine Route. Dadurch versuchte er, das Netz 193.158.34.0/23 über die default Route und den Internetzugang zu erreichen, was nicht klappte. Abhilfe schaffte in meinem Fall das manuelle Setzen einer Route in das entsprechende Netz in der config/base.txt.

base.txt
IP_ROUTE_1='193.158.34.0/23 84.164.255.254'

Damit zeigte der Media Receiver wieder einen IPTV Status verbunden an und die Programmierung von Sendungen klappt.

Siehe dazu die Diskussionen auf:

Verwendete Versionen