目的: 实现内网客户端播放组播流、播放单播流。
原先环境:
中兴 H2-2 光猫:
- 开启IGMP代理,关闭RTSP,绑定IPTV业务VLAN到LAN1(一线多用)。
- 华硕ACRH17 Openwrt路由器:交换机新建IPTV绑定VLAN,新建接口IPTV 随便设置个地址、启用桥接、取消IGMP嗅探,设置udpxy、源接口br-iptv。
- 现在就可以收看组播源了,IPTV接口也有流量产生。
(用原环境的方法,在iptv接口启动的一瞬间是能看的,但要客户端要一直开着,关闭客户端再看就没有数据下发过来。)
现在环境: 猫棒MA5671A + ESXI7 直通BCM57810网卡 + Openwrt x86
猫棒配置
1、配置好猫棒注册信息。
2、配置组播vlan + iptv业务vlan。
3、telnet进原光猫查询IGMP 版本,配置猫棒对应的IGMP版本。保存并应用-->然后重启(我这里是v2)
cat /proc/net/igmp
OpenWRT路由器配置
1、强制IGMP v2 版本。
vi /etc/sysctl.conf\
net.ipv4.conf.all.force_igmp_version = 2
2、新建iptv接口,随便设置个ip/32,不 使用内置的IPv6管理、MAC地址复制的光猫、MTU 1900也是光猫里的、网关点数1000、自定义接口eth1.102 (这里的102是iptv的业务vlan号),不要桥接接口。开启lan接口的IGMP嗅探。
3、添加防火墙区域-iptv、入站、出站、转发都接受,开启 IP动态伪装、MSS钳制,网络-刚才新建的iptv接口,端口触发 源区域 lan。
4、防火墙新建6条 通信规则。
vi /etc/config/firewall
config rule
option target 'ACCEPT'
option src 'iptv'
option family 'ipv4'
option proto 'igmp'
option name 'IPTV-IGMP'
config rule
option target 'ACCEPT'
option src 'iptv'
option name 'IPTV-Incoming'
option family 'ipv4'
option proto 'udp'
option dest_ip '224.0.0.0/4'
config rule
option target 'ACCEPT'
option src 'iptv'
option dest 'lan'
option name 'IPTV-IGMP-LAN'
option family 'ipv4'
option proto 'igmp'
config rule
option target 'ACCEPT'
option src 'iptv'
option dest 'lan'
option name 'IPTV-Incoming-LAN'
option family 'ipv4'
option proto 'udp'
option dest_ip '224.0.0.0/4'
config rule
option target 'ACCEPT'
option src 'iptv'
option name 'IPTV-MLD'
option family 'ipv6'
option proto 'icmp'
list icmp_type '130/0'
list icmp_type '131/0'
list icmp_type '132/0'
list icmp_type '143/0'
option src_ip 'fe80::/10'
config rule
option target 'ACCEPT'
option src 'iptv'
option dest 'lan'
option name 'IPTV-MLD-LAN'
5、配置udpxy, 因为有的数值无法保存直接编辑配置文件。
vi /etc/config/udpxy
config udpxy
option respawn '1'
option verbose '0'
option status '1'
option disabled '0'
option port '4022'
option source 'eth1.102'
option max_clients '100'
option log_file '/var/log/udpxy.log'
option buffer_size '20480'
option buffer_messages '10'
option buffer_time '10'
option nicrement '1'
option mcsub_renew '30'
6、安装配置igmpproxy
opkg update
opkg install igmpproxy
vi /etc/config/igmpproxy
config igmpproxy
option quickleave 1
# option verbose [0-3](none, minimal[default], more, maximum)
config phyint
option network iptv
option zone iptv
option direction upstream
list altnet 0.0.0.0/0
config phyint
option network lan
option zone lan
option direction downstream
做完上述操作最把猫棒和OpenWRT路由都重启一下。
现在内网可以同时看组播和udpxy转发的单播了。
某地移动100M宽带 能同时看10路不同频道。