写在前面:我只在上海电信宽带的F450G光猫操作成功,使用上海电信F450G光猫的用户才是本文目标受众,有什么问题可以评论区讨论。其他省份、运营商、光猫型号的用户不是本文目标受众,你可以参照本文通过类似操作开组播,但具体行不行自己操作不要问我,我也不知道。还有,本教程为进阶教程,只针对有光猫操作经验、m3u播放经验的人。如果你是连本文目的都不清楚的小白,那你不是本文目标受众,关闭即可。
前阵子我在一个IPTV玩家的论坛分享了几个上海电信IPTV新增加的组播源并提及我可以免桥接看组播源。本方案的优势就在于不用额外购置支持OpenWRT的路由器,也不需要在自己路由器费劲地配置DHCP Option之类参数,也不需要折腾udpxy,等等。
操作还是有点复杂的,为了避免写了教程没人看我调研了一下大家有没有兴趣,大家有兴趣再写。没想到这么多人表示想看。
中国有一句话叫“闷声大发财”。我就什么话也不说。就是最好的!但是我想我见到你们这样热情啊,一句话不说也不好。今天,万众期待的教程来了:
1、破解光猫通过telecomadmin管理员账号登录,可参照我此前的教程。
2、关闭光猫TR069(否则亲测待会新增WAN连接后五分钟就会被删)这个网上教程一堆,我这里就不赘述了。
3、在【网络】—【网络设置】里新增一个WAN连接。注意封装类型选IPOE,业务类型选其他,地址获取方式选静态。下面地址可以随便填,也可以跟我一样填。
到【状态】 — 【网络侧信息】可以看到新增的WAN连接名为“4_Other_R_VID_”
4、到【应用】—【IGMP设置】打上所有勾,在下面【宽带连接】选刚才新建的WAN连接名称(我这里就是“4_Other_R_VID_”),在【组播VLAN】填51并保存
这样就能愉快地在家庭网络里直接用播放器打开形如rtp://239.45.3.209:5140
的组播URL看电视直播啦
操作教程到此结束,下面是一些技术原理讨论,要先声明我说得不一定都对,欢迎评论区讨论。
1、关于TR069。实际通知间隔可能并不是页面所示的43200秒,即12小时。我没关TR069的时候试了好几次,增加完WAN连接5分钟内光猫必重启,重启完新增的连接就没了。可能光猫以更高的频率上报状态,服务器发现WAN配置不一样就下发正确配置重启光猫了。
2、为何要这样操作就能开组播?这里涉及关于流量走向的问题。我画了个示意图应该能解释清楚。(示意图省略了光猫外根据VLAN ID分流的过程,因为这对本文不重要,实际上光猫并不是直接连接右边这三者,而是连接电信的路由器,路由器再根据VLAN ID分流将不同数据包发往相应目标。)
光猫收到局域网数据包后到发往光纤有两个操作,一个是大家熟知的NAT,另一个是可能比较少人知道的根据是否组播而改变VLAN ID。
NAT就是首先根据数据包的VLAN ID判断它属于哪个WAN连接,比如46就属于1_TR069_VOICE_R_VID_46
,85就属于看IPTV的2_Other_B_VID_85
,空的就属于上网的3_INTERNET_R_VID_
。随后根据WAN连接的公网IP进行NAT操作将IP头的源IP地址改为相应公网IP。
然后如果判断是组播流量(IP从224.0.0.0到239.255.255.255)就根据组播VLAN设置,改写VLAN ID为相应WAN连接的组播VLAN ID。最后通过光纤将数据包发送出去。因此,配置好组播VLAN就能让来自局域网的组播流量走到电视直播服务器实现看电视直播。
回程流量即为上述过程反过来,不再赘述。另外,以上两步先后顺序我不确定,但反正哪个先来是幂等的,也不重要。
还有,网上有些文章说IPTV所有流量都是走VLAN 85的实际上并不正确。在连接专网之前其实机顶盒会先通过无VLAN ID的方式获取家庭局域网的IP用来连接互联网。况且直播请求虽然从机顶盒到光猫这段是VLAN 85,但过了光猫会把它转成VLAN 51。
3、为何要新增WAN连接而不在组播VLAN设置直接给3_INTERNET_R_VID_
配置VLAN 51,这样局域网的组播流量直接就能转到VLAN 51?
这个其实是我第一次就尝试的方法,但没有成功。根据以上的原理,由于3_INTERNET_R_VID_
被配置为PPPoE封装且是路由模式,在收到局域网流量后会给数据包增加PPPoE头转到VLAN51。而VLAN 51的直播服务器是不接受PPPoE头而是裸IP头的,就会失败,所以要新增一个IPoE封装方式的WAN连接就不会在转到VLAN 51的时候加PPPoE头。
4、为何新增WAN连接后组播就走新增WAN连接的配置了?
这点其实我也没懂,这么操作就成功了也可能就是个巧合。我觉得理论上3_INTERNET_R_VID_
和新增的4_Other_R_VID_
是同等优先级的,我也不懂为什么就走了4_Other_R_VID_
的IPoE
而没有走3_INTERNET_R_VID_
的PPPoE
,欢迎一起讨论
2023年2月4日
我认为数据是同时送给3_INTERNET_R_VID_和4_Other_R_VID_的,送给3_INTERNET_R_VID_的数据因为被增加了PPPOE头,所有被VLAN 51的直播服务器丢弃了。