家里存有一个处于闲置状态的联通IPTV,一直心心念念想着拿来加以利用一番,可总是抽不出时间来,恰好借着周末的时间进行一番处理,思路算得上是明晰无误的,也就是借助openwrt来安装udpxy程序以此达成组播至单http流的转发目的。未曾想到最为耗费时间的竟然是抓包并整理频道清单这件事。
1.硬件准备
先是要刷机,从家里翻找出一个放那落灰的Netgear WNDR4300,上次刷机那都已经是好几年之前的事了,如今打算给它刷一个OpenWRT 22.03.7,首先得去网站下载相应的刷机包,WNDR4300在19.07之前对应的架构名是xr71xx,21.02以后就改名为ath79了,要到下面的路径去下载。
https://archive.openwrt.org/releases/22.03.7/targets/ath79/nand/openwrt-22.03.7-ath79-nand-netgear_wndr4300-squashfs-factory.img
进而寻觅一个卡针,前往路由器背面的reset孔处,按住之后再进行通电开机操作,等候橙色灯闪烁完毕便可,如果无果,那就再次关机并重新来上一回,我是尝试了2次方才好用。
紧跟着拿笔记本直接连接lan口,对其进行ip配置为192.168.1.2,在命令行中执行ping 192.168.1.1的操作,要是通了,那就表明成功了。
然后前往控制面板,在添加删除程序当中,去启用Windows组件,也就是TFTP客户端。
开启cmd,进入到openwrt – 22.03.7 – ath79 – nand – netgear_wndr4300 – squashfs – factory.img这个目录。
执行下面指令,继续等待几分钟
1
tftp -i 192.168.1.1 put openwrt-22.03.7-ath79-nand-netgear_wndr4300-squashfs-factory.img
等到192.168.1.1能继续ping通了继续下一步。
2.安装udpxy和必要服务
对于 WAN 口而言,首先要随意连接到能够实现上网功能的局域网之内,这是由于存在这样一种情况,即假设后续要连接到 IPTV 口上,那么此时 Openwrt 便无法进行上网操作了,所以才要先这样连接。
先ssh登录到Openwrt路由器中,执行以下命令
1
2
opkg update
opkg install udpxy igmpproxy
配置igmpproxy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
vi /etc/config/igmpproxy
config igmpproxy
option quickleave 1
config phyint
option interface wan
option direction upstream
list altnet 0.0.0.0/0
config phyint
option interface lan
option direction downstream
list altnet 0.0.0.0/0
启用并启动igmpproxy服务
1
2
/etc/init.d/igmpproxy enable
/etc/init.d/igmpproxy start
配置udpxy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
vi /etc/init.d/udpxy
#!/bin/sh /etc/rc.common
START=90
STOP=10
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command /usr/bin/udpxy
-p 8080
-m eth0.2
-c 5
-B 16384
-S
procd_set_param netdev eth0.2
procd_set_param respawn
procd_close_instance
}
启用并启动udpxy服务
1
2
3
chmod +x /etc/init.d/udpxy
/etc/init.d/udpxy enable
/etc/init.d/udpxy start
3.网络结构
此文借由旁路途径接入IPTV视频流服务,因而此OpenWRT路由器需关掉dhcp,将LAN IP变更为192.168.1.2。
将用于光猫IPTV的那个接口,也就是通常所说的LAN2,连接到OpenWRT的WAN口上。
自此OpenWRT已经成功的接入家庭局域网了。
4.更改防火墙设置
于防火墙那儿添加一条策略,准许IGMP与UDP数据抵达路由器自身。
网络-防火墙-通信规则-添加
名称:IPTV
协议:UDP,IGMP
源区域:wan
目标区域是,名为This device的那个,Device(input)。
5.抓包获取IPTV组播地址
网上仅存有一个3年前大连联通IPTV的播放清单,而且此清单已无法正常使用,所以,只能自行抓包分析,自行开展测试了。
经过抓包分析发现,现在按下面的方式播放视频流已经不好用了
1
http://192.168.1.2:8080/udp/232.0.0.1:8008
经检查发现,大连联通的IPTV对验证功能进行了升级,增添了SSM(即Source – Specific Multicast)验证,也就是在执行组播请求这个动作的时候,一定要携带源IP,也就是要明确是哪一个源IP发出这个组播。
继续抓包分析可以找到这样的字样:
1
2
3
4
IGMPv3 Membership Report
Include Mode
Source Address: 218.24.1.1
Group Address : 232.0.0.1
此218.24.1.1便是处于最初状态的源IP之所指,将播放地址依循下述方式予以更改,便会呈现出良好的使用效果。
1
http://192.168.1.2:8080/udp/218.24.1.1@232.0.0.1:8008
最后,便是漫长的抓包过程,以及数据整理过程,还有就是改名频道的过程了,将其做成m3u8文件,像下面这样便可以了。
1
2
#EXTINF:-1 group-title="CCTV",CCTV1
http://192.168.1.2:8080/udp/218.24.1.1@232.0.0.1:8008
这一行,也就是#EXTINF这一行,它的作用是,去定义,下一行url的,频道分组,以及频道名,的相关内容。
未经允许不得转载:openwrt技术分享 » 利用联通闲置IPTV,OpenWrt安装udpxy实现组播转单http流

openwrt技术分享
微信关注,获取更多