本帖最后由 lcsuper 于 2019-4-25 22:44 编辑
上两节地址 https://www.right.com.cn/FORUM/thread-328186-1-1.html https://www.right.com.cn/FORUM/thread-328805-1-1.html
本节的目的: 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/udpxy无法安装。 我这里提供ipk,用winscp上传到/tmp目录下面,然后用putty登录,cd进入/tmp目录 请注意24kc是针对7620CPU的,1004kc是针对7621的
- 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的地址来观看视频了。
8、针对电视盒子+智能电视,直播和第三方点播的分流之负载均衡/mwan3的配置我们首先要从抓直播源包的分析中,找到rtsp单播的地址,然后把他整理成网段,也就是看有几位是相同的。然后用CIDR方式表示。
新建规则,源地址为空,目标地址为上面整理的网段,指定走iptv的策略。注意最后的规则排序要在default规则的上方。
下图供大家参考。
|