前言
本文旨在分享如何利用 OpenWrt 旁路由环境,通过 udpxy 插件将运营商的 IPTV 组播信号转换为单播信号,从而实现家庭网络内手机、电视、平板等设备随时随地观看直播。
注意: 本文不涉及“单线复用(VLAN)”的复杂交换机配置,而是侧重于数据流的打通;
拓扑: 移动光猫 -> 主路由 -> OpenWrt 旁路由 -> 终端设备;
适用: 福建福州移动 IPTV;
说明: 如果你知道 福州联通 的组播 VLAN,也适用。
一、 光猫侧配置:打通物理链路
首先需要获取光猫的超级管理员密码(建议直接询问宽带安装师傅)。我们的目标是将 IPTV 端口改为桥接模式,并透传组播数据。
1. 修改 IPTV 业务模式
在“网络”设置中找到现有的 IPTV 连接,记录现有值,特别是 VLAN ID 和 802.1p 数值。
操作步骤:
- 删除原有的路由模式 IPTV 连接;
- 新建一条连接,模式选择 Bridge(桥接);
- 端口绑定:勾选旁路由连接的物理端口(如 LAN2);
- VLAN 模式:选择 改写(Tag);
- VLAN ID:填入刚才记录的数值,福州移动是 431,福州联通是 134;
- 802.1p:填入刚才记录的数值,福州移动是 5;
- 业务类型:选择 IPTV 或 Other;
- 若要选择封装格式,实测 PPPoE 与 IPoE 并无区别。

2. 组播配置(关键)
在光猫的“应用”或“组播设置”界面进行如下操作:
- 组播 VLAN: 填入福州移动的公共组播 VLAN ID 100(福州联通据说是 4000,有知道的朋友可以补充下);

IGMP 设置:
- 启用 IGMP Snooping;
- 取消勾选 IGMP Proxy;
- 若有“跨 VLAN 组播”选项,请务必勾选。



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

2. 防火墙安全设置
进入“网络” -> “防火墙”,找到 cmiptv 区域:
- 入站/出站/转发: 全部设置为 允许(accept);
- IP 动态伪装(MASQUERADE): 必须勾选。

3. 安装与配置 udpxy
在软件包管理中搜索并安装:udpxy、luci-app-udpxy 及中文语言包 luci-app-udpxy-zh-cn。
配置参数:
- 绑定 IP/接口: 填入旁路由的局域网 IP(如
192.168.31.3); - 端口: 自定义(如
10086); - 源 IP/接口: 选择前面创建的
cmiptv接口; - 缓冲区: 若硬件性能允许,建议设为最大(如
2097152),缓冲区消息填200,这能有效解决 4K 频道卡顿。
- 绑定 IP/接口: 填入旁路由的局域网 IP(如

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

三、 进阶调优: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,建议抓包后按实际确认,下一步讲)。

四、 获取频道列表:抓包实战
如果不知道直播源地址,可以使用 Wireshark 进行抓包:
- 将机顶盒接入旁路由的 IPTV 接口;
- 在旁路由开启抓包(使用
tcpdump或界面自带工具); - 机顶盒开机并切换几个频道,停止抓包;
- 利用 Wireshark 中分析抓包,过滤
http协议,查找POST /EPG/jsp/getchannellistHWCTC.jsp相关的请求; - 在响应包中即可找到
igmp://格式的组播地址(以及 rtsp:// 的单播地址)。

地址转换公式:
- 原组播地址:
igmp://239.255.40.149:8208 - 单播转换后:
http://192.168.31.3:10086/udp/239.255.40.149:8208/
五、 总结
完成上述步骤后,就可以将整理好的单播地址制作成 .m3u 播放列表,导入 PotPlayer、VLC 等播放器,此时,家里任何连接 Wi-Fi 的设备都可以享受直播了。

划重点:
1、接口 VLAN ID:431
2、组播 VLAN ID:100
3、IGMP 版本:2
题外话:
一样的配置,联通的组播数据一直不通,抓包发现发送 igmp query 的永远是 192.168.1.1(光猫默认 IP),即使改了光猫 IP,仍然是 192.168.1.1,导致组播组无法加入,疑似光猫固件硬编码了,不知道有没搞过的大佬分享下经验。
Windows 10Chrome 136.0.0.0来自 福建 的大神
可能是需要开通组播权限
Windows 10Chrome 132.0.0.0来自 上海 的大神
我这电信师傅跟我说 桥接用不了iptv 应该能搞 有点复杂 设备还没到 回头再试试
Mac OS X 10_15_7Safari 605.1.15来自 福建 的大神
我的场景就是桥接下的使用
Windows 10Chrome 137.0.0.0来自 福建 的大神
你不要跟他说桥接,直接要超密就行,当初我说要桥接就回我说政策不允许。