现在很多文章都在说 IPTV 单线组网的文章。总的来说就是建立 IPTV 机顶盒到局端的二层链路,最后都归结到一点:iptv 机顶盒连通到光猫的 iptv vlan 上。从 iptv 机顶盒得到的 ip 你就能看出来,这种方法得到的 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 是什么呢,是让电脑、平板、 android 盒子也能看iptv 的方案。因为 udpxy 也需要作为一个终端接入 iptv 专网,如果电信限制了 iptv 机顶盒认证。
接下来,我介绍的这种方案不常见,和上面的方案在原理上完全不一样。
方案概述先拿上网打个比方,我们以前上网时都是电脑 pppoe,电脑直接获得一个202.111.xxx.xxx 的 ip,后来有了路由器,通过路由器 pppoe,路由器拿到的 ip 为 202.111.xxx.xxx,然后路由器后端分配给 pc 一个 192.168.xxx.xxx 的地址,pc 通过路由器上网,后来电信禁止路由拨号,绑定 mac,路由器后来又具备了克隆 mac 的功能,所谓道高一尺魔高一丈,总的来说,就是路由器模拟了一台电脑接入了局端的网络。
然而,这个场景到了 iptv 为什么不能用呢?我们的路由同样也可以模拟一台 iptv 盒子接入局端 iptv 网络。然后路由器把 iptv 数据分发给 iptv 机顶盒。电信局端看到的只是一台机顶盒,其实是我们的路由器冒充的,我们的路由器获得了局端分配的 ip,10.68.xx.xx 类似的地址,路由器背后有 n 个 iptv 设备,各分配到了一个 192.168.xx.xx 的地址,最后通过路由器连入 iptv 专络。以上问题就解决了:
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 来认证。如下: