Hoppa till innehåll

Sökresultat Sökningen pågår Sökresultaten dyker upp här efterhand. Du kan fortsätta skriva om du vill begränsa sökningen.
Söker efter användare
Söker efter gallerier
Sök forumtrådar
Stäng

Guide: Telia IP-TV med valfri router (ej bryggat, internt IP, Zappa fungera

Inga svar i detta ämne
  • Vänligen logga in för att kunna svara

#1

Postad 19 June 2015 - 13:49

Unregisteredc7eac6f7
  • Unregisteredc7eac6f7
  • Amatör

  • 56 inlägg
  • 0
Jag har tidigare spenderat en del tid i nedan tråd på Sweclockers efter att nyligen blivit kund hos Telia med IP-tv, men den tråden har gått från att handla om Tomato till Asus egna firmware och en bryggad lösning.
 
 
Det har dock efterfrågats i tråden om det är möjligt att få till en lösning där TV-boxen befinner sig i routerns lokala nätverk, den enda riktiga fördelen jag kan se med detta är att kunna använda t.ex Zappa-appen eller inspelningsboxs-appen (om man har en sådan). Med andra ord, den här guiden vänder sig till er som inte har eller inte vill använda Telias sk. SMART-router, eller deras Inteno-switch. I mitt fall så fick jag med Inteno-switchen, då jag inte är triple play kund hos Telia (bredband hos en ISP, TV från Telia).
Jag lyckades få till båda lösningarna, dvs bryggat och routat, med en gammal Netgear WNR2000v2 router och Tomato mini (begränsat flashutrymme). Jag körde först med en Linksys WRT54GL, men insåg snabbt att prestandan inte klarade av min 100Mbps-uppkoppling hos Bahnhoff (ca 30mbps througput WAN-till-LAN). Detta funkar betydligt bättre med Netgearen, den klarar mellan 90 och 95Mbps.
 
Det var lite bakgrunssinformation, nu kommer själva stegen som behöver tas i Tomato för att få den routade lösningen att fungera. Observera att så länge din router kan köra Tomato så kan du använda valfri router, med hänsyn till prestanda såklart, i mitt fall med Netgearen så har jag inte kört det så länge men det verkar funka. Det enda problemet jag märker just nu är att när jag t.ex kör Bredbandskollen samtidigt som TVn är igång, så börjar det hacka lite, så det är möjligt att Telias egna Thomson är kraftfullare. 
 Att få till den här routade lösningen för min del har mestadels varit av nyfikenhet.
 
Då kör vi!
 
1. Börja med att installera Tomato (Shibbys version) på din router. Jag kommer inte gå in på detta utan förutsätter att ni vet hur/redan har gjort detta, i annat fall finns det gott om info på Google :)
 
2. Konfigurera routern så att det grundläggande fungerar, t.ex Internet. 
Konfigurera sedan upp VLAN845 på routern samt taggning på WAN-porten för detta VLAN så att tv-trafiken kommer in i routern. Detta är samma steg som behövs för en bryggad lösning i grunden, så jag kommer inte gå in på det heller, men om någon frågar så ska jag göra mitt bästa att svara.
 
3. Nu börjar det specifika för den routade lösningen, vill man köra vidare bryggat så får man konfigurera Tomato så att en eller flera av LAN-portarna tillhör VLAN845 (otaggat) och kopplar in boxen på så sätt. Alternativt taggat om man har en switch med i bilden, men denna infon finns att finna i den andra tråden som är länkad ovan.
 
4. Det första steget är att det nya VLANet behöver få en IP adress, i det här fallet en publik IP från Telia, istället för boxen. Nedan kommando och tillhörande script löser detta.
 

udhcpc -i vlan845 -b -s /jffs/wan2up.sh -V TeliaSonera_VIP1113 -m
 
Det viktiga här är -i vlan845, dvs att DHCP-klienten ska efterfråga en IP på TV-vlanet, därefter -V TeliaSoner_VIP1113 som identifierar efterfrågan att komma från en Telia box. Utan detta får man ingen IP från deras DHCP-server!
Jag har fått denna infon genom vanlig hederlig sniff i Wireshark, och jag tror att detta funkar oavsett vilken box man nu har där hemma. Självklart kan ni sniffa själva om ni inte får det att funka.
Kommandot ovan kan lämpligtvis läggas in i WAN-UP scriptet under Administration->Scripts i Tomato webbgränsnitt, så att det överlever omstarter.
 
Här nedan kommer ett script som ska köras av udhcpc ovan, när en IP-adress tilldelats. Det intressanta med detta är att ingen default gateway läggs till i routing-tabellen, vilket Tomatos egna dhcp-event script annars gör.
 

#!/bin/sh
# udhcpc simple.script for Tomato dual dynamic wan
 
[ -z "$1" ] && echo "Error: should be called with parameter from udhcpc" && exit 1
 
if [ "$interface" = "vlan845" ]; then # only handle vlan2 here
 
 case "$1" in
 
   bound)
      logger vlan845 udhcpc bound request to IP "$ip" NM "$subnet" received
 
         /sbin/ifconfig $interface $ip netmask "$subnet"
            /sbin/route add -host "$router" dev "$interface"
 
               nvram set wan2_ipaddr="$ip"
                  nvram set wan2_netmask="$subnet"
                     nvram set wan2_gateway="$router"
                        nvram set wan2_get_dns="$dns"
                           nvram set wan2_server="$serverid"
                           #      nvram commit
                             ;;
 
                                       renew)
                                          logger vlan845 udhcpc RENEW request to IP "$ip" NM "$subnet" received
                                            ;;
 
                                                      deconfig)
                                                         logger vlan845 udhcpc deconfigure request receieved
 
                                                                  /sbin/ifconfig $interface 0.0.0.0
                                                                     /sbin/route del -host "$(nvram get wan2_gateway)" dev "$interface"
 
                                                                                nvram set wan2_ipaddr="0.0.0.0"
                                                                                   nvram set wan2_gateway="0.0.0.0"
                                                                                   #      nvram commit
                                                                                     ;;
 
                                                                                               *)
                                                                                                   logger vlan845 udhcpc unknown "$@" request received
                                                                                                     ;;
                                                                                                      esac
                                                                                                      fi
 
                                                                                                      exit 0
 
Det bästa är att bara copy paste, jag har sparat det på JFFS i Tomato men det går att lösa på annat sätt också. Tänk bara på att skriva rätt sökväg i udhcp-kommandot ovan om scriptet inte sparas på JFFS.
 
Startar man om routern nu så ska routingtabellen innehålla några ny routes, och kör man kommandot "ifconfig vlan845" ska där finnas en publik IP på VLANet!
 
5. Nästa steg är att ge Telias box en intern IP, vilket den får om man kopplar in den i en vanlig LAN-port på routern. Det räcker däremot inte, utan boxen identifierar sig mot Telia med ovan vendor-specific information och då svarar Telias DHCP-server med en sträng som DHCP option 45. Den svarar också med specifika DNS-servrar inom Telias IP-tv nät, som jag misstänker behövs för bl.a uppstart m.m. Jag har sniffat mig fram till detta i Wireshark också, och kommer klistra in DNSMASQ konfigurationen som behöver göras i Tomato (Under Advanced-menyn) nedan, men kan inte garantera att DHCP-optionen är samma för varje individuell box. Återigen, Wireshark är din vän i den hör lösningen :)
 

dhcp-vendorclass=set:tvbox,VIP1113
dhcp-option=tag:tvbox,43,01:05:33:2c:31:2c:33:02:05:33:2c:31:2c:33:64:01:00:0a:12:32:33:39:2e:31:36:2e:31:36:2e:32:30:32:3a:35:35:35:35:0b:01:03:0c:01:0a
dhcp-option=tag:tvbox,option:dns-server,195.67.199.39,195.67.199.40
 
Vad ovan gör är att när tv-boxen begär en IP-adress från routerns DHCP-server så kommer den identifiera sig med en speciell tagg (VIP1113), vartefter vi säger att DHCP-servern ska imitiera Telias DHCP och skicka ut option 43. Det är den strängen som kanske kan vara individuell för varje box?
Sista raden tilldelar boxen Telias DNS-servrar, utan detta fungerar det inte.
 
6. Nu har vi kommit en bra bit! Det som återstår är att konfigurera något som heter IGMProxy, som finns i Tomato, och är en proxy som hanterar multicast-strömmar och routningen av dessa.
 
6a. Aktivera IGMPProxy och kryssa för LAN (under Advanced->Firewall)
6b. Aktivera "Efficient multicast forwarding" (under Advanced->Routing) * Detta är Tomatos implementation av IGMP snooping
6c. Nu behöver IGMP-proxy konfigureras, konfigurationsfilen finns i /etc/igmp.conf men skrivs över av Tomato vid omstart, så kopiera nedan och spara t.ex i en ny fil i /jffs på routern.
 

quickleave
 phyint vlan845 upstream
  altnet 192.168.0.0/24 # Din routers lokala nät
  altnet 194.22.194.0/24
  altnet 193.44.56.0/24
  altnet 81.231.201.0/24
  altnet 78.71.84.0/24
 phyint br0 downstream ratelimit 0
 phyint eth1 disabled
 
Ovan konfiguration funkar för mig, jag kan inte garantera att den kommer funka för er men misstänker att så är fallet.
Vad man anger ovan är att vlan845 är där multicast-strömmarna (TV-nätet) kommer in, "altnet" är de nät som strömmarna skickas ifrån (ovan verkar vara samtliga) och således ska routas in till LANet, och de sista raderna säger att "br0" är det lokala nätet dit strömmarna ska routas och "eth1" (WLAN) skall inte ta del av det. Huruvida detta är nödvändigt vet jag inte, då standard konfiguration är ju att WLAN är bryggat till LANet (br0).
 
För att rätt instans av IGMPproxy och rätt konfigurationsfil skall startas har jag lagt till nedan kommandon i WAN-UP-scriptet i Tomato.
 

cp /jffs/igmp.conf /etc/igmp.alt
killall igmpproxy
igmpproxy /etc/igmp.alt
 
Koden ovan startar om IGMPproxy vid omstart, och kopierar ovan sparade konfiurationsfil från /jffs till /etc.
 
7. Nu är det strax klart! Det som återstår är att konfigurera brandväggen i Tomato så att rätt trafik tillåts komma in på vlan845, t.ex. multicast-trafiken.
 

iptables -t nat -A POSTROUTING -o vlan845 -j MASQUERADE
 
iptables -A FORWARD -i br0 -o vlan845 -j ACCEPT
iptables -A FORWARD -s 239.16.16.0/24 -i vlan845 -o br0 -j ACCEPT
iptables -A FORWARD -s 195.67.199.0/24 -i vlan845 -o br0 -j ACCEPT
iptables -A FORWARD -s 194.236.188.0/24 -i vlan845 -o br0 -j ACCEPT
iptables -A FORWARD -s 193.44.56.0/24 -i vlan845 -o br0 -j ACCEPT
iptables -A FORWARD -s 213.64.59.0/24 -i vlan845 -o br0 -j ACCEPT
iptables -A FORWARD -s 194.22.194.0/24 -i vlan845 -o br0 -j ACCEPT
iptables -A FORWARD -s 81.231.201.0/24 -i vlan845 -o br0 -j ACCEPT
iptables -A FORWARD -s 78.71.84.0/24 -i vlan845 -o br0 -j ACCEPT
 
Ovan brandväggsregler gör först och främst att trafik som går ut på VLAN845 NAT-as (med Telias publika IP-adress), därefter tillåts inkommande trafik från de nät som vi konfigurerat IGMPproxy med precis samt några nät boxen behöver kontakt med. 
 
8. Routa trafik rätt
 
Det finns ett sista steg man ska ha med i beräkningen, med ovan konfiguration är det möjligt att viss trafik (ex. unicast) från boxen kan ta vägen ut via den vanliga internetuppkopplingen. Jag ser två möjligheter till att säkra upp att så inte är fallet, att boxen uteslutet kommunicerar ut över VLAN845.
 
Alternativ 1.
Ta reda på samtliga ev. nätverk som boxen kan behöva ha åtkomst till, och lägga in dessa som statiska routes i DHCP-scriptet längst upp.
Nedan statiska routes kan läggas till i Tomatos brandväggsscript, istället för alternativ 2 nedan. Det är de näten som boxen kommunicerar med, t.ex för att ladda ner gränssnittet, kontakta DNS-servrar och streama VOD.
 

route add -net 195.67.199.0 netmask 255.255.255.0 gw $(nvram get wan2_gateway) dev $(nvram get wan2_ifname) metric 0
route add -net 194.236.188.0 netmask 255.255.255.0 gw $(nvram get wan2_gateway) dev $(nvram get wan2_ifname) metric 0
route add -net 213.64.59.0 netmask 255.255.255.0 gw $(nvram get wan2_gateway) dev $(nvram get wan2_ifname) metric 0
route add -net 194.22.194.0 netmask 255.255.255.0 gw $(nvram get wan2_gateway) dev $(nvram get wan2_ifname) metric 0
 
Alternativ 2.
Jag har använt mig av en funktion i Linux IP-tables som kallas "policy based routing". Lägg till nedan brandväggsregler så säkerställer man att bara trafik från boxen automatiskt går ut via VLAN845, dvs den kommer inte alls ha tillgång till den vanliga internetuppkopplingen.
 

ip route add default via $(nvram get wan2_gateway) dev vlan845 table 200
ip rule add from [BOXENS LAN-IP] table 200
 
Jag har funderat lite på ovan, och vet inte om det kräver mer av routern att routa på detta sätt (prestandamässigt) eller genom statiska routes till förutbestämda nät, om någon har någon åsikt eller kunskap om detta är det bara att hojta till!
 
9. Möjliggöra Play (VOD) och hyra film
 
Med reservation för att detta bara drabbar vissa routrar, versioner av Tomato eller kanske kombinationer av detta, så lägger jag till två steg till som behövs ifall ni upplever problem med t.ex Play eller hyrfilmer. I stora drag handlar det om att inte kunna starta om tv-program, spela upp med Play etc. och det beror (troligen) på att Telias servrar använder sig av port 5055, istället för 554 som är standard för RTSP, alternativt att routern inte hanterar RTSP-protokollet korrekt (Telia använder sig av RTSP för VOD/on demand). Jag har dock börjat som sagt misstänka att "felet" ligger hos Telia, och ej i routern, då vissa tester från min sida (VLC) har visat på att RTSP på korrekt port verkar fungera utan nedan work arounds.
 
Hur som helst, om detta är fallet för er så kan ni följa nedan extra steg, om ni i övrigt följt guiden och allt funkar då behövs inte nedan steg.
 
9a. Ladda ned "Netsed" (löser "IP-problemet")
Netsed finns här: Ladda ned
- Färdigkompilerat för routrar på MIPS-arkitekturen
Readme: Läs
 
Dessvärre är det snålt med information på nätet om programmet, då det egentligen används för helt andra syften än vad jag använder det till i det här fallet... läs mer om det i Readme'n som är länkad ovan.
I det här fallet så använder vi oss av programmet för att skriva om den lokala IP-adressen som boxen skickar med när den ska kommunicera med Telias VOD-servrar. Detta är något som Telias router löser på ett annat sätt.
Det görs bara en gång per session, och bara i kontrollpaketen för RTSP-protokollet som skickas mellan boxen och VOD-servern, dvs själva videon går via UDP-portar. Därmed innebär det här programmet ingen märkbar prestandaförsämring i routern, utan det körs i bakgrunden och väntar på anslutningar att vidarebefordra (och skriva om). RTSP-paketen är väldigt små och styr tex play, stop, rewind m.m.
 
1. Filen som laddas ner via ovan länk behöver inte installeras, utan det räcker att man sparar det på lämpligt ställe i routern. I mitt fall har jag en router utan lagringsutrymme, så jag kör nedan kommando i start-scripten i Tomato vilket gör att programmet laddas ner varje gång routern startar om (tar 2 sek).
 

cd /tmp
wget http://files.lancethepants.com/Binaries/netsed/mipsel/netsed%201.2%20test/netsed
chmod 755 netsed
 
2. Nu kan vi starta programmet, som kan och bör köras i bakgrunden. Nedan kommando kan läggas till även det i startscriptet
 

/tmp/netsed tcp 5000 0 0 's/[LAN-IP]/'$(nvram get wan2_ipaddr)'/o' &
 
Vi startar programmet som lyssnar efter anslutningar på TCP 5000 (valfritt), skickar vidare trafiken till VOD-servern och innan det gör det skriver det om er box lokala IP till publika IP från Telia. 
Observera, har ni fler än en TV-box är det bara att lägga till flera 's/[LAN-IP]/'$(nvram get wan2_ipaddr)'/o' efter varandra.
 
3. Sista steget är att tala om för routern att trafik port 5055 skall genom programmet innan det skickas ut på TV-nätet. Nedan kommando löser det.
 

iptables -t nat -A PREROUTING -p tcp --dport 5055 -j REDIRECT --to-port 5000
 
Detta är allt som behövs för att lösa IP-adress problemet.
Om detta löser så att ni kan titta på Play m.m. så är det bara att hoppa över nedan punkt (8b).
 
9b. Konfigurera DMZ eller automatisk portvidarebefordring
 
Det är möjligt att er router, precis som min (med Tomato), inte hanterar att videoströmmarna till boxen skickas via UDP och också därför dynamiskt behöver öppnas i brandväggen. Vissa routrar och mjukvaror löser detta automatiskt, i mitt fall fick jag lösa det med nedan brandväggsregler. Det är inte helt optimalt, men det är det bästa jag kan tänka mig och har iaf visat sig fungera tillfredställande än så länge. Återigen, troligtvis pga att Telias servrar och boxar kommunicerar på "fel" port!
 
1. En box
 
Gå in under Port forwarding -> DMZ och fyll i boxens LAN-IP (boxen måste alltså sen tidigare få samma IP-adress tilldelad via DHCP).
 
2. Två eller flera boxar (kan även användas för en box)
 

iptables -t nat -A PREROUTING -i $(nvram get wan2_ifname) -p udp --dport 1000:5554 -j TRIGGER --trigger-type dnat
iptables -t nat -A PREROUTING -i $(nvram get wan2_ifname) -p udp --dport 5556:65535 -j TRIGGER --trigger-type dnat
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 5055 -j TRIGGER --trigger-type out --trigger-proto udp --trigger-match 5055 --trigger-relate 1000-65535
iptables -I FORWARD -i $(nvram get wan2_ifname) -p udp --dport 5554:65535 -j TRIGGER --trigger-type in
iptables -I FORWARD -i $(nvram get wan2_ifname) -p udp --dport 5556:65535 -j TRIGGER --trigger-type in
 
Ovan regler utnyttjar en funktion som kallas "port trigger", enkelt beskrivet så öppnar routern en serie UDP-portar när utgående trafik upptäcks på TCP port 5055 (när en box börjar spela upp något) och det innebär att Telias VOD-server kan skicka tillbaks videoströmmen till den boxen. Portarna är sedan öppna så länge som det går trafik (en uppspelning pågår) och när det upphör så stänger routern portarna en kort stund efteråt automatiskt (10 min). Detta sker alltså dynamiskt, och lämpar sig därför om ni har fler boxar hemma.
Jag har lagt till två port-serier, för att kunna undanta UDP 5555, då den porten är den som Telia sänder vanlig TV på och ska inte vidarebefordras till någon av boxarna (IGMPproxy på routern tar hand om den). I annat fall kan man inte se på vanliga kanaler på ena boxen om man spelar upp något via VOD på den andra.
 
I själva verket behöver egentligen boxen en enda UDP-port, men den slumpas fram och vi vet inte exakt vilken port som är aktuell varje gång. Därför säger jag att lösningen inte är optimal, men den är så nära som möjligt. Det optimala vore att routern öppnar en enda, korrekt port, men tyvärr gör inte min router detta iaf.
 
10. Klart!
 
Startar man om routern nu och boxen så borde det fungera.
Jag får tillägga att ovan nät som jag konfigurerat IGMPproxy med samt öppnat i brandväggen kanske inte är alla som behövs, men jag har bläddrat runt på alla TV-kanaler och det fungerar för mig än så länge.
 
Därmed innebär det också att hela denna guiden kan bli inaktuell om/när Telia gör någon förändring, vilket då kan resultera i att något slutar att funka. Har man Telias SMART-router så styr ju dem den, t.ex med mjukvaruuppdateringar, som kommer reflektera ändringar de gör i framtiden. 
I vårt fall som kör med en egen lösning så får man helt enkelt felsöka när det inte visar sig funka längre fram. Det som t.ex skulle kunna ske är att de ändrar/lägger till nya nät som de sänder ifrån eller ändrar hur deras boxar identifierar sig och/eller vad de sänder ut för inställningar via DHCP. Allt detta kommer visserligen rätt snabbt märkas av i boxen, och jag kommer att åta mig att uppdatera guiden löpande så länge jag själv är kund hos Telia och använder lösningen själv.
 
Med ovan sagt, så vill jag också understryka att jag inte tar något ansvar för om lösningen slutar att fungera när ni minst anar det! :)
 
Det ska vara allt, jag hoppas någon får till det och att jag har skrivit ihop det någolunda förståeligt :)
Annars är det bara som sagt att fråga!
 
 
 
 
Referenser/källor:
 
 
 

Redigerat av Unregisteredc7eac6f7, 20 June 2015 - 16:11.




1 användare läser detta ämne

0 medlemmar, 1 gäster, 0 anonyma medlemmar

  • VM på nya AppleTV
    Tobbeswim
    2026-07-05 23:35:21
  • Ny 3D utskriven fjärrkontroll hållare
    nimman
    2026-06-08 07:49:07
  • Sofabaton X2
    hmarkstrom
    2026-06-07 10:02:24
  • Monterar kabelkanaler
    genstruktur
    2026-06-04 20:53:37
  • Två sittplatser men behöver två till
    genstruktur
    2026-06-04 20:51:09
  • Fler  |  Vilka bilder visas här?
Trendande produkter
Prisjakt © 2000 - 2026 Prisjakt   Cookiepolicy.   Våra regler.   Personuppgiftspolicy.  Hantera cookie-inställningar.