
之前写过一篇K2p的IPTV融合教程,有需要的可以参考《K2P padavan固件下宽带与IPTV融合》,这个K2p是放在父母家的,房子面积不大,一个K2p足够覆盖,父母上网要求不高,所以就捣鼓了这个方案。
现状自住的房子面积稍微大了点,一个K2p不够用了,正好弱电箱的空间挺大,就开始折腾软路由,最后确定的方案是主路由ROS和旁路由OpenWRT。这个方案是满足一些特殊需要的,但是ROS不支持udpxy,就不能把组播转为HTTP串流,作为旁路由的OpenWRT,一般只负责特殊需求,所以把IPTV服务搬上去,也挺合适。
一、 网络拓扑和相关教程
1. 我的网络拓扑图

这里说明一下,我是六口的工控机,如果你的网口数量或者网口标注名称跟我的不一样,不要紧,思路都是一样的。
2. 有关教程
如果看官刚看到这里,对软路由的一些安装还不太清楚可以按顺序参考我以下几篇文章
1) 玩转软路由 篇二:软路由中Esxi 7.0 安装教程和避坑指南
2) 玩转软路由 篇三:虚拟机ESXI中Mikrotik RouterOS(ROS)的安装设置教程
3) 玩转软路由 篇四:软路由中OpenWRT作为旁路由的安装设置教程
这些文章详细介绍了,主路由ROS和旁路由OpenWRT的安装配置过程,下面的内容,就假定看官都把上述步骤掌握清楚了,特别是Esxi下虚拟机的安装。因为下面的内容,是在Esxi中新增一个虚拟机OpenWRT,安装步骤是和篇四中旁路由OpenWRT的安装是一样的,只是设置有区别。
3. 光猫
我的网络环境是江苏南部小城电信100兆宽带,宽带拨号,iTV自动分配(DHCP),后来我让客服或者安装师傅,把iTV改成了拨号,其实DHCP模式下,本教程同样适用。之所以改成拨号,是为了测试《K2P padavan固件下宽带与IPTV融合》,如果你没这样的需求,光猫一般不需要进行任何设置。本教程也是不需要对光猫进行VLAN设置的,比较方便。
二、 Esxi的IPTV网络设置
1. 查看物理网卡

这里显示的两个物理网卡,是没有直通的网口,分别代表ETH0和ETH1,如果你是按照我的网络拓扑图设置,那么这里应该是一样的。vmnic0是ETH0网口,作为管理网口。vmnic1是ETH1网口,作为IPTV的网口。
2. 新建虚拟交换机


在Esxi导航器中点击【网络】,再点击【虚拟交换机】标签页,点击“添加标准虚拟交换机”按钮。在弹出的对话框中,填写虚拟交换机的名称,【安全】种的“混杂模式”选择接受。其他保持默认即可,关联好没有直通的网卡“vmnic1”。设置好之后如下图所示:

3. 新增端口组
在Esxi导航器中点击【网络】,再点击【端口组】标签页。

然后点击“添加端口组”按钮。在弹出的对话框中,填写端口组的名称,【VLAN ID】可自定义填写,不重要。【虚拟交换机】选择上面刚刚创建的虚拟交换机“vSwitch_IPTV”。其他保持默认即可。设置好之后如下图所示:

三、OpenWRT的安装
虽然之前的文章:玩转软路由 篇四:软路由中OpenWRT作为旁路由的安装设置教程,这里交代过OpenWRT的安装步骤,但是这里的OpenWRT是为了提供IPTV服务,配置过程有一些地方需要非常注意,所以这里再把详细的安装步骤说明一下。这里把新增的这一个OpenWRT虚拟机命名为“IPLV”,专门提供IPTV服务。
1. 创建虚拟机
第一步:点击ESXI左侧导航栏中的【虚拟机】,然后在视图窗口点击【创建/注册虚拟机】,在弹出的窗口中点击【创建新虚拟机】。

第二步:选择名称和客户机操作系统。
“名称”自定义填写;“客户机操作系统系列”选择“Linux”;“客户机操作系统版本”选择“其他4.x或更高版本的Linux(64)位”。

第三步:选择存储空间。
如果只有一块硬盘,那就默认就可以,如果多个硬盘,请选择要安装的硬盘位置。

第四步:删除虚拟机默认硬件配置
这里只需要删除“CD/DVD驱动器”和“硬盘1”即可。如下图所示,记得删除这两个。

第五步:也是非常重要的一步,这里的网络适配器要选择默认的网络适配器,不要选择刚刚创建好的IPTV网络适配器。如下图所示:


第六步:根据个人硬件情况修改CPU和内存。
如第五步上图所示,根据个人情况修改CPU和内存,一般作为仅仅提供IPTV服务的OpenWRT,1G内存就够用了。配置完成后确认。
2. 配置OpenWRT虚拟机
第一步:点击ESXI左侧导航栏中的【存储】,然后在视图窗口点击【数据存储浏览器】,在弹出的窗口中选择刚刚创建的OpenWRT虚拟机目录,这个目录名字跟你OpenWRT虚拟机的名称一样,我这里是“IPTV”。选中虚拟机目录后,点击窗口左上方的【上载】,把你转换的或者下载的“vmdk”文件,上传到虚拟机目录下。请注意,镜像文件有两个“vmdk”文件,需要全部上传。但是上传完成后,Esxi窗口中只显示一个,不要担心。


第二步:点击ESXI左侧导航栏中的【虚拟机】,然后点击下面,然后在右侧视图窗口点击刚刚创建的虚拟机【IPTV】,然后点击【编辑】。


第三步:添加硬盘。在第二步点击【编辑】后,弹出对话框中,选择【添加硬盘】->【现有硬盘】,在弹出的对话框中,选择刚刚第一步中上传的镜像文件。


第四步:很重要的一步。添加刚刚创建的IPTV网络适配器。这里重点说下,创建虚拟机的时候只需要一个默认网络适配器,到现在这一步,需要再加入IPTV的网络适配器。顺序很重要。如下图:

第五步:修改引导选项,还是在上图中的窗口,进入【虚拟机选项】,往下找到【引导选项】,选择“BIOS”来引导虚拟机的固件。然后点击保存即可。

3. 修改OpenWRT虚拟机的IP
第一步:点击ESXI左侧导航栏中的【虚拟机】,然后在视图窗口点击刚刚创建并编辑好的虚拟机【OpenWRT】,然后点击左边的那个三角形播放按钮。

第二步:进入OpenWRT的命令行模式,等待OpenWRT加载完毕后按下回车,输入“vi /etc/config/netowork”这条命令进行IP地址的修改。

第三步:键入“i”进入编辑模式,然后找到“ipaddr”,把里面的IP修改为规划好的IP地址,我这里测试用的,暂时为“10.0.0.15”,需要跟你的主路由和Esxi在同一网段。编辑好之后,键下“Esc”键,退出编辑模式,然后键入“:wq”进行保存,注意“wq”前面有一个英文的冒号。

第四步:把本地连接(比如笔记本)的IP地址,跟上面设置的IP放到同一网段,然后在浏览器中输入OpenWRT设置的IP地址,就可以通过Web访问OpenWRT了。Lean大神的OpenWRT,默认账号“root”,默认密码是“password”。


4. OpenWRT固件选择
没有最好的固件,只有最适合自己的固件,每个人的上网需求不一样。现在很多固件都是基于Lean大神的源码进行二次编译的,我个人不喜欢koolshare,因为东西太多,我喜欢比较纯净的。OpenWRT官方的固件东西又太少,需要的插件需要自己找,很麻烦。所以我自己就基于Lean大神的固件按需求编译了一个版本,并且在IPTV融合这块测试了很多,保证能用。
四、 OpenWRT的IPTV设置
1. 接口设置
第一步:登陆刚刚创建好的OpenWRT,删除多余接口,只需保留一个LAN和一个WAN,即可。

第二步:修改WAN口,我这里iTV是拨号,填入账号密码,其他默认即可。如果你是DHCP模式也不要紧,先看下去。

第三步:修改LAN口,LAN口的【协议】选为“静态地址”;【IPv4地址】系统自动填入OpenWRT的IP,不用改;【IPv4网关】和【使用自定义的 DNS 服务器】默认留空即可。然后在下面关闭DHCP服务器以及禁用IPv6.



2. 修改WAN为静态IP地址
有同学问了,上一步中WAN不是设置为拨号了么,为什么现在又设置为静态IP地址呢,为何多此一举?这里很重要,看仔细了。
首先:通过上面一步的WAN口设置拨号,如果拨号成功,在接口界面会显示IP地址,把这个IP地址记下来。
第二:在我测试过程中,如果WAN口设置拨号,每次插拔网线,IP地址都会变化,而udpxy不容易跟得上这个IP的变化,所以插拔以此网线,IPTV就看不了了,需要把旁路由、IPTV路由挨个重启一遍才行,很麻烦。
第三:WAN口根据拨号下发的IP地址,设置成静态IP,就是插拔网线也不会IP变化了。
首先看下接口信息,拨号成功后WAN口会有下发的IP,请记下来。

第二:修改WAN口为静态地址,地址就是刚刚记录下来的下发的IP,其他默认。

五、 IGMPProxy和udpxy配置
Lean大神源码中只有udpxy,没有IGMPProxy。我网上找了一个IGMPProxy插件,没有图形界面,只能修改配置文件。
1. IGMPProxy安装
第一步:用WinSCP登陆OpenWRT。左侧导航找到IGMPProxy存放本地的目录,右侧导航进入OpenWRT的tmp文件夹,然后拖入。我这里用来提供IPTV服务的OpenWRT地址是“10.0.0.5”。前面图片中的“10.0.0.15”仅仅是为了截图临时用的IP地址,看官要保持统一。

第二步:用putty登陆OpenWRT,安装IGMPProxy。

如上图所示,输入两条命令:
cd /tmp (进入OpenWRT的tmp目录)
opkg install igmpproxy_0.2.1-4_x86_64.ipk (安装IGMPProxy,记得回车)
2. IGMPProxy配置
第一步:用WinSCP进入OpenWRT的etc/config目录下。

第二步:双击“igmpproxy”文件,把eth1也就是WAN口设置为“upstream”,把br-lan也就是LAN口设置为“downstream”,里面的接口名称要和网络接口中红框处的名称一致。如下图所示:


然后保存即可。
3. 防火墙配置
第一步:用WinSCP进入OpenWRT的etc/config目录下。

第二步:双击“firewall”文件,加入以下内容:

上图红框位置的参数,要修改为你自己的接口参数。里面的IP地址不用修改。
4. udpxy配置
第一步:安装,如果你的固件中没有udpxy,那么可以参考IGMPProxy的安装,就是把ipk文件先上传到OpenWRT的tmp目录,然后用putty键入命令进行安装。
第二步:安装完成后,刷新浏览器,在OpenWRT的菜单栏【服务】下可以找到。

第三步:进入设置界面,【Bind IP/Interface】中填入OpenWRT的地址;【端口】填入自定义端口,不与其他端口冲突即可;【Source IP/Interface】中填入WAN口的名称。如下图:

第四步:在浏览器中输入http://10.0.0.5:8688/status/(这个地址种的IP和端口换成你自己的),如果可以看到udpxy服务页面,说明udpxy配置成功。如下图所示:

六、 IPTV测试
1. 组播转串流
第一步:把你抓取到的IPTV播放地址换成串流格式(适合小白的使用Wireshark抓包IPTV的教程),加入你的IPTV频道地址为“igmp://229.89.0.3:8000”这种格式,那么把这个地址修改为http://10.0.0.5:8688/udp/229.89.0.3:8000。
第二步:打开PotPalyer,把上面的地址加入播放器。

正常的话,PotPlayer就可以播放电视直播了。
2. 可能的问题
因为每个人的网络环境、电信运营商都不一样,这篇文章不可能适合所有人。
如果按照上面的步骤没有播放成功,请尝试先把旁路由关掉电源,再把IPTV路由关掉电源;然后打开旁路由电源,再打开IPTV路由电源,如此反复。我再测试过程中,也遇到了配置好了却无法播放的问题,不停的重启,查找原因,才写出这篇文章。
没有成功,不要紧,多试试。生命不止折腾不休。
网友评论