下面说在其他设备上看 IPTV 的方式。
基本原理其他人已经说的很详细了,就是在 ROS 上跑个 msd_lite 或者 udpxy 的容器,代理一下,把 IPTV 的组播数据变换成 LAN 里面的普通数据流。
首先,还是建立好光猫一侧的接口,把 VLAN 85 引进来。
/interface vlan add comment=IPTV interface=ether1 name=vlan85-eth1 vlan-id=85
接下来看看有没有连通,给这个 VLAN 接口弄个 B 面内网地址:(注意,如果已经建了桥,所以 VLAN85 的主接口就是桥的 br-iptv ,这是重点。不建桥用 msd_lite 的时候主接口就是 vlan85-eth1)
/ip dhcp-client add add-default-route=no comment=IPTV interface=vlan85-eth1 use-peer-dns=no use-peer-ntp=no
这时候看/ip/dhcp-client/show , 应该就能看到一个 23 开始的 IP 地址,这说明 VLAN 就设置成功了。
下面就是装 msd_lite 了,下面是我的流程:
/interface bridge add comment="Dockers bridge" igmp-snooping=yes name=dockers vlan-filtering=yes
/ip address add address=192.168.89.1/24 comment=Dockers interface=dockers network=192.168.89.0
/ip firewall nat add action=dst-nat chain=dstnat comment=MSD_Lite dst-address=192.168.88.1 dst-port=7088 in-interface-list=LAN protocol=tcp to-addresses=192.168.89.20
#ipv6 部份可以不做
/ipv6 address add address=fd80:1111:2222:3333::1 interface=dockers
/ipv6 firewall nat add action=masquerade chain=srcnat comment="for dockers" out-interface=pppoe-out1 src-address=fd80:1111:2222:3333::/64
# docker
/container config set registry-url=
https://registry-1.docker.io tmpdir=/disk1/tmp
注意最后一条设定 igmp-proxy 上游的语句。如果你是跟前面一样有 IPTV 盒子建了 br-iptv 的桥,那么这里的接口名字就用 br-iptv 而不是 vlan85-eth1, 这是非常重要的一点。
接下来,你就可以在 LAN 里找一个支持 IPTV 流的播放器,试着打开这个链接
http://192.168.88.1:7088/rtp/239.45.3.145:5140
看看了。比如 Linux 上的 VLC ,Kodi 里的 Simple IPTV client, 安卓盒子的 dtpv 等等。