江苏电信IPTV多设备播放

目录

迫于看电视,折腾一下IPTV,网上各种帖子讲的很复杂,如果是用的江苏电信且没有特殊需求,实现多设备看IPTV还是比较容易的…

目标

实现局域网内各个终端包括其他电视、电脑、手机都能稳定观看直播(实际上外网也能连回家里看);保留电信IPTV盒子的功能。

网络环境

  运营商:江苏(苏州)电信

  光猫:友华PT926E(天翼网关3.0)

  路由器:UBNT ER-X

IPTV抓包和测试

抓包

这一步的目的主要是为了抓取直播源和进行测试,不过现在网上可以找到很多江苏电信的直播源,经过测试,只要连接iptv口,不用特殊操作就能播放(下面内容建议跳过,直接看 测试 部分)

抓取可以买个usb网口,一个网口接光猫IPTV口,一个接IPTV盒子,然后进行桥接。在Windows下可以用wireshark进行抓包(记得安装 npcap ),后续操作大体可以参考 这个视频

这里其实涉及到江苏电信(浙江电信好像也是)是用的带鉴权的DHCP。就是说如果要在路由器上获取IP,需要option12(盒子序列号)、option60(加密的认证数据),再拷贝盒子MAC地址进行模拟,但实际上不用获取IP也能通过组播地址播放。对认证感兴趣的可以看这几个贴子: 浙江电信IPTV DHCP鉴权option12与option60获取方法分享江苏泰州IPTV破解IP认证,实现DHCP获取IP

经过测试,使用wireshark进行关键词rstp、igmp抓包,也并不能找到明文的组播地址,所以老老实实用网上的源就好,基本不会变动,可以长期使用。如: 抓的江苏电信IPTV组播地址(2021-12-15)IPTV(github)

测试

可以用电脑直接连接光猫的IPTV口,使用PotPlayer等软件播放组播地址,如 rtp://239.49.8.19:9614

网络调整

光猫设置

因为路由器和光猫都在弱电箱里,不需要使用网上提的的较多的单线复用(路由器和光猫只有一根线连接的情况),只要再接条线到路由器再设置即可。由于默认只有一个IPTV口,且这个口已经连到了房间的IPTV盒子上,首先需要登陆光猫把IPTV绑定到一个闲置的百兆口上,也就是光猫上有两个IPTV口。

这时候就需要先获取光猫的超密了,我的光猫是天翼网关3.0,参照 【教程】使用BurpStuite抓包获取天翼网关超级密码并更改天翼网关为桥接模式 ,就能获取明文密码了。主要是利用了一个漏洞,浏览存储目录的时候,拦截请求修改请求目录参数,访问根目录对密码文件进行拷贝,拦截修改情况这步用fiddler也是可以的。(部分光猫似乎不是明文,可以尝试文章评论区的方方法)

拿到超密后,登陆修改业务绑定信息,INTERNET_B_VID是宽带业务,Other_B_VID是IPTV业务, 把宽带业务的绑定端口减少一个 ,我这边是把端口4取消绑定了,端口2是原有的IPTV端口。再 把IPTV业务绑到空出来的端口4 上,这样就 保证IPTV盒子和路由器都能接入IPTV


路由器设置

OpenWRT设置参考本文评论区

首先要将路由器的eth4端口(将要和新增的iptv口连接的端口)从Switch0桥接中删除,也就是将接口独立出来,目的是阻止IPTV的组播流量进入局域网(据说会引起风暴,降低网络性能,网上的很多帖子似乎是通过vlan、防火墙流量配置等方法解决的)在我的路由器上如图设置即可。

第一张截图有误,应该是点击switch0-Action-config修改


用网线把光猫上新增的IPTV口(端口4)连到路由器的eth4,完成物理连接,此时再登陆路由器管理页面可以看到已经连接上了。


UDPXY转HTTP(方法一)

UDPXY是把组播流量代理转换为HTTP,一是防止组播流量进入局域网,二是HTTP更加稳定,各终端通用性好。如果是OpenWRT可以安装相应luci插件进行设置,ER-X的EdgeOS基于Debian,需要下载编译好的 二进制文件 ,再新建个服务用于启动即可。

拷贝或下载到路由器用户目录后,SSH登陆, chmod +x udpxy_erx

sudo mv udpxy_erx /usr/bin/udpxy

添加执行权限, 手动执行(eth4是连接iptv口的端口)/usr/bin/udpxy -S -a 192.168.2.1 -p 4022 -m eth4 -c 10 -B 1MB -M 30 先测试一下能不能用。

浏览器打开 http://192.168.2.1:4022/status 正常显示,播放器打开 http://192.168.2.1:4022/udp/239.49.8.19:9614 可以播放,测试成功。

接着创建service sudo vi /etc/systemd/system/udpxy.service (User要设置成ubnt,试了root不行),这里设置了ExecStartPre等待30秒执行,防止重启后启动失败

[Unit]
Description=Udpxy
After=network.target

[Service]
ExecStartPre=/bin/sleep 30
ExecStart=/usr/bin/udpxy -S -a 192.168.2.1 -p 4022 -m eth4 -c 10 -B 1MB -M 30
User=ubnt

[Install]
WantedBy=multi-user.target

保存后 sudo systemctl daemon-reload

sudo systemctl start udpxy sudo systemctl enable udpxy启动服务、设置开机启动,此时就基本完成配置了。

MSD_LITE转HTTP(方法二)

据说性能比UDPXY强上数倍,更顺畅。

同样,下载编译好的 二进制文件 配置文件

sudo mv msd_lite.conf /etc/ 移动配置文件

sudo vi /etc/msd_lite.conf编辑配置文件(端口已设置为4022,接口eth4),找到相应位置,按需求修改

  ...省略

  <HTTP>
      <bindList>
        <bind><address>0.0.0.0:4022</address><fAcceptFilter>y</fAcceptFilter></bind>
        <bind><address>[::]:4022</address></bind>
      </bindList>

      <hostnameList> <!-- Host names for all bindings. -->
        <hostname>*</hostname>
      </hostnameList>
    </HTTP>

  ...省略

        <multicast> <!-- For: multicast-udp and multicast-udp-rtp. -->
          <ifName>eth4</ifName> <!-- For multicast receive. -->
          <rejoinTime>0</rejoinTime> <!-- Do IGMP/MLD leave+join every X seconds. -->
        </multicast>

  ...省略

下面的步骤和方法一类似,不再赘述

chmod +x msd_lite_erx

mv msd_lite_erx /usr/bin/msd_lite

sudo vi /etc/systemd/system/msd_lite.service


[Unit]
Description=MSD_LITE
After=network.target

[Service]
ExecStartPre=/bin/sleep 30
ExecStart=/usr/bin/msd_lite -c /etc/msd_lite.conf
User=ubnt

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload

sudo systemctl start msd_lite

sudo systemctl enable msd_lite

多设备播放

PC

WIndows上使用Potplayer,Mac上使用IINA ,可以做一个 m3u8列表 方便选取观看,网上的iptv源列表,替换成下列格式,命名为 xxx.m3u8 ,播放器打开即可播放,完整见 直播(江苏电信).m3u8

#EXTM3U
#EXTINF:-1,CCTV1HD
http://192.168.2.1:4022/udp/239.49.8.19:9614
#EXTINF:-1,CCTV2HD
http://192.168.2.1:4022/udp/239.49.8.50:9802
#EXTINF:-1,CCTV3HD
http://192.168.2.1:4022/udp/239.49.9.31:6000
#EXTINF:-1,CCTV4HD
http://192.168.2.1:4022/udp/239.49.8.51:9806
#EXTINF:-1,CCTV5HD
http://192.168.2.1:4022/udp/239.49.8.75:8000
#EXTINF:-1,CCTV5+HD
http://192.168.2.1:4022/udp/239.49.8.18:9610

电视

Android电视和盒子可以安装 DIYP影音 ,然后在设置内自定义播放列表,打开对应URL就可以进行设置,格式为 频道名称,http地址 ,完整见 直播列表(DIYP影音).txt


移动端

可以播放m3u8的播放器即可,或者手动复制http链接使用。

其他

外网播放

操作是可行的,不建议使用,占用大量上传,还存在一定风险。

参考

https://github.com/itiddler/udpxy_erx
https://blog.friskit.me/2020/05/31/bjunicom-network.html
https://www.bilibili.com/read/cv9858309
https://www.right.com.cn/forum/thread-7722652-1-1.html
https://www.right.com.cn/forum/thread-794304-1-1.html