返回文章列表

Article

终极指南:OpenWrt 24.x 单线复用实现宽带拨号与 IPTV 双网融合

一份基于 OpenWrt 24.x 的实战教程:在光猫到路由器仅一根网线的场景下,完成 Internet 与 IPTV 的单线复用与双网融合。

更新于

对于喜欢折腾家庭网络的玩家来说,把 IPTV 融合到局域网,让全家任意设备都能看电视,是一件极具成就感的事。

本文将为你提供一份详尽的实战指南。本教程适用场景明确:OpenWrt 作为主路由拨号,光猫与 OpenWrt 之间只有一根网线,这根线同时承担 Internet 与 IPTV 业务


一、 核心概念科普:在动手前你需要知道什么?

很多新手跟着教程做却频频翻车,往往是因为没有理清底层的网络逻辑。在开始配置之前,我们先达成几个核心共识:

1. 你的场景本质上是“单线复用(VLAN Trunk)”

你现在物理上只有一根网线连接光猫和路由器,要同时跑两套业务,就必须把它当成 Trunk 口 使用。

  • 一套逻辑接口负责 PPPoE 宽带上网。
  • 一套逻辑接口负责 IPTV 专网接入。
  • 这二者通过不同的 VLAN ID 来区分隔离。

2. 光猫配置是成败的绝对前提

如果光猫连 OpenWrt 的那个端口,没有同时绑定/透传 Internet 和 IPTV 的对应 VLAN,那 OpenWrt 里怎么配都不可能成功!第一检查项永远是光猫的业务绑定状态

3. 直播与回看的本质区别:组播 vs 单播

  • 直播(组播 Multicast):重点在于 VLAN 配置、组播流引入,以及利用 rtp2httpd 等工具将组播转为 HTTP 单播供局域网播放。
  • 回看 / FCC(单播 Unicast):涉及机顶盒鉴权信息(如 MAC、DHCP Option 12/60 字段),往往还需要配置策略路由(PBR)来确保流量走向正确的 IPTV 接口。
  • 黄金法则:先跑通直播,再追求回看 / FCC,这是最稳妥的路线。

4. 彻底搞懂 IGMP Snooping 与 IGMP Proxy

不要轻信网上“一律全开”或“一律全关”的说法。

  • IGMP Snooping(防泛洪):属于二层能力,主要防止组播流量在局域网内泛洪(一开电视全网卡死,优先怀疑它)。
  • IGMP Proxy(跨网段):属于三层能力,负责让组播流量跨越不同网段转发(光猫直连能看,接路由器不行,优先怀疑它)。
  • 如果我们使用 rtp2httpd 转换组播为 HTTP,局域网内的最终流量主要是单播,此时 Snooping 不是绝对必需项。而 rtp2httpd 等转换工具会通过 Linux 内核 Socket 机制自行加入组播组,通常不需要额外安装 igmpproxy。两者同时运行反而可能互相争抢 IGMP 报文,导致频道卡顿或假死。如果不装 igmpproxy 时确实收不到组播流,再将其作为排障手段尝试。

二、 避坑排雷:OpenWrt 24.x 架构差异

网上的大量教程基于老版本的 swconfig 架构编写,直接照抄会导致找不到菜单、概念混淆甚至断网。OpenWrt 24.x 用户请务必注意以下几点:

  1. DSA 架构全面普及:在 OpenWrt 24.x 中,配置 VLAN 不再使用 eth0.1 这种命名或“交换机(Switch)”页面。现在依赖的是“网络 → 设备(Devices)”和“网络 → 接口(Interfaces)”的层级分离设计。
  2. 设备(Device)与接口(Interface)的区别
    • 设备偏向底层物理或数据链路层,例如 waneth1wan.30eth1.30(VLAN 子设备)。
    • 接口偏向协议层,例如将 PPPoE 或 DHCP 协议绑定到特定的底层设备上。
  3. 不要随便乱动 br-lan:在单线复用的第一阶段,我们只需在 WAN 侧物理设备上拆分逻辑接口,除非你需要专门划分一个物理 LAN 口给机顶盒,否则一开始不需要去配置桥 VLAN 过滤。
  4. 包管理器注意:OpenWrt 24.10 稳定版仍使用 opkg,但未来的版本(如 snapshot / 主线分支)已切换为 apk。安装插件前请根据自己的固件版本使用对应的命令。

三、 保姆级实战教程(基于 OpenWrt 24.x + LuCI)

第 0 步:备份是唯一的后悔药

在 LuCI 中进入“系统 → 备份 / 升级”导出配置,或者通过 SSH 备份 /etc/config/network/etc/config/firewall/etc/config/dhcp

第 1 步:确认底层 WAN 设备与 VLAN 信息

  1. 进入“网络 → 接口”,查看当前 WAN 接口绑定的是哪个底层设备(例如 wan,也可能显示为 eth1 (wan),或者已经带 VLAN 的 wan.41 / eth1.41)。如果你当前能正常上网,千万不要随意更改当前的 WAN 接口本身
  2. 获取你本地真实的 IPTV VLAN ID。切勿照搬网上的数字,必须以你本地光猫配置和抓包结果为准。(补充线索:某些社区反馈天津移动的 IPTV VLAN 可能是 30,组播 VLAN 可能是 511,但这仅供试错参考,并非官方权威数据)。

第 2 步:在 WAN 设备上创建 802.1Q VLAN 子设备

  1. 进入“网络 → 设备”,点击“添加设备配置”。
  2. 类型选择 802.1Q VLAN(8021q)
  3. 基础设备选择“当前 WAN 接口实际绑定的底层设备”(例如 wan,或 eth1 (wan) 这种显示方式)。
  4. VLAN ID 填入你的 IPTV VLAN(假设为 30)。
  5. 保存后,新设备命名通常是“基础设备名 + .VLANID”,例如 wan.30eth1.30

第 3 步:创建并配置 IPTV 接口

  1. 进入“网络 → 接口”,点击“添加新接口”,命名为 iptv
  2. 设备选择刚才创建的 VLAN 子设备(例如 wan.30eth1.30)。
  3. 协议选择策略
    • 先试 DHCP 客户端:适合大多数地区的第一步验证。
    • 如果当地明确要求 PPPoE:部分地区 IPTV 需要独立拨号,请按实际情况选择 PPPoE 并填入机顶盒专用账号。
    • 排障提示:如果选择 DHCP 后长时间无法获取 IP 地址,可能是运营商对 IPTV 专网开启了 DHCP 鉴权白名单。你需要通过抓包机顶盒的开机 DHCP 流程,获取正确的 Vendor Class 字符串(DHCP Option 60),并在接口”高级设置”中的”发送的 DHCP 选项”里填入。
  4. 进入该接口的“高级设置”,务必进行以下操作(防止干扰正常上网):
    • 取消勾选“使用默认网关”。
    • 关闭“使用对端通告的 DNS 服务器”。
    • 关闭“IPv6 前缀委派”。
    • 如果是 PPPoE 模式,将网关跃迁值(metric)设置得比普通 WAN 更大(更靠后)。

第 4 步:独立防火墙区域设置

  1. 进入“网络 → 防火墙”,新增一个名为 iptv 的 zone(区域)。
  2. 覆盖网络勾选刚才建立的 iptv 接口。
  3. 基本策略设置为:入站 (Input) ACCEPT,出站 (Output) ACCEPT,转发 (Forward) REJECT。这是便于初期调试的宽松配置,待 IPTV 稳定运行后,建议将入站策略收紧为 REJECT,并仅放行 IGMP 等必要协议。
  4. 关于动态伪装(Masquerading):直播阶段建议先不开启;如果后续发现单播、回看或平台接口无法访问,再重点尝试将 masquerading 打开。

第 5 步:安装与配置 rtp2httpd

rtp2httpd 是一个社区开源项目,能够将 IPTV 组播(RTP/UDP)流转换为 HTTP 单播流,大大降低局域网设备播放的门槛。它还支持 FCC 快速换台、内置 Web 播放器等进阶功能。

备注:OpenWrt 官方仓库中的同类工具是 udpxy(可通过 opkg install udpxy 直接安装),功能较为基础但开箱即用。本文推荐功能更完善的 rtp2httpd。

安装过程

通过 SSH 连接路由器,执行 rtp2httpd 官方提供的一键安装脚本(脚本会自动检测 CPU 架构并下载对应版本):

uclient-fetch -q -O - https://raw.githubusercontent.com/stackia/rtp2httpd/main/scripts/install-openwrt.sh | sh

安装完成后会自动部署主程序、LuCI 管理界面和语言包。更多安装方式请参考 rtp2httpd 官方文档

配置服务

  1. 在 LuCI 的”服务”菜单中找到 rtp2httpd,勾选”启用”。
  2. 端口默认为 5140,通常无需修改。
  3. 上游接口:极其关键,需要指定为你创建的 iptv 接口(或其底层设备)。接口配错是导致”服务启动了但播不出画面”的最常见原因。

第 6 步:测试验证

  1. 在浏览器访问 http://路由器LAN地址:5140/status,确认服务运行正常且不报错。
  2. 寻找当地运营商的已知有效组播地址,使用播放器测试 HTTP 流,格式通常为 http://192.168.1.1:5140/rtp/239.x.x.x:port
  3. 如果你配置了 M3U 播放列表,还可以直接访问 http://路由器LAN地址:5140/player 使用 rtp2httpd 内置的 Web 播放器在浏览器中观看。

结语:进阶之路

完成以上步骤后,你的局域网应该已经可以稳定观看 IPTV 直播了。这也意味着我们的第一阶段目标顺利达成。

如果你想继续折腾回看、FCC(快速换台)、FEC(前向纠错)或者自动拉取播放列表,你就需要进入更硬核的第二阶段。这通常需要你通过抓包获取机顶盒的认证字段(MAC, DHCP Option 12/60 等),并在路由器上配置静态路由或策略路由(PBR),引导单播流量精准走向 IPTV 专网。

但在此之前,先尽情享受流畅的直播体验吧!