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:
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.
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).
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.
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.
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.
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.
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:
- http://extern.fli4l.de/fli4l_newsportal/article.php?id=204189&group=spline.fli4l
- http://www.onlinekosten.de/forum/showthread.php?t=116415&page=40
Verwendete Versionen
- fli4l: 3.9.0-rev28473-testing (Tarball Version) -> http://www.fli4l.de/download/tarball-version/aktuell.html
- opt_igmp: 3.0.0 aus der opt DB -> http://extern.fli4l.de/fli4l_opt-db3/search.pl?pid=527
- opt_advanced_networking (aus den zugehörigen Tarball Downloads) -> http://www.fli4l.de/download/tarball-version/aktuell.html
- opt_dns_dhcp (aus den zugehörigen Tarball Downloads) -> http://www.fli4l.de/download/tarball-version/aktuell.html
Related articles