作者: 愉悦de晚风

  • 华硕路由器双线路配置IPTV, 组播、组播转单播、单播回看全支持

    华硕路由器官方固件提供IPTV配置,支持透传IPTV专用网络端口,组播路由及UDP代理(Udpxy, 组播转单播)等多种功能。在光猫全路由连接模式下(光猫上网和IPTV均为路由模式),可以很方便为家庭网络提供IPTV组播、组播转单播及单播回看支持。

    但有些运营商的光猫绑定专用的IPTV网口(光猫IPTV桥接模式),只能光猫上的专用IPTV网口观看IPTV。这种情况该怎么配置华硕路由器的IPTV功能,同样能为家庭网络提供IPTV组播、组播转单播及单播回看支持?

    这种情况可以利用华硕路由器外部网络的双线路功能。

    华硕路由器双线路配置

    双线路就是支持连接两个外部网络,除了互联网连接,还可以再建立一个IPTV连接。不过华硕路由器的双线路设计是针对两路互联网连接的,提供故障转移和负载均衡两种模式。利用双线路配置IPTV,需要注意一些配置。

    首先,华硕路由器IPTV的配置是使用首选WAN做为IPTV上游端口,使用双线路配置IPTV时,必须把IPTV的连接作为首选WAN。互联网连作为第二WAN。

    其次,双线路需要使用负载均衡模式,并且开启路由规则。通过路由规则让互联网访问走第二WAN,IPTV单播回看的访问走IPTV连接(首选WAN)。

    下图是个路由规则配置示例。来自家庭内部网络的连接走第二WAN(互联网连接)。IPTV内部专网的一些地址网段走首选WAN(IPTV连接)。设置IPTV内部专网的路由是为了支持IPTV的单播或者回看。

    双线路下的路由规则配置

    这时在内部网络-IPTV配置中,启动组播路由(支持使用组播)及设置Udpxy端口,就是可以家庭网络中使用组播或者组播转单播地址观看IPTV了。有线或者无线连接华硕路由器都可以。

    IPTV配置

    各种地址格式示例:

    组播地址: rtp://239.3.1.129:8008

    组播转单播地址:
    http://192.168.50.1:4022/rtp/239.3.1.129:8008

    单播地址:
    rtsp://61.135.88.136/PLTV/88888892/224/3221225880/10000100000000060000000000025506_0.smil

    回看地址:
    rtsp://61.135.88.136/TVOD/88888892/224/3221225880/10000100000000060000000000025506_0.smil?playseek=${(b)yyyyMMddHHmmss}-${(e)yyyyMMddHHmmss}

    在家庭网络上可以随意观看家里的IPTV了。

    组播、组播转单播、单播、回看

  • 配置家庭宽带IPv6防火墙,允许外网通过IPv6访问家庭内网服务

    现在大部分家庭宽带都支持IPv6,家庭内网设备可以分配到IPv6公网地址。但有IPv6公网地址并不意味着从外网就可以访问家庭内网设备及服务,还需要正确配置家庭路由器及光猫的防火墙。

    家庭宽带一般都是光纤入户,光猫是家庭网络的第一道屏障。光猫上网有拨号路由及桥接两种方式。运营商默认大都配置的拨号路由模式,也有不少用户采用光猫桥接,路由器拨号的上网方式。光猫路由模式会开启防火墙,光猫会阻止外网的访问,桥接模式光猫没有防火墙。除了光猫,路由器默认也是会开启防火墙的,访问内网设服务需要正确配置防火墙。

    当然最简单的方式是关闭光猫及路由器的防火墙。这里只看IPv6防火墙。下图是华硕路由器的IPv6防火墙开关,默认是开启状态。

    华硕路由器IPv6防火墙开关

    下图是华为光猫的防火墙开关。默认是开启状态。

    华为光猫IPv6防火墙开关

    虽然关闭防火墙是最简单允许外网访问家庭内网服务的方法,但这种方式并不推荐。因为防火墙保护的是家庭网络安全,关闭防火墙就等于打开家庭网络的大门,网络安全会存在严重隐患。

    正确的方式是只开启需要的网络访问,包括:

    1. 只允许需要访问的设备服务网络地址 (比如 2408:8000:10:30::2 )
    2. 只允许需要访问的服务端口 (比如 63219)
    3. 只允许指定的协议(比如 tcp, udp)

    如下图中华硕路由器传入防火墙的配置示例,配置test服务允许访问2408:8000:10:30::2的家庭内部内部网络地址,端口为63219,协议为TCP。

    华硕路由器传入防火墙配置

    会有一个问题是家庭内部网络获得的IPv6地址并不是一直固定的,比如分配给家庭网络IPv6的地址前缀运营商会经常变化。这个问题可以用只匹配地址后缀的防火墙规则来解决,因为一个设备的IPv6地址后缀是有方法保持固定的,比如基于设备MAC地址的地址后缀生成方式。

    下面是一个地址后缀匹配的示例,只允许访问地址后8位为32ad:3410的IPv6地址。

    华硕路由器传入防火墙配置

    华为光猫里对应的是IPv6虚拟主机配置,比如下图配置光猫IPv6防火墙允许到2408:8000:10:30::2的UDP 63219端口的访问。

    华为光猫IPv6虚拟主机配置

    华为光猫的一个问题是用户界面不支持地址后缀的匹配,如果要访问的IPv6地址是不固定的,只不填地址,允许对指定端口的所有地址访问。如下图配置,允许63219端口的UDP访问。

    华为光猫IPv6虚拟主机配置

    IPv6防火墙正确配置后,就可以从外网正常访问家庭内网中的IPv6服务了。

  • IPTV/影视播放器不支持rtsp源怎么办? rtp2httpd是个不错的解决方案

    国内IPTV运营商(联通、电信)目前大都使用rtsp源,包括IPTV直播、回看及点播节目。但不少主流IPTV或者影视播放器对rtsp的支持并不好。像Tivimate,一款非常优秀的IPTV播放器,就不支持rtsp源的播放。基于当前主流exo (media3)内核的播放器目前也大都不支持Irtsp源的播放。基于传统ijk内核的播放器虽然可以播放一些rtsp源,但兼容性也不好。不支持有些运营商的 rtsp源,特别是采用中兴平台的IPTV运营商。或者虽然可以播放,但不能支持进度拖动、快进快退等操作。

    为了能更好的利用现有主流播放器观看rtsp的IPTV源,把rtsp流转换成http单播流是一个方法,现有播放器大都对http单播流有很好的支持。rtp2httpd 就是一个多媒体流转发服务器的github开源项目 (stackia/rtp2httpd)。支持将组播 RTP/UDP 流、RTSP 流转换为 HTTP 单播流,并实现了运营商级的 FCC(Fast Channel Change)快速换台协议,可以作为 udpxy 和 msd_lite 的无缝替代,为IPTV 用户提供接近原生机顶盒的观看体验。rtp2httpd内置播放器也有方便,随便打开一个浏览器就可以观看IPTV节目。

    rtp2httpd内置播放器
    rtp2httpd实时状态监控

    rtp2httpd可以很好处理IPTV rtsp直播及回看节目,但对rtsp点播节目的支持还存在一个主要问题。rtp2httpd可以代理rtsp点播节目,在播放器顺利播放。但是代理后的点播节目也变成了直播模式。没有点播节目的时长信息,播放器也无法进行进度拖动、快进快退等操作。如下图,用蜂蜜影视播放器(使用exo player)点播节目时,节目时长信息显示为00:00,无法进行进度拖动、快进快退等操作。

    影视播放器播放rtp2httpd代理rtsp点播节目

    rtp2httpd v4新版规划中提到了支持转换为http hls流,不知道那时是否可以完美解决这个问题。在rtp2httpd能解决这个问题前,只能自己先动手有个解决方案。做了一个rtp2httpd的启播位置及rtsp影视时长接口的补丁,并基于rtp2httpd定制了的影视播放器。这样用IPTV点播插件可以浏览播放rtsp源的IPTV点播节目,并且支持进度拖动、快进快退等操作。

    播放时可以获得点播节目时长信息,支持进度拖动,快进快退操作

    向rtp2httpd项目提交了增加rtsp启播位置参数(r2h-start)及rtsp影视时长接口(r2h-duration)的的PR,新发布的v3.6.2已包含这两个PR内容。基于rtp2httpd支持进度拖动、快进快退等操作也需要播放器的支持,适配了rtp2httpd的定制影视播放器也同样放在了github上(yydewf/iptvys)。项目中包括两个定制安卓应用,一个基于蜂蜜影视,另一个基于OK影视。有需要的可以下载试用。