上两节地址
本节的目的:
1、互联网+iptv通道双网融合,解决弱电盒到电视机只有一根网线的问题
2、iptv节目的共享给智能电视、安卓盒子
3、移动设备通过wifi观看iptv节目
一、IPTV使用路由器单WAN口验证
1、由于各地、各运营商IPTV不同,导致IPTV的认证模式也不同。比方电信多是PPPOE认证获得一个10/172开头的内网ip。开启一个10M的IPTV通道,和互联网带宽分离。移动多是DHCP从光猫获取,获得一个192开头的内网ip。还有一种IPoE认证方式,DCHP分配iptv给盒子,但是里面一般会多一个option的鉴权,比较麻烦。
正因为iptv众多的模式,所以为了降低我们融合的难度,我建议先用路由器单wan口来测试iptv能否正常观看。没有问题了,我们再来调试双wan融合。
2、路由器系统的选择
因为我们的终极目标是要双网融合一线,所以必须使用能多wan的系统。易用性很高的老毛子padavan因为不能多wan首先排除。其次,我们要使用igmpproxy和udpxy来转发组播信号,所以必须要能安装这两个玩意的系统。理论上讲openwrt/lede/潘多拉/梅林/高恪都可以,因为我使用的是K2P,所以我选择openwrt/潘多拉。
需要注意的是meal大神的openwrt CC 目前没法通过交换机设置vlan,没法设置多wan口,现在还没法用于本项目,但是他的无线稳定性据说还不错。
而原版的潘多拉因为无线驱动的问题,一直在等MTK修复,最近潘多拉的作者Lintel大神终于更新了潘多拉,无线的情况有大幅的改善,所以我们以潘多拉为例子来讲解。
下载地址:
找到K2P的最新版本下载即可
3、接线
我们按以下接线
光猫iptv接口---->路由器wan口
路由器Lan口---->iptv盒子
4、路由器安装软件
系统---->软件包---->刷新列表,等待系统更新软件源地址,不过报错请检查软件源是否正确
下载并安装软件包里面写igmpproxy---->确认
因为潘多拉新版网站的源最近一直出于陆续更新状态,可能会发现igmpproxy无法安装。
我这里提供一个ipk(下载链接,正确的名称为:igmpproxy_0.1-8_mipsel_1004kc_dsp.ipk,下载后发现文件名不对的请自己改名),用winscp上传到/tmp目录下面,然后用putty登录,cd进入/tmp目录
opkg install igmpproxy_0.1-8_mipsel_1004kc_dsp.ipk
就安装上了igmpproxy
下载并安装软件包里面写udpxy---->确认
下载并安装软件包里面写luci-app-udpxy---->确认
如果在已经安装软件列表中没有找到mwan3,那么我们就要安装一下
下载并安装软件包里面写mwan3---->确认
下载并安装软件包里面写luci-app-mwan3---->确认
下载并安装软件包里面写luci-i18n-mwan3-zh-cn---->确认
5、以pppoe拨号的iptv来配置路由器
网络---->接口------>找到wan------>修改------>切换PPPoE协议------>填写iptv盒子的pppoe账号密码----->保存应用
6、配置igmpproxy
用winscp登录路由器,找到/etc/config ,找到igmpproxy,修改如下
config igmpproxy
option quickleave 1
config phyint
option network wan
option direction upstream
list altnet 0.0.0.0/0
config phyint
option network lan
option direction downstream
7、配置防火墙
用winscp登录路由器,找到/etc/config ,找到firewall,在最下面添加
config rule
option target 'ACCEPT'
option src 'wan'
option name 'Allow-IGMP'
option proto 'IGMP'
config rule
option target 'ACCEPT'
option src 'wan'
option proto 'udp'
option name 'Allow-UDP-igmpproxy'
option family 'ipv4'
option dest 'lan'
option dest_ip '224.0.0.0/4'
config rule
option target 'ACCEPT'
option src 'wan'
option proto 'udp'
option name 'Allow-UDP-udpxy'
option dest_ip '224.0.0.0/4'
第一条的意思是允许组播IGMP包从wan口流进到路由器
第二条的意思是允许组播视频udp包从wan转发到lan
第三条的意思是允许组播视频udp包从wan流到路由器,由udpxy把组播转http协议发送
重启一下路由器,待pppoe获取到了ip后,开iptv盒子电源,iptv盒子进入设置---->网络设置----->把上网方式由pppoe改为dhcp,正常情况下,盒子直播应该就可以看了。不行的话重启一下iptv盒子
9、下面我们来配置udpxy
点服务---->udpxy
勾上 启用+Respawn+状态
Bind IP/Interface栏填写你的本地路由器Lan口ip
端口自定义,避开一些常用端口
Source IP/Interface填写pppoe-wan,这个来自你接口wan图标下面的小字
保存应用
开浏览器,输入http://你的路由器ip:你刚定义的端口/status 回车
此时应该就显示udpxy的状态了,如果没有,请检查系统进程里面是否有udpxy的进程。没有就检查Bind IP/Interface栏和Source IP/Interface栏是否填错了。其次检查上面设置防火墙里面udpxy的设置是否正确。
10、测试udpxy
找到我们第二节课里面保存的m3u播放列表,用记事本打开,把rtp://239.253.XXX.XX:XXXX的链接替换成http:// 你的路由器ip:你刚定义的端口/rtp/239.253.XXX.XX:XXXX的格式,保存,拖入vlc,应该就可以播放。
此时,udpxy状态页面会显示是哪个ip在收看视频,视频来源ip是多少,以及当前速度
如果没法播放,多半是上面的防火墙设置错误,请检查
11、关于igmpsnooping失效造成的udp风暴的处理
我们知道,组播协议有点类似一个微信群,把你拉倒cctv1的群里面,你就收看cctv1的视频流,视频流加载在udp连接上。换台就退当前的群拉你进另外的群。原理上谁看,就把这个视频udp连接转发给具体的那个端口/ip,这就是igmpsooning的作用。但是经过本坛基友的测试,openwrt这个功能是失效的。造成的后果就是:一旦Lan里面有人开启看rtp的组播视频,比方开了iptv盒子,或者电脑用vlc看rtp的组播视频,你用wireshake抓包会发现每一个LAN里面的端口都有被239开头的udp包刷屏,这就说明LAN里面形成了udp风暴,严重的时候会造成网络堵塞,路由器负载变高,死机。
解决的办法:
a、使用带igmpsooning/igmp侦听的网管交换机,8口的大约200以内。
路由器的LAN只接一根线到网管交换机,其他所有的设备全部接到交换机上,这个适合端口本来就不够要加交换机的
b、不需要加交换机,那么就必须使用udpxy转出来的http协议的视频流地址来播放。这样就避免了udp风暴,其次手机也可以观看了。缺点是iptv盒子不能用了,因为他是用rtp组播协议播放的,一用就又udp风暴了。只能用安卓盒子/智能电视安装直播软件来替代了。
以上我们单wan口调试ok以后,下面就可以来双wan融合了。
二、双wan融合
1、设置交换机vlan
网络---->交换机,此时系统已经标记了2行vlan出来了。我们点下面的 添加 按钮,新的一行VLAN ID我们填写3,其他如图所示填写,需要注意的是,上面2行也有变动,要一并修改。保存应用,此时LAN4口也就紧挨着WAN口的那一个变成了新的WAN口了。
2、新建接口
网络---->接口---->WAN---->修改---->基本设置,把刚才我们填入的iptv的pppoe账号密码替换成我们的互联网pppoe账号密码,保存
再到 高级设置---->使用默认网关勾上,使用网关跃点 填写 40 ,保存应用。
网络---->接口---->左下角 有个添加新接口按图填写,接口名称iptv,注意小写。新接口的协议选择pppoe,包括以下接口 选刚才我们在交换机新建的vlan eth0.3,提交
3、配置新建的接口
网络---->接口---->IPTV---->修改---->基本设置,填入的iptv的pppoe账号密码,保存
再到 高级设置---->使用默认网关勾上,使用网关跃点 填写 41 ,保存。
再到 物理设置---->检查接口是否选择的是交换机 VLAN: "eth0.3" (iptv)。
再到 防火墙设置---->创建/分配防火墙区域 不指定/新建 填写iptv ,保存应用
4、防火墙的设置
网络---->防火墙---->iptv 勾上 IP 动态伪装 MSS 钳制 ,保存
点iptv后面的修改,下面的端口触发 把 允许从源区域转发:LAN 勾上,保存应用
5、修改igmpproxy,udpxy防火墙设置
用winscp登录路由器,找到/etc/config ,找到firewall,找到我们刚才添加的内容把里面wan修改为iptv:
config rule
option target 'ACCEPT'
option src 'iptv'
option name 'Allow-IGMP'
option proto 'IGMP'
config rule
option target 'ACCEPT'
option src 'iptv'
option proto 'udp'
option name 'Allow-UDP-igmpproxy'
option family 'ipv4'
option dest 'lan'
option dest_ip '224.0.0.0/4'
config rule
option target 'ACCEPT'
option src 'iptv'
option proto 'udp'
option name 'Allow-UDP-udpxy'
option dest_ip '224.0.0.0/4'
6、重新配置igmpproxy和udpxy
用winscp登录路由器,找到/etc/config ,找到igmpproxy,把wan修改为iptv
config igmpproxy
option quickleave 1
config phyint
option network iptv
option direction upstream
list altnet 0.0.0.0/0
config phyint
option network lan
option direction downstream
点服务---->udpxy
Source IP/Interface填写pppoe-iptv,这个来自你接口IPTV图标下面的小字
保存应用
7、负载均衡/mwan3的配置
其实igmpproxy里面已经定义了,所有LAN口里面rtp组播请求都会被转发到IPTV的那个WAN口,所以mwan3不用安装都已经可以直接用了。我们这里配置mwan3的意义在于:IPTV盒子使用回放、时移、点播的时候能走IPTV给的10M带宽,不分享互联网带宽,防止时移、点播走互联网带宽不能使用
网络---->负载均衡
如图设置,新建接口wan,iptv
其中,192.168.5.2是我在路由器中给IPTV机顶盒设置的静态DHCP的ip
保存应用
重启路由器,等待两个wan口都拨号完毕
iptv盒子开机看直播频道,电脑开speedtest测速。我们在路由器的
状态--->实时信息---->流量里面,可以在pppoe-wan和pppoe-iptv里面观察到2波流量,iptv标清在400K/s左右,高清在1M/s左右。这是说明我们的融合就成功了。
接着就可以把iptv盒子淘汰下来了,一根线就把互联网+iptv数据传递给安卓盒子/智能电视了。手机/平板直接可以用mxplayer使用udpxy的地址来观看视频了。