Onderstaande gaat er vanuit dat je reeds beschikt over een Linux machine welke je gebruikt om KPN internet op jouw LAN omgeving ter beschikking te stellen.
Indien je dezelfde instructies hebt gevolgd welke ik jaren terug zelf via het internet heb gevonden dan ben je in het bezit van een redelijk prijsgunstige switch met ondersteuning voor het 802.1q protocol, waarschijnlijk een Netgear GS105E Pro of de 8-poorts variant daarvan, en heb je deze vóór je router staan om de VLAN’s te splitten én distribueren. Sinds medio november 2019 levert dit een nogal vervelende melding op de iTV kastjes op en dit komt doordat deze buiten het streaming netwerk dat via VLAN-4 wordt aangeboden andere internetdiensten willen gebruiken welke KPN nu via datzelfde netwerk heeft geblokkeerd. Dit houdt in dat deze diensten nu via de normale internetconnectie moeten lopen, hetgeen inhoudt dat de iTV kastjes in ons interne netwerk zouden moeten staan. Aangezien wij reeds over een 802.1q capabele switch beschikken gaan wij dat natuurlijk niet doen ;)
Mijn hardware is een Excito B3, gebaseerd op een ARMv5te Marvell SoC met twee (echte) gigabit poorten, optionele WiFi via de PCI-e poort en twee SATA poorten waarvan een intern. Het oorspronkelijke besturingssysteem van deze machine is Debian Squeeze met een noob interface, maar ik draai Gentoo met een door mijzelf geporteerde versie van die noob interface, gewoon omdat het kan. Waarmee ik wil zeggen dat je geen extreem dikke machine nodig hebt én dat onderstaande netwerkconfiguratie betrekking heeft op netifrc en je deze dus zal moeten vertalen naar je eigen Linux smaak.
Stap 1:
Indien je ook vaste telefonie hebt via KPN en daarvoor de Experia router als VOIP interface achter de primaire switch hebt opgenomen, configureer dan de switch om VLAN-4 als "tagged” naar je router door te geven. Voor de volgende stap veronderstel ik dat je voor dezelfde poort VLAN-6 eveneens wijzigt van “untagged” naar “tagged”.
Plug anders de kabel van je glasvezelkastje over van de switch rechtstreeks naar je router machine
Stap 2:
Definieer de VLAN ID’s (netifrc)
config_eth0="null"
rc_net_eth0_provide="!net"
vlans_eth0="4 6"
# vlan voor iTV
config_eth0_4="dhcp"
dhcpcd_eth0_4="-i IPTV_RG" # bedankt @wjb
rc_net_eth0_4_provide="!net"
rc_net_eth0_4_need="net.eth0"
# vlan voor internet via PPPoE
config_eth0_6="null"
rc_net_eth0_6_provide="!net"
rc_net_eth0_6_need="net.eth0"
Verander “link_ppp0” van eth0 naar eth0.6 en herstart zowel eth0 als de ppp interface om te controleren dat je internet nu ook werkt zonder dat de switch eerst de VLAN-6 tag heeft gestript
Hint: je kunt dit ook zonder de kabel om te pluggen testen door via de ProSAFE Plus utility de betreffende poort om te zetten van “untagged” naar “tagged”.
Stap 3:
Na de herstart van eth0 zou je nu ook een interface eth0.4 moeten hebben en daar een 10.x.x.x adres op zien. Mocht je een andere dhcp client gebruiken dan DHCPCD en geen IP adres zien, dan zul je zelf moeten uitvinden hoe je de “vendor class ID” moet doorgeven (dat is dus "IPTV_RG”).
Stap 4:
Creëer een nieuw VLAN op je interne netwerk (netifrc)
vlans_eth1="1921"
# vlan voor communicatie met iTV LAN (ASCII 84 86 = "TV")
config_eth1_1921="10.84.86.254 netmask 255.255.255.0 brd 10.84.86.255"
rc_net_eth1_1921_need="net.eth1"
Stap 5:
Voeg het nieuwe VLAN ID toe aan je switch configuratie: “tagged” op de LAN poort van je router en “untagged” op de poort waar het iTV kastje moet komen.
Stap 6:
Voeg het nieuwe IP segment toe aan je DHCP server. Voor DNSmasq ziet dat er zo uit:
interface=eth1.1921
# Set range for a maximum of 5 clients
dhcp-range=eth1.1921,10.84.86.2,10.84.86.6,1h
# Set DNS servers to Google DNS
dhcp-option=eth1.1921,6,8.8.8.8
# Set default route
dhcp-option=eth1.1921,3,10.84.86.254
Controleer eventueel met een laptop of iets dergelijks of je ook echt een adres in deze range ontvangt op deze specifieke switch poort.
Stap 7:
Je kan het amper verzinnen, maar omdat het protocol voor de streaming helemaal niet gerouteerd kan worden moet je een proxy installeren. In de meeste distributies is “igmpproxy” wel te vinden. In Gentoo is deze gemaskeerd als zijnde niet helemaal hoe het netwerk zich zou moeten gedragen. Mocht het in jouw distributie helemaal niet worden aangeboden dan kan je de source hier vinden: https://github.com/pali/igmpproxy
Wijzig de inhoud van /etc/igmpproxy.conf als volgt:
##------------------------------------------------------
## Enable Quickleave mode (Sends Leave instantly)
##------------------------------------------------------
quickleave
##------------------------------------------------------
## Disabled Interfaces
##------------------------------------------------------
# real interface - no untagged traffic there
phyint eth0 disabled
# virtual WLAN ID 6 - carrier for PPPoE connection
phyint eth0.6 disabled
# internet connection
phyint ppp0 disabled
# real lan interface
phyint eth1 disabled
# do tag any other interfaces your system may contain as
# disabled as well
# ...
##------------------------------------------------------
## Downstream Interface
##------------------------------------------------------
phyint eth1.1921 downstream ratelimit 0 threshold 1
##------------------------------------------------------
## Upstream Interface
##------------------------------------------------------
phyint eth0.4 upstream ratelimit 0 threshold 1
altnet 10.84.86.0/24 # that's my local segment
altnet 213.75.0.0/16
altnet 217.166.0.0/16
Stap 8:
De volgende iptables regels moeten worden toegevoegd:
*filter
-N iTV_fwd
-N iTV_in
-A FORWARD -i eth1.1921 -j iTV_fwd
-A FORWARD -i eth0.4 -j iTV_fwd
-A INPUT -i eth0.4 -j iTV_in
-A iTV_fwd -i eth0.4 -m pkttype --pkt-type multicast -j ACCEPT
-A iTV_fwd -d 10.84.86.0/24 -i eth0.4 -j ACCEPT
-A iTV_fwd -o eth0.4 -j ACCEPT
-A iTV_fwd -o ppp0 -j ACCEPT
-A iTV_fwd -j REJECT
-A iTV_in -m pkttype --pkt-type multicast -j ACCEPT
*nat
-A POSTROUTING -s 10.84.86.0/24 -o eth0.4 -j MASQUERADE
*raw
-A PREROUTING -d 224.0.0.0/4 -i eth0.4 -p udp -m ttl --ttl-lt 7 -j ACCEPT
Stap 9:
Nog één ding te doen. Wijzig in de ProSAFE Plus utility het ID voor IGMP Snooping van ‘4’ naar ‘1921’
Sluit het iTV kastje aan en als het goed is start deze helemaal door, krijg je langer dan 10 seconden beeld en heb je ook weer een menu.