fredag 4 april 2014

Telia IPTV med egen DHCP

Problemet

Jag har ett Telia Smart abonnemang där det ingår en Techicolor Gateway TG799vn v2 router.
Under en tid så har jag märkt att internettrafik har varit trög och ofta gett mig timeout på sidor och tjänster.
Efter lite testande så upptäckte jag att om jag gick direkt på IP address i stället för hostname så gick allt mycket bättre. Det var problem med DNS med andra ord. Samma bekräftades av utvecklingskonsollen i Google Chrome, det enda som det väntades på var DNS uppslag.

Sagt och gjort, jag satte upp en Beagle Bone Black med dnsmasq som DHCP och DNS server i Debian.
Som DNS forward använde jag en DNS från Google, med ip 8.8.8.8.
Stänga av DHCP i routern var enkelt att göra men ohyggligt svårt att hitta (Hemmanätverk -> Gränssnitt -> LocalNetwork )
I och med att jag körde min egen DHCP också så fick jag äntligen även kontroll på detta, en simpel bonus.

"Det var alltså nu problemen började"


När jag var klar och satte mig för att rensa hjärnan framför TV:n fick jag en smärre chock. Boxen, en Motorola VIP 1003, kunde inte hitta tjänsten. Efter som jag har IPTV via Telia som kopplar upp sig genom min router och det nu inte funkade när det enda jag gjort var att byta DNS och DHCP så insåg jag att routern gjorde något mera. Det var alltså nu problemen började.
Efter att ha Googlat ( man är sällan ensam om problem med Telia ) så hittade jag lite länkar här och var men de flesta handlade om problem med en äldre typ av Tripple-Play modem där TV-Boxen var tvungen att sitta i ett visst uttag på router och det gick inte att använda samma kablage som för övriga internet om man hade ett litet större nätverk hemma. Det problemet hade inte jag, min router kräver inte separata VLAN för internet och TV.
Efter en snabb test genom att stänga av dnsmasq och återaktivera DHCP i routern så insåg jag att här var en hund begraven. Några av mina tidigare Google träffar nämnde något om vendor-options (option 43) i DHCP.
Så... Wireshark och sniffa paket.
DHCP är ett ganska simpelt protokoll att förstå så jag hade en del förhoppningar om att kunna se vad som hände i alla fall.

Nu för att kunna sniffa nätverkspaket idag med switchar överallt så är det lite svårare än på den gamla goda tiden när alla hade hubbar. En switch skickar inte vidare nätverkspaket till portar som inte har den mottagande MAC adressen från nätverkskortet som ska ta emot. För att kunna göra detta så krävs att du har en switch som stödjer något som kalla port-mirroring. Du behöver alltså en switch som är konfigureringsbar och stödjer detta, det duger inte med vad som helst.
Jag använde en Netgear Prosafe GS108PE.

Jag kopplade in TV-Boxen på Port 5 i switchen och Port 8 till datorn. I switchens konfiguration hade jag ställt in så att all trafik på port 5 skulle även skickas till port 8 förutom dit det egentligen skulle. Den speglar alltså port 5 till 8. I en av de andra portarna satte jag Telias router.
På datorn så startade jag wireshark och filtrerade så att jag bara såg trafik med TV-Boxens MAC adress (som står på en etikett på undersidan).
Därefter så satte jag i strömmen till TV-Boxen och efter några sekunder så hade jag de få paket som DHCP sekvensen utgör. Sedan gjorde jag samma sak fast med dnsmasq aktiverat och DHCP i routern avstängt.


Jag hade tydligen missat något!

Lösningen

Allt här får du göra på egen risk. Det funkar för mig men det kanske gör din TV-Box till skrot, vad vet jag.

Efter att ha analyserat DHCP loggarna så såg jag något som jag läst om i de tidigare sökningarna. Boxen identiferar sig med en vendor-class (option 60). Man kunde tydligt se...
Vendor class identifier: TeliaSonera_VIP1003
Ok. Det är så man indentifierar just den här modellen av TV-Box. Nu till nästa steg, vad ska man skicka tillbaka. Om man tittar på vad routern svara i sin "DHCP Offer" så hittar man följande som inte skickas tillbaka av dnsmasq också.
Option: (43) Vendor-Specific Information
Denna extra information som dnsmasq inte ännu svarade med var 152 byte långt och av det som man kan läsa i klartext bl.a.
/tftpboot/spl/tftpboot/kreatel-kernel
Detta plus några IP adresser som boxen tydligen behöver skickas som svar.
Det här går att fixa...
Följande lilla text lades till i configen för dnsmasq

#matcha "VIP1003" i vendor-class-strängen och om det hittas så tagga med tvbox.
dhcp-vendorclass=set:tvbox,VIP1003

#om taggat med tvbox så svara med option 43 och en massa data
dhcp-option=tag:tvbox,43,xx:xx:xx:xx:xx.....

#för den här boxens MAC lås den till 192.168.1.110 (frivilligt)
dhcp-host=00:02:9b:xx:xx:xx,192.168.1.110,infinite

Efter detta så startade jag om dnsmasq och därefter TV-Boxen och tada!!!!
Vad just din vendor-class-identifier är och framför allt vilken data du ska svara med får du ta reda på själv. Det skulle kunna vara individuellt för varje typ av router och det ändras förmodligen ibland när Telia uppdaterar routern så jag tänker inte skriva det här... Tyvärr.

Om det inte funkar så kolla svaret från dnsmasq med Wireshark så att du får exakt rätt, varenda byte.



3 kommentarer:

  1. Hej!
    Jag har delvis använt din bloggpost för att lösa en helt routad lösning (likt Telias Thomson router) med en egen router med custom mjukvara.
    Jag har kommit rätt långt, det mesta funkar, men när jag läser vad du skrivit så menar du på att DHCP-option 43 skickar med bl.a tftp-boot och lite IP-adresser?
    Jag har ingen sk Smart router att snifffa på, utan har sniffat på DHCP-paketen direkt i Inteno-switchen som Telia skickar till boxen, och i DHCP-option 43 finns inte något läsbart mer än en radda xx:xx:xx sträng.
    Du skulle inte kunna tänka dig att publicera hela strängen som du får från Smart-routern, så att jag kan jämföra med den direkt från Telias DHCP i TV-nätet?

    SvaraRadera
  2. Hej!
    Jag har delvis använt din bloggpost för att lösa en helt routad lösning (likt Telias Thomson router) med en egen router med custom mjukvara.
    Jag har kommit rätt långt, det mesta funkar, men när jag läser vad du skrivit så menar du på att DHCP-option 43 skickar med bl.a tftp-boot och lite IP-adresser?
    Jag har ingen sk Smart router att snifffa på, utan har sniffat på DHCP-paketen direkt i Inteno-switchen som Telia skickar till boxen, och i DHCP-option 43 finns inte något läsbart mer än en radda xx:xx:xx sträng.
    Du skulle inte kunna tänka dig att publicera hela strängen som du får från Smart-routern, så att jag kan jämföra med den direkt från Telias DHCP i TV-nätet?

    SvaraRadera
  3. Om du ger mig din email på crippledcanary(alfaslang)gmail(punkt)com så ska du få filen och min dnsmasq data.
    Men håll inte mig ansvarig om din box blir skrot.

    SvaraRadera