Openwrt与IPTV之一----igmpproxy

时间:2024-03-02 14:47:54

装了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和机顶盒之间,机顶盒的功能不受任何影响。