组播转单播
快过年,总会在一些论坛上看人们把求IPTV的直播地址,实际上,运营商赠送的光猫里面的IPTV链路,就算是没有机顶盒也是可以看的。怎么确认呢?
登录你的光猫,不一定非要Admin权限,user权限也可以。如果在“状态—网络信息”中看到有3-4条信息,其中有一条IPTV开头的链接,或者是OTHER的链接就代表运营商给你IPTV链路啦。
下面我们想办法把这个组播数据弄出来。提前声明,这个数据在有些地区的运营商的认证方式不太一样,我这个只是只用于移动联通等运营商提供的组播数据没有进行认证的方法。而在天津地区,电信的IPTV认证是需要机顶盒的SN来进行拨号认证的。这个虽然有办法转到路由器中实现,但是由于我没有电信线路暂时不知道怎么搞。联通的移动都是直接给的前面那张图的vlan。
先验证一下是否有IPTV端口是否绑定光猫4个LAN口中的一个,使用电脑有线网卡连接到四个LAN口中的一个,有的光猫上标识了IPTV口,搜索一下你所在地区的IPTV的组播地址,比如说有人总结的北京联通的这个地址,
https://github.com/qwerttvv/Beijing-IPTV/blob/master/IPTV-Unicom-Multicast.m3u
这一步是为了方便那些没有的超级管理员密码的朋友,如果的运营商是北京联通,那么使用vlc打开网络串流rtp://239.3.1.241:8000
如果可以看,那么恭喜你剩下的就简单多了。其他地区的请使用相应的搜索词,“组播 IPTV 地区”看看有没有网友给你提供。
如果没有人提供也没关系,可以用我这个扫描软件来试试看你的网络里面有没有组播包。
我的github页面有一个修改版的iptvscan软件。下载后编译使用。可以在x86和arm下编译使用。
https://github.com/eastwoodnet/iptv_channel_scanner_linux
原理:
构造igmp包,然后使用libpcap抓包,获取组播地址和端口。
to compile it:
$ g++ -g -o iptvscanner iptvscanner.cpp -lpcap
usage:
$sudo ./iptvscanner "interfacename" 225.1.1.1 239.3.1.254 > list.txt```
e.g
$sudo ./iptvscanner eth0 225.1.1.1 225.2.1.1 > iptv.txt
注意组播地址的选择范围,建议不要一次性设太多,可以20个20个的设定,然后得到的iptv.txt内容应该就是你的与你运营商提供的地址。同样用vlc打开这些组播地址观看。安卓盒子之类的可以安装tvbox之类的软件,使用自定义频道的方式来添加这些地址。理论上讲,要是能看IPTV的话,这里就可以结束了。但是如果运营商的频道调整了,每次都要在设备上重新数据地址也是麻烦,所以要做到只更新一个文件就可以让整个局域网都能看才行。
组播igmp包都是基于udp的包,可能会造成你的网络性能下降。建议专程单播进行观看,方法如如下。
openwrt的主路由中安装omcproxy和udpxy,xupnpd这三款软件。首先设定你的openwrt路由器上的接口。
- 单线实现pppoe和iptv的方法。-
如果openwrt路由器的wan口已经建立拨号了,那么再新建一个接口。依然使用这个网口,然后配置一个静态I P地址跟光猫的地址是同一个网段。注意路由器和光猫的IP地址不要再一个网段。防火墙跟wan口划到一起。关键点,网关跃点设置为10或者20。这让才能让网络优先走pppoe。整体接口配置如下。
config interface 'IPTV'
option proto 'static'
option netmask '255.255.255.0'
option delegate '0'
option ipaddr '192.168.0.2'
option gateway '192.168.0.1'
option metric '20'
option device 'eth1'
然后配置omcproxy
config proxy
option uplink IPTV
list downlink lan
选用omcproxy的目的是这个软件应该会自动房型wan口的igmp包,
然后是udpxy,
config udpxy
option disabled '0'
option respawn '1'
option verbose '0'
option status '1'
option port '4022'
option bind 'br-lan'
option source 'eth1'
option max_clients '5'
option buffer_size '102400'
如果你用了igmpproxy,防火墙没有放行,需要在防火墙上添加一条规则。
这一系列做完,你是应该可以在,http://IP:4022/status看到如下状态的。
最后是xupnpd这个软件的作用是dlna功能分享你做好的播放列表到局域网,让所有支持的播放器能够通过dlna的功能读取到播放列表。扫描到的rtp:地址,增加的路由器的ip并添加http地址后生成一个m3u列表。这个其实可以直接抄作业。或者你扫描到的有一些网站可以提供转换列表服务,并增加台标等操作,懒得自己做直接找网友做好的即可。然后打开http://IP:4044/ui/playlists上传你的m3u。
打开你的播放器,找到upnp或者dlna这个选项,机会看到播放列表啦。
- 如果不幸的,你的光猫绑定了iptv的lan口。那么你只能在路由器上插入两根网线分别用于拨号和iptv了。网卡设定上差不多。只不过单独给一个网口进行iptv的设定。注意跃点设置。稍微特殊一点的就是防火墙这里的设定。按照下图方法设定。-
如果你能够获取光猫的超级管理员权限。那么把光猫的IPTV口的绑定从端口中取消,也是可以做成单线。路由器会节省一个网口的占用。