背景
现在很多文章都在谈论IPTV单线网络的文章。一般来说,建立从IPTV机顶盒到国方的双层链接最终归结为IPTV机顶盒连接到光猫的IPTV VLAN。从Iptv机顶盒获得的IP必须是本地分配的IP,如10.68.xx.xx。这种方式不坏,但有几个问题需要注意。
1、安全问题。由于二层链接直接接触到国方,拓扑结构完成后,一定要模拟国方访问你家内部网。是否有隔离,否则,你辛苦地在PPPoE上筑起防火墙,但在IPTV端口上将整个家庭内部网络与国方连接起来。见过很多这样的设计。例如:
或者这样的设计,
以上设计都没有进行VLAN隔离,直接将IPTV端口连接到LAN交换端口,从运营商的国端开始模拟,就会发现国端可以直接进入你家内网,操作你的NAS共享、你的airplay扬声器、你家的摄像头,甚至你的智能门锁。运营商IPTV端口没有用户隔离的情况下(不要认为不可能。在我家IPTV端口抓住包的时候,抓住了邻居家的包。),你的邻居可以从IPTV端口进入你家内联网,操作你的NAS共享、你的airplay扬声器、你家的摄像头,甚至你的智能门锁。(威廉莎士比亚,北方专家,北方专家)你害怕吗?
还有另外两个缺点。
1、只能使用一个IPTV机顶盒。如果其他房间有电视,则不能使用IPTV机顶盒。如果通信限制IPTV机顶盒认证(计算机随意插入网线就能接收IP是没有限制的)。
2、不能用udpxy,udpxy是什么,电脑、平板电脑、安卓盒子也是可以看IPTV的方案。Udpxy也需要作为终端访问IPTV专用网络,因此通信限制了IPTV机顶盒身份认证。
接下来,我介绍的这个方案并不常见。与上述方案在原理上完全不同。
案例概要
比如我们上网的时候都是PPPoE,电脑直接收到了202.111.xxx.xxx的IP,后来有了路由器,路由器通过路由器PPPoE收到的IP是202.111.xxx.xxx,路由器后端分配给了PC。Pc通过路由器连接到互联网,之后通信禁止路由拨号,绑定MAC,路由器后来具备复制MAC的功能。
但是,当这个场景到达IPTV的时候,为什么不能使用呢?我们的路由还可以模拟IPTV盒子访问局端IPTV网络。然后路由器将IPTV数据分发到IPTV机顶盒。通信局那边看到的只是机顶盒,其实是我们路由器假装的。我们路由器获得了和国方分配的IP、10.68.xx.xx类似的地址,路由器后面有N个IPTV设备,分别分配了192.168.xx.xx的地址,最后通过路由器连接到IPT。上面的问题解决了。
1、安全问题,路由器WAN外部是国方,LAN内部是家庭方,路由器进行防火墙隔离。
2.路由器后面的几个IPTV设备局不得而知。如果想使用几个设备,请使用几个设备。当然可以。
3、udpxy作为IPTV软终端设备当然可以使用。
最后,还有附带的优点。
4、IPTV的无线设计将变得非常简单。就像手机平板电脑访问无线一样,IPTV机顶盒最后通过AP交换机访问路由器LAN端口,当然需要调整无线分组广播的效率。否则,IPTV直播就是卡顿。
拓扑学
设备要求
1、UBNT路由
首先,为什么这里推荐ubnt路由?如果你看一下我过去设计的一些方案,你会发现直接使用Linux Shell脚本和Linux 3rd packages来实现一些功能。首先排除华为、H3C、思科类型等设备。虽然他们是牛,但由于系统的封闭性,家庭使用场景的特殊功能无法实现。所以剩下的可供选择的设备有openwrt系、vyos系、破解后的几种。(阿尔伯特爱因斯坦,美国作家)。
的 routeros 系(原生不能用 linux),其中我倾向于未破解的商业产品路由,最为稳定,另外,ubnt 带的 OS 为 debian 也比较简单:没有一个 apt-get 搞不定的,如果有,那就用两个 apt-get。这里主要用到的路由特性有:vlan 路由,nat,DHCP,组播代理(igmpproxy)或者组播路由(PIM等),如果你现有的路由能做这几个事,也是可以替代的,本方案使用的 USG。
2、UniFi 交换机
这里主要用到的交换特性有:vlan和igmp snooping,如果你现有的交换机能做这几个事,也是可以替代的。本方案使用的Unifi交换机。
3、UBNT UAP
这里主要用到的 ap 特性有:vlan_ssid,无线 igmp 增强(Mulitcast to Unicast);如果你现有的 ap 能做这几个事,也是可以替代的。本方案使用的 UAP。
方案要点
1、iptv 机顶盒抓包与路由配置
首先需要对 IPTV 盒子抓包,分析 IPTV 盒子向局端发送了什么信息。然后通过路由配置 dhcp 信息,克隆 IPTV 盒子的信息通过认证,接入运营商的 IPTV 专有网络。
比如:我这的运营商对 IPTV 盒子采取的 DHCP 认证,也就是 IPOE 认证,根据抓包分析,运营商根据 IPTV 盒子的 MAC 地址、HostName、Vendor 来认证。如下:
然后局端对 IPTV 盒子下发的信息也需要分析,克隆运营商局端的 DHCP 信息,让 USG 替代局端下发 IP。
这个方法是通用的,无论是上海还是北京,比如:上海的双认证,只要 WAN 口上新建一个 VLAN85,然后向局端网关提交克隆的认证信息即可。
如果,你的 iptv 是 pppoe 上网,那更简单,直接在路由上配置 pppoe 就可以了,不过内网里的 iptv 盒子 ip 获取方式改为 dhcp。
这些信息都是通过配置 WAN 接口的 DHCP Client 就可以了,最后路由能获得一个 IPTV 专网的地址。
2、iptv lan的规划
在内网里专门建立一个 IPTV 网段,并把所有流量 NAT 到 WAN 口的 IPTV 接口。
然后,还需要做的一件事情,就是要建立内网 IPTV 和外网 IPTV 的组播通道,即组播代理,配置 igmpproxy。
最后,IPTV 盒子,如下图,获得的是一个内网 IP,而且,使用正常。
3、无线 iptv
针对上面的 vlan id 配置一个 iptv 的专用 ssid
因为 iptv 直播使用的组播数据流,无线组播默认的效率很低,因此还需要对无线组播进行调优,加强无线组播效率。
4、udpxy
udpxy 是一个把组播流变成 http 点播流的软件,我们通过 udpxy,可以把我们iptv 的服务扩展到手机、平板上,甚至映射到公网上,在外面就可以直接访问家里的 iptv 电视节目。
udpxy 的用法很简单,网上很多,这就不多说了,最后的效果如下:
5、多个 iptv 机顶盒同时使用
首先,为什么要使用 iptv 机顶盒,通过 udpxy 可以把 iptv 通过小米盒子观看,但iptv机顶盒还是有很多好处,比如,可以回看;适合老人孩子操作等;
一般来说运营商的 IPTV 机顶盒做了 mac 地址认证,这里的认证指的不是 dhcp认证,而是业务认证。所谓业务认证,就是机顶盒会把 mac地址+机顶盒序列号+IPTV 业务账号+密码通过 WebService 向 IPTV 服务器认证。运营商一般在下发 iptv 机顶盒都做了信息绑定。如果你的运营商没有做这个限制,恭喜你,前面的方案设计就够了。
但是,如果你的运营商做了这个限制,那怎么解决呢。
1、向运营商申请第二个 iptv 盒子,当然他们会额外收点钱,他们会给你一台新的 iptv 盒子,然后新的信息进行绑定。
2、如果你的运营商没有第二台 iptv 盒子的业务(比如我这),那你还只能采取别的手段了。什么步骤呢?
1、首先,你得买一个相同型号的机顶盒,这个首富家有卖。
2、然后你得把新的机顶盒克隆成原来的机顶盒的信息,比如:系统(各省份的系统不同)、mac 地址、序列号等,但是,无线 wifi 的 mac 地址配置成一个新的地址。最好买的时候就让卖家帮您做了,否则自己动手,你的知识面需要扩展到 android系统了。
完成以上两步,恭喜您,现在机顶盒已经可以使用了。而且通过无线 iptv 多个机顶盒可以同时观看 iptv。
理论上你是可以增加数量很多的 IPTV 机顶盒的。但是,因为iptv组播数据是靠路由的 CPU 转发,没有 offload/hwnat,所以,像 usg 这种性能不高的 cpu,大概跑个 3-4 个机顶盒就差不多了,一路 IPTV 的带宽大概在 20Mbps,usg 靠cpu,吞吐量在80-90Mbps(不影响上网的速度,上网的数据量还是走的offload)。
好了,最后弄完了,也调试通了,也清楚了为什么要这么设计,恭喜您,掌握了交换网络和路由网络很多的核心知识点了,再努力学点其他东西比如 ospf,bgp,考个证吧:)