裝了IPTV,設備是一個cable modem和一個IPTV STB. 前者把HFC變成普通的以太網,后者負責解碼和播放。
本着有RJ45的設備,都插電腦抓抓包的習慣,發現直播是基於組播的,協議用的是RTP。
全能播放器VLC出馬,輸入對應地址,果然在電腦可以播放。
更有趣的是,收費台的鑒權是在機頂盒完成的,用電腦直接訪問地址的話,播放毫無壓力。
於是,一個通過openwrt+igmpproxy+udpxy+xupnpd+dlna的方案被研究出來,實現了原機頂盒不受影響,電視通過DLNA功能也能看包括收費台的全部節目,電腦通過內網,還能看運營商提供的網絡直播和回看,基本實現了電視劇和球賽兼得。
先說說igmpproxy,顧名思義實現igmpproxy協議的代理~
這個軟件在openwrt官方源是有的,直接安裝即可,但配置上比較講究。
配置文件在/etc/config/igmpproxy
config igmpproxy option quickleave 1//使能quickleave config phyint option network eth0.1//上行端口,也就是路由要連接modem,具體數字因人而異 option direction upstream//配置為上行端口 list altnet 192.168.56.0/24//允許的地址。這個地址要通過wireshark抓包查看。這個地方不是寫組播地址,而是組播服務器的地址。 config phyint option network br-lan//下行端口的名稱,這里我在vlan分配了兩個物理端口,並配成橋連。 option direction downstream//配置為下行端口
自此igmpproxy就配完了,條目不多,但每個都要搞清楚。
下面是對應的防火牆配置
//允許IGMP數據包入站 config rule option target 'ACCEPT' option src 'wan' option name 'Allow-IGMP' option proto 'IGMP'
//允許udp數據入站 config rule option target 'ACCEPT' option src 'wan' option proto 'udp' option name 'Allow-UDP-igmpproxy' option family 'ipv4' option dest 'lan' option dest_ip '224.0.0.0/4'
防火牆除了目標區域和組播地址,不清楚功能的情況下,盡量不要改動別的參數,這里的目標地址以及包括了全部組播地址。
完成配置后,路由器應該能串聯在modem和機頂盒之間,機頂盒的功能不受任何影響。