微信关注,获取更多

利用联通闲置IPTV,OpenWrt安装udpxy实现组播转单http流

家里存有一个处于闲置状态的联通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流

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏