|
本帖最后由 mantouboji 于 2024-9-5 15:38 编辑
当年升级千兆宽带的时候因为听说用IPTV就不能改桥接,改了桥接就看不了IPTV,就没要IPTV业务。再加上本来也不看简体汉字的电视节目,一直也就没折腾。
最近折腾了一番,略有成果,简单总结一下。
硬件:
- 上海电信SDN光猫,改了桥接。
- 拨号路由 Mikrotik RB4011, RouterOS 7.15.3。光猫接在ether1
- 观看设备 Apple TV 上跑的iPlayTV、APTV
- CoreELEC里面的simple IPTV client
基本原理就是把跑IPTV的VLAN 85设法弄出来,跨过路由器。
下面还可以细分成两种:
- 一种是用电信给的机顶盒观看,或者是现在不给物理机顶盒了改在电视里转一个app,这种需要建桥接。假设你的机顶盒或者电视机用网线连接到了RB4011的ether2 .
- 另一种是不交钱白票,在你电视、电脑、AppleTV、iPad上用普通视频app观看,不要官方机顶盒。这种不需要建桥接,但是需要你在RouterOS上跑容器。
两种配置其实是兼容的,仅仅有一处不太一样,偶也是在这里花了些功夫。
至于如何打开RouterOS的容器功能,请自行阅读官方文档。
先说第一种,用机顶盒看。
首先,建立好光猫一侧的接口,把VLAN 85 引进来。
- /interface vlan add comment=IPTV interface=ether1 name=vlan85-eth1 vlan-id=85
复制代码
然后建一个路由器这边的接口。
- /interface vlan add interface=bridge1 name=vlan85-br vlan-id=85
复制代码
然后建个桥,把这俩连接起来
- /interface bridge add comment="IPTV bridge" igmp-snooping=yes name=br-iptv protocol-mode=none pvid=85 vlan-filtering=yes
- /interface bridge port add bridge=br-iptv interface=vlan85-eth1 pvid=85
- /interface bridge port add bridge=br-iptv interface=vlan85-br pvid=85
复制代码
接下来看看有没有联通,给这个桥弄个B面内网地址:(注意,因为已经建了桥,所以VLAN85的主接口就是桥的br-iptv,这是重点。不建桥用msd_lite的时候主接口就可以是vlan85-eth1)
- /ip dhcp-client add add-default-route=no comment=IPTV interface=br-iptv use-peer-dns=no use-peer-ntp=no
复制代码
这时候看/ip/dhcp-client/show , 应该就能看到一个23开始的IP地址,这说明VLAN就设置成功了。
这时候机顶盒上应该还看不到B面。假设你的机顶盒或者电视机接入了ether2, 那么要把这个口放进VLAN里。
- /interface bridge vlan add bridge=br-iptv comment="IPTV Box" tagged=ether2 vlan-ids=85
复制代码
这样呢,从机顶盒里发出来的带有VLAN 85标记的数据包才能被送到br-iptv桥里。这是次重点。
下面是大家都知道的,神秘的DHCP选项。其实这串神秘数字背后就是一个结构,前是是路由器名字后面是VLAN,重点是告诉机顶盒走VLAN 85, 就是靠近末尾那个0055, 别的没啥。
- /ip dhcp-server option add code=125 force=yes name=iptv value=0x000000001a02064847572d435403045a58484e0a0220000b0200550d02002e
- /ip dhcp-server network add address=192.168.88.0/24 dhcp-option=iptv
复制代码
注意,这个192.168.88.0可以改成你自己的网段地址,重点是这个网段里要加上DHCP 125这个消息。
至此,看看你的机顶盒,应该就可以拿到B面地址,可以通过鉴权看电视了。
---------------------------------- 我是华丽的分割线 -----------------------------------------------
下面说在其他设备上看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等等。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|