先说下背景
生命不息,折腾不止。
家里老人在,老人想看传统的电视,每天喜欢看本地频道一些鸡毛蒜皮的新闻。奈何小朋友写寒假作业,客厅被霸占了。 所以就打算折腾卧室的电视,但是没有预留线路,找运营商来又是这会员,那产品的,线路还裸露,比较麻烦(主要是加钱不能忍)。
网上找了一堆app,不过都是短命的,今天可以,明天就不可以了,而且看本地频道还比较少。 网上一搜,这场景还挺常见,好多前辈已经有成熟的折腾方案了。某宝搞一个网红机,开搞。

基本信息
坐标:成都运营商:电信
硬件: 运营商光猫, 运营商电视盒子,rax3000m(刷的openwrt),网线若干, tp-link路由器,腾达路由器,电视/手机/平板等
组网& 配置

图1 简单组网图
说明
- 光猫配置
- 光猫一共4个口: lan1和lan4 作为网络接口。 lan2和lan3 作为itv的接口
- 光猫拨号上网,配置为路由模式
- itv口采用默认方式。
- 光猫lan1(互联网) 连接到一个tplink路由器,家里其他智能设备上网用。lan2(itv)连接到电视盒子,提供客厅看电视
- openwrt配置
- 光猫lan4 连接到openwrt的wan口。
- 光猫lan2 连接到openwrt的lan3口。
- openwrt的lan1口链接到一台路由器上,对其他设备,如平板,手机,电视等提供上网和看电视服务(通过组播转单播)。备注:因为没有预留好线,所以光猫和openwrt都在弱电箱。
- 这么做有个好处,折腾失败了也不影响原来的网络和电视
踩坑记录
- 光猫配置
其实光猫什么都不用改, 就能实现,但是看了网上很多教程,各种折腾,改桥接,vlan绑定啥的。
一开始,查看光猫配置,应该是盲插模式,每一个口都支持上网和看电视。 看了网上教程, 各种vlan配置,因为没弄清楚iptv的鉴权和*放播**方式,按照单线复用的方式随便怎么改都没有成功————后面来看主要是openwrt侧配置得问题。
后面找运营商装维小哥改成这种单口绑定业务的方式,采用双线复用。光猫配置告一段的。

图2 光猫互联网配置

图3 光猫itv配置
- openwrt路由器配置
这里主要两个坑:第一个坑,rax3000m的,这个芯片的原因,其实只有两个口,一个wan口(eth1) ,另外其他的lan1/lan2/lan3 都是eth0这个交换机下的口,这部分可以看下openwrt官方文档的解释。论坛里面,用eth1,eth2,eth3这种区分业务的,rax3000m不适合。
这里,如果需要用到具体物理设备上的lan口,就需要对vlan的tag和untag有一定的理解,保证从eth0这个口,拆分一个单独的vlan,来承载itv的业务,并和物理的lan口进行关联。具体配置如下:

图4 openwrt交换机配置
简单解释就是: 从lan3来的包(itv的业务)到lan3口之后,会打上43这个tag,然后eth0这个口也标记(tag)了43, 就可以从eth0 转出去。这里方便转发到lan口下的其他接口,比如w路由器本身的wifi,或者其他路由器。
备注: 这里的vlan,我保持和光猫的配置一样,其实不用,随便一个vlan都可以
这里记住这个vlan, 呆会儿第二个坑会用到。
第二个坑,就是成都电信iptv的鉴权方式。 网上里面说的其实是对的,是用dhcp的方式鉴权,但是准确来说也不对,dhcp发送的option 60 这些参数抓包的时候,确实有,但是这个好像不影响iptv的*放播**。
这里实际的情况是,运营商的盒子会有一个静态的地址,配置上这个静态地址, 链接上运营商光猫的itv口,就可以观看组播适视频了(这个是在光猫上看到端口连接情况,发现电视盒子的信息是静态地址)
基于以上的信息,于是开始配置openwrt。第一个坑已经获取到口,并指定了某一个vlan来承载iptv业务 。 那么在openwrt的接口配置页面,新建一个接口,命名为itv,选择eth0.xx,这个xx就是第一个坑确认的vlan, 然后地址选择静态地址(这里论坛上,都说是dhcp,要发送盒子的mac,scitv这些信息,其实不用),这个静态地址我是和配置和盒子相邻的地址,盒子是100,我就配置101,网关也参考盒子的配置完成。然后防火墙,配置和openwrt的lan口一样。

图5 openwrt接口配置
以上就配置完成了。参考论坛里面的其他方法,udpxy,或者msd_lite就可以将组播转单播,用kodi或者vlc等进行观看了。
组播地址,可以在网上获取,自己也可以抓包获取(想看笔者怎么抓包的,可以留言)
至此,折腾完毕。通过http://路由器地址:port/rtp/xxx 就可以观看iptv了。

简单总结
- 实现以上功能,openwrt的固件版本不重要,各种高功率,软件全的这些固件,这些目前没发现区别。
- rax3000m的性能绝对是过剩的, 配置完成后,一部手机,一个极米投影,一个电视,一个平板观看,资源剩余还很多。 后续可以折腾个docker或者python啥的,实现其他功能(只要你想折腾)。

图5 *放播**时资源监控图
- 试了kodi和perfect player,vlc。使用vlc和kodi*放播**不会出现卡顿,不过perfect player会卡顿,需要手动修改下perfect player的配置,比如缓存啥的,这个是软件本身的原因。
- 不管是kodi,还是perfect player, 在进行频道切换,都会有一些卡顿。大概在2s左右。这个可能是硬伤,解决不了。
- 以上操作,小白理解可能会比较吃力, 需要有一点简单的网络知识,什么ip啊,网关, vlan之类的。如果有想了解的,可以留言,大家一起讨论下。
- 另外,开始之前,最好多了解下,多学习下,看看其他大佬怎么操作,以及自己的实际情况, 融会贯通,再开始。