用udpxy转发IPTV组播信号
2022年撰写攻略后,一直没有关注。最近家里换了联通的FTTR后,在组网过程中,发现网络情况有变化,特修改如下:
家里换了联通的FTTR后,一主两从,其中主光猫放在入户弱电箱,两个从光猫分别放在两个房间。听安装师傅说3个光猫的任意电口都可以接机顶盒,刚开始没太想明白IPTV究竟走的哪个通道,登录进主光猫管理界面,查询上行接口发现主光猫已经拨号获得了IPTV地址,且采用的是路由模式。又查询了路由表,发现从任意局域网内的任意IP都可以访问IPTV的组播地址。用电脑打开VLC media player,试着输入中央一台的地址:“rtp://225.1.4.73:1102”,发现可以正常播放。请注意,这个地址只针对河南联通,其他运营商的组播地址可能不同。
发现这个规律后就好办了,直接将.m3u文件下的网址列表全部换成以rtp开头的组播地址,局域网内电脑、手机上用VLC media player直接打开.m3u文件就可以观看IPTV节目了。
至此,局域网内的openwrt副路由和udpxy就可以下岗了。

以下为2022年10月24日撰写的攻略,仅供参考,适合传统的光猫拨号上网的情况。
最近太忙,一直有小伙伴催更,我抓紧说说udpxy转发iptv组播信号的问题。
前面提过,我使用OpenWRT的最大原因,是冬奥会期间使用机顶盒观看IPTV太麻烦,于是开启了后面的折腾之路。
https://zhuanlan.zhihu.com/p/484576236zhuanlan.zhihu.com/p/484576236
先将日常观看电视的一些不便之处罗列如下:
1.使用传统有线电视机顶盒。缺点:机顶盒占空间,机顶盒和电视要占两个电源口,两个遥控器控制。其中两个遥控器的问题,如果是老一点的电视机,使用机顶盒遥控器的学习功能,使用机顶盒遥控器控制电视机的开关机、音量加减、信号源选择倒是没问题。
2.使用HDP直播软件。缺点:直播源不稳定,直播源往往不是高清信号,直播软件合法性问题。
3.使用IPTV机顶盒。缺点:机顶盒占地方,机顶盒和电视要占两个电源口,两个遥控器。IPTV一般需要单独走一条网线。
**4.多人看电视的问题。**老人想看电视剧,小孩想看动画片,你想看电影频道。还有客厅和卧室、楼上和楼下安装有多个电视,这又怎么办?
最关键的问题的是:我本来安装的是智能电视,自带很多视频应用程序,智能电视本身需要连接互联网;然后为了看IPTV,还需要额外安装机顶盒,需要单独走一路网线、单独的电源和单独的遥控器,而且机顶盒还占用空间,网线、电源、HDMI信号线一团糟。还不得不使用两个遥控器分别控制智能电视和机顶盒。
这个不能忍,我要整洁清爽,清爽,爽。
说了这么多,言归正传,按序表述如下:
一、硬件与网络
使用路由器,刷OpenWRT系统,WAN口连接光猫IPTV口,LAN口连接到主路由器的LAN口。
现在OpenWRT支持的路由器也很多,想看路由器是否支持刷机,可以上这个网站查看:https://openwrt.org/toh/start。
有一点说在前面,udpxy插件很消耗CPU,CPU性能越好,效果也越好(观看多路IPTV时不容易死机)。
二、软件部分
(1)查看机顶盒IP地址和MAC地址。
使用机顶盒正常观看IPTV,进入机顶盒“设置”界面,查看设备信息,查看有线IP地址和MAC地址,记下IP地址、子网掩码、默认网关和MAC地址4项信息(考点1)。其他的不用记。

(2)设置OpenWRT副路由WAN口地址
登录OpenWRT副路由管理界面,**假定副路由IP地址为192.168.1.11(考点2),**进“网络”-“接口”菜单,设置WAN口地址,IP、掩码和网关就是考点1对应的地址,修改WAN口的MAC地址(重点内容),一定要与机顶盒的MAC地址相同,否则可能通不过认证。DNS之类的信息不用填,IPv6可以禁用或删掉。

(3)增加防火墙策略
在OpenWRT副路由管理界面,进“网络”-“防火墙”菜单,点击“Traffic Rules”选项卡,点击“新增”按钮,按照如下参数配置。

这里解释下,使用udpxy插件时,并没有使用路由器的路由转发功能,而是使用udpxy充当代理转发软件,一边从WAN口接收UDP组播数据包,处理后形成HTTP协议格式数据流,发放到指定的LAN口地址。所以需要增加防火墙策略,放行WAN口UDP协议数据包。
(4)安装udpxy插件
在OpenWRT副路由管理界面,进“系统”-“Software”菜单,没有设置更新源的,可以先进“Configure opkg”菜单设置更新源distfeeds.conf,国内的建议设置中科大的更新源,可以直接使用http协议,默认https协议。下面这个更新源不能照搬,要根据你的路由器CPU架构和你安装的OpenWRT的版本进行替换,把OpenWRT官方的更新源,更换成中科大的更新源就行了。
src/gz openwrt_core http://mirrors.ustc.edu.cn/openwrt/releases/19.07.5/targets/ramips/mt7621/packages
src/gz openwrt_base http://mirrors.ustc.edu.cn/openwrt/releases/19.07.5/packages/mipsel_24kc/base
src/gz openwrt_luci http://mirrors.ustc.edu.cn/openwrt/releases/19.07.5/packages/mipsel_24kc/luci
src/gz openwrt_packages http://mirrors.ustc.edu.cn/openwrt/releases/19.07.5/packages/mipsel_24kc/packages
src/gz openwrt_routing http://mirrors.ustc.edu.cn/openwrt/releases/19.07.5/packages/mipsel_24kc/routing
src/gz openwrt_telephony http://mirrors.ustc.edu.cn/openwrt/releases/19.07.5/packages/mipsel_24kc/telephony
然后在“filter”输入“udpxy”,执行搜索,按顺序安装udpxy、luci-app-udpxy和luci-i18n-udpxy-zh-cn三个插件(考点3),

安装好之后,在Installed选项卡可以看到安装结果。

当然也可以通过ssh登录路由器,按顺序执行下面4条命令,安装上述3个插件:
opkg update
opkg install udpxy
opkg install luci-app-udpxy
opkg install luci-i18n-udpxy-zh-cn
(5)配置udpxy
在OpenWRT副路由管理界面,进“服务”菜单,可在列表中看到udpxy服务。

点击进入udpxy配置界面,在绑定IP/接口中填写OpenWRT副路由器的IP地址(考点2对应的地址),在监听端口填写一个不常用的端口,比如8888、9999、10000都可以(考点4),源IP地址/接口填写IPTV组播源地址(考点1对应的IP地址,即有线机顶盒分配到的IP地址)。最大客户端数量根据需要填写,这个数值受限于路由器的CPU性能和网络带宽。把“已启用”选项勾选上,点击“保存并应用”。

(6)查看udpxy服务状态
在浏览器中输入“http://192.168.1.11:8888/status”,查看udpxy服务状态。这里的地址和端口对应设置udpxy服务时绑定的局域网IP地址和端口。如果能看到以下界面,说明udpxy服务已经跑起来了。

这时,可以在VLC media播放器中选择“打开网络串流”,按照“http://address:port/udp/mcast_addr:mport/”格式输入地址,就可以观看电视了。

输入“http://address:port/restart/”,可以重启udpxy服务。
总结:讲到这里,OpenWRT udpxy插件的安装与调试就讲完了。后面,你就可以在智能电视、电脑、手机上,使用Kodi 或者 VLC media player软件,观看IPTV了。
其中Kodi软件的使用方法,以及组播源地址的获取,涉及内容较多,篇幅较大,需要单独讲述了。
初步接触OpenWRT,对一些概念也是一知半解,不对的地方还请指出,欢迎交流。