前言
前段时间在网上看到一个视频,大致讲的是软路由系统性能大比拼。视频里拿 RouterOS, iKuai 和 OpenWrt 做了些对比。后来偶然看到,iKuai会对所有流量做分析分类,不管是否开启策略流控。
此前笔者的主路由系统一直是 iKuai 爱快,我想上述情况势必会为我性能低下的 J4125 软路由造成一定影响。于是乎…
秉着拥抱开源 闲着没事干瞎搞 和学习的心理,我在这次暑期放假开始了路由系统的迁移工作,在这里记录一下在本次迁移中,关于 iPTV 的配置方案。
浙江电信 iPTV 使用 DHCP 鉴权方案,在机顶盒设置中呈现为 IPoE 方式上网。
准备工作
- 运营商 iPTV 机顶盒
需要事先完成认证,确保将其接入光猫 iTV 口时,能直接正常使用 - 一根网线
用于连接 iPTV 机顶盒和电脑主机 - WireShark 软件
用于抓包 官网下载 - 搭载 OpenWrt 系统的路由设备
如果你不具备光猫后台访问权限,则可能需要两根网线接入路由。 - 其他基础资源
抓包工作
要获取后续 DHCP 鉴权所使用的 Option 60 信息,我们需要对机顶盒发出的数据进行抓包。
我们假设你的机顶盒已处于未被修改的状态(即准备工作中提到的状态)。按如下步骤进行:
- 将网线两端分别接入机顶盒网口和电脑有线网络接口a
- 打开 WireShark 软件,选取对应网络接口,开始抓包
(如没有网络接口,请使用管理员权限运行 WireShark) - 为机顶盒上电,等待数据包出现b
a 若你的电脑仅靠这个网口上网,那么你的电脑将会断网,请提前准备好 WireShark 软件
b 机顶盒会无法联网,这是预期内的情况,无需在意
当你在 WireShark 软件中,看到 Protocol 为 DHCP 的包时(形如下图),可停止抓包。随后,单击对应包查看详情。
浙江电信 iPTV 在鉴权时,只要求 Vendor Class identifier (Option 60) 以及 Host Name (Option 12) 有效即可。
在这里,我们将 Option 60 以如图中选项 (右键 - 复制 - …as a Hex Stream) 的形式复制出来,并将 Host Name 复制出来 (右键 - 复制 - 值) 保留备用。
如果没有差错,那么这个时候机顶盒的任务已经完成了,可以将电脑网线复原了。
设置 IPTV 接口
网络设备配置
由于笔者具有修改光猫 VLAN 绑定的权限,因此本文以单线复用为例。
多线配置方法类似,只需为接入 iTV 口的网卡分配 VLAN 号即可。
按照下图指示,找到网络设备配置项:
在图中,圈起来的四个选项需要修改。
- 设备类型 选择 VLAN (802.1q)
- 基础设备 选择可以访问 iPTV VLAN 的设备
(对于已在光猫侧修改 VLAN 绑定的单线而言,选择当前 WAN 口即可;否则,请选择链接 iTV 口的设备) - VLAN ID 根据光猫中的情况填写 (浙江电信为 43)
- 设备名 可自定义,此处保持默认
- 其他:MAC 地址无需修改,IPv6 可关闭
随后,返回接口页面。
接口配置
在接口设置界面,添加新接口,名称自拟,本文使用 iptv
。
大体按照上图配置即可。画横线处需要留意,解释如下:
- 协议:DHCP 客户端
- 设备:选择上文中配置的 VLAN 设备
- 请求 DHCP 时发送的主机名 (Hostname):填写抓包获取的 Option 12
- 请求 DHCP 时要发送的供应商类别 (Vendor Class): 填写抓包获取的 Option 60
- 使用默认网关:取消勾选(否则会导致网关错误,路由器无法上网)
dhcp.sh 脚本修改
注意:本人暂不清楚 OpenWrt 系统升级后该脚本是否会被覆盖,若升级系统后不可用,请尝试重新修改。
配置完成后,暂时无法直接使用。需要修改 OpenWrt 的 DHCP 脚本,使刚刚填写的 Vendor Class 支持 16 进制 Stream。
使用 SSH 或其他方式登入 OpenWrt 的 shell,编辑文件 /lib/netifd/proto/dhcp.sh
(大约位于第 72 行)
|
|
修改完成后,重启网络接口。稍等片刻,刷新页面,这时候你应该能获取到对应的内网 IP 了!(一般为 10.0.0.0/8 的 IP)
组播流代理
我们将需要一个组播流代理程序,使得 IPTV 接口上的视频数据能通过代理被访问。
安装插件
本文以 msd_lite 为例,你也可以使用 udpxy 插件,效果是一样的。
由于 OpenWrt 官方软件包仓库并没有 msd_lite,我们可以前往 immortalwrt 的软件包仓库获取这个包 (需要同时下载 luci 包和 packages 包)。
以我的 OpenWrt 24.10.2 为例,软件包下载链接如下:
|
|
如果你的 OpenWrt 软件版本不同,请到 ImmortalWrt 软件包仓库 中查找对应版本和架构的包。
简单配置插件
msd_lite 的配置非常简单。在服务选项卡中找到 Multi Stream daemon Lite (组播转换) ,勾选启用,并将源接口配置为刚刚的 iptv 接口即可。
修改完成后,保存并应用,你应该就可以使用路由器代理的组播源地址播放 IPTV 直播流了~
以浙江电信的 CCTV 1 源为例,可以使用如下地址观看直播:
|
|
当然啦,IP,端口,组播地址之类的得根据自己路由设置和当地情况修改
这里附上一个浙江电信 IPTV 组播地址仓库 (Github),理论上全省通用,下过来自己改改路由器地址和端口就能用啦 ˋ( ° ▽、° )
组播源地址一般不怎么修改,不知道本地组播地址的可以去网上搜搜,大概率会有其他人抓好的地址可供使用。如果很不幸地没有人抓的话,可以搜搜教程自己试试抓包qwq
进阶玩法
如果你想要在这样操作之后,让原来的机顶盒依然能用,可能需要对机顶盒需要访问的IP进行抓包,并配置相应的静态路由。操作会相对麻烦一些,这里不提供详细教学。
一个简单的思路是:
|
|
我这边用到的网段如下,仅供参考:
记得操作完把默认网关调回去哟
最后
呼…总算是填完了第一个坑!没什么好唠嗑的啦,先这样。如果文章中有任何疏漏等问题,请在下方评论区提出,我会定期检查邮箱查看更改滴(o゜▽゜)o☆