OpenWrt 旁路由实现组播转单播:全屋终端自由看直播

前言

本文旨在分享如何利用 OpenWrt 旁路由环境,通过 udpxy 插件将运营商的 IPTV 组播信号转换为单播信号,从而实现家庭网络内手机、电视、平板等设备随时随地观看直播。

注意: 本文不涉及“单线复用(VLAN)”的复杂交换机配置,而是侧重于数据流的打通;
拓扑: 移动光猫 -> 主路由 -> OpenWrt 旁路由 -> 终端设备;
适用: 福建福州移动 IPTV;
说明: 如果你知道 福州联通 的组播 VLAN,也适用。

一、 光猫侧配置:打通物理链路

首先需要获取光猫的超级管理员密码(建议直接询问宽带安装师傅)。我们的目标是将 IPTV 端口改为桥接模式,并透传组播数据。

1. 修改 IPTV 业务模式

在“网络”设置中找到现有的 IPTV 连接,记录现有值,特别是 VLAN ID802.1p 数值。

  • 操作步骤:

    1. 删除原有的路由模式 IPTV 连接;
    2. 新建一条连接,模式选择 Bridge(桥接)
    3. 端口绑定:勾选旁路由连接的物理端口(如 LAN2);
    4. VLAN 模式:选择 改写(Tag)
    5. VLAN ID:填入刚才记录的数值,福州移动是 431,福州联通是 134;
    6. 802.1p:填入刚才记录的数值,福州移动是 5;
    7. 业务类型:选择 IPTVOther
    8. 若要选择封装格式,实测 PPPoE 与 IPoE 并无区别。

00.接口桥接.jpg

2. 组播配置(关键)

在光猫的“应用”或“组播设置”界面进行如下操作:

  • 组播 VLAN: 填入福州移动的公共组播 VLAN ID 100(福州联通据说是 4000,有知道的朋友可以补充下);

01.组播VLAN.jpg

  • IGMP 设置:

    • 启用 IGMP Snooping
    • 取消勾选 IGMP Proxy
    • 若有“跨 VLAN 组播”选项,请务必勾选。

04.IGMP SNOOPING.jpg

05.IGMP PROXY.jpg

07.跨VLAN.jpg

二、 旁路由配置:身份认证与插件安装

1. 创建 IPTV 接口

  1. 接口设置: 在 OpenWrt 中新建接口,假设命名为 cmiptv
  2. 物理设置: 选择连接光猫 IPTV 口的网卡(如 eth2);
  3. 协议: 选择 DHCP 客户端
  4. MAC 地址: 一般会验证,但不严格,为避免冲突,建议手动修改该接口的 MAC 地址,与原机顶盒尾数略有不同即可;
  5. 防火墙设置: 新建一个防火墙区域如 cmiptv,并将接口加入其中;
  6. 若无意外这时候可以取得 10 开头的内网地址。

08.接口.jpg

2. 防火墙安全设置

进入“网络” -> “防火墙”,找到 cmiptv 区域:

  • 入站/出站/转发: 全部设置为 允许(accept)
  • IP 动态伪装(MASQUERADE): 必须勾选。

09.防火墙.jpg

3. 安装与配置 udpxy

在软件包管理中搜索并安装:udpxyluci-app-udpxy 及中文语言包 luci-app-udpxy-zh-cn

  • 配置参数:

    • 绑定 IP/接口: 填入旁路由的局域网 IP(如 192.168.31.3);
    • 端口: 自定义(如 10086);
    • 源 IP/接口: 选择前面创建的 cmiptv 接口;
    • 缓冲区: 若硬件性能允许,建议设为最大(如 2097152),缓冲区消息填 200,这能有效解决 4K 频道卡顿。

10.udpxy.jpg

  • 状态检查: 浏览器访问 旁路由IP:10086/status,如 http://192.168.31.3:10086/status,显示运行页面即表示成功。

11.status.jpg

三、 进阶调优:IGMP 版本与路由表

1. 修改 IGMP 版本

由于大多数 IPTV 系统使用的是 IGMP v2,而 OpenWrt 默认可能为 v3,需手动强制转换。

  • 在系统启动脚本或 SSH 中执行:

临时生效:

sysctl -w net.ipv4.conf.eth2.force_igmp_version=2

永久生效:

root@OpenWrt:~# cat /etc/sysctl.d/12-igmp.conf
net.ipv4.conf.eth3.force_igmp_version=2
net.ipv4.conf.eth2.force_igmp_version=2
  • 验证:

    sysctl net.ipv4.conf.eth2.force_igmp_version

2. 添加静态路由

为了让组播数据包能够准确找到 IPTV 接口,需要添加路由策略,这里先说操作。

  • 操作: 在“网络” -> “静态路由”中添加;
  • 接口: 选择 IPTV 接口,如我创建的是 cmiptv
  • 对象: 组播地址段(例如福州移动是 239.253.0.0/24,福州联通是 239.255.40.0/24,建议抓包后按实际确认,下一步讲)。

12.路由.jpg

四、 获取频道列表:抓包实战

如果不知道直播源地址,可以使用 Wireshark 进行抓包:

  1. 将机顶盒接入旁路由的 IPTV 接口;
  2. 在旁路由开启抓包(使用 tcpdump 或界面自带工具);
  3. 机顶盒开机并切换几个频道,停止抓包;
  4. 利用 Wireshark 中分析抓包,过滤 http 协议,查找 POST /EPG/jsp/getchannellistHWCTC.jsp 相关的请求;
  5. 在响应包中即可找到 igmp:// 格式的组播地址(以及 rtsp:// 的单播地址)。

13.抓包.jpg

地址转换公式:

  • 原组播地址: igmp://239.255.40.149:8208
  • 单播转换后: http://192.168.31.3:10086/udp/239.255.40.149:8208/

五、 总结

完成上述步骤后,就可以将整理好的单播地址制作成 .m3u 播放列表,导入 PotPlayer、VLC 等播放器,此时,家里任何连接 Wi-Fi 的设备都可以享受直播了。

14.播放.jpg

划重点:

1、接口 VLAN ID:431
2、组播 VLAN ID:100
3、IGMP 版本:2

题外话:

一样的配置,联通的组播数据一直不通,抓包发现发送 igmp query 的永远是 192.168.1.1(光猫默认 IP),即使改了光猫 IP,仍然是 192.168.1.1,导致组播组无法加入,疑似光猫固件硬编码了,不知道有没搞过的大佬分享下经验。


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 openwrtiptv直播单播组播 的文章

 本文最后更新于 2026/05/03 22:44:11,可能因经年累月而与现状有所差异

 引用转载请注明: VirCloud's Blog > 媒体 > OpenWrt 旁路由实现组播转单播:全屋终端自由看直播

精选评论

  1. 小杰
    小杰 回复

    Windows 10Chrome 136.0.0.0来自 福建 的大神

    可能是需要开通组播权限

  2. Jonty
    Jonty 回复

    Windows 10Chrome 132.0.0.0来自 上海 的大神

    我这电信师傅跟我说 桥接用不了iptv 应该能搞 有点复杂 设备还没到 回头再试试

    1. 欧文斯
      欧文斯 回复

      Mac OS X 10_15_7Safari 605.1.15来自 福建 的大神

      我的场景就是桥接下的使用

    2. 欧文斯
      欧文斯 回复

      Windows 10Chrome 137.0.0.0来自 福建 的大神

      你不要跟他说桥接,直接要超密就行,当初我说要桥接就回我说政策不允许。