猫棒MA5671A+Openwrt x86 看组播IPTV

3,879 阅读2分钟

目的: 实现内网客户端播放组播流、播放单播流。

原先环境:

中兴 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。

image.png

3、telnet进原光猫查询IGMP 版本,配置猫棒对应的IGMP版本。保存并应用-->然后重启(我这里是v2)

cat /proc/net/igmp

image.png 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嗅探。

image.png

image.png

image.png

image.png 3、添加防火墙区域-iptv、入站、出站、转发都接受,开启 IP动态伪装、MSS钳制,网络-刚才新建的iptv接口,端口触发 源区域 lan。

image.png

image.png 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路不同频道。