把 IPTV 和宽带融合到同一个 LAN,一些心得

2023-09-07 18:09:14 +08:00
 jsq2627

众所周知 IPTV 因为是一个独立网络,会给家里网络布线带来一些不便。例如很多人家里弱电箱到客厅只有一根网线,如果想要光猫放弱电箱,IPTV 、路由器、游戏机等放客厅,那么就会有麻烦。一般常用方式要不是把一根 8 芯网线分成两根 4 芯降速到 100M 跑,要不是用带有 VLAN 管理的交换机实现单线复用。

这里我提供另一个思路,即把 IPTV 网和宽带网同时接入到主路由器上,然后用静态路由来分流。这个方案好处是不再依赖 VLAN ,因为很多家用路由器不支持 VLAN 管理; IPTV 盒子随意接到家里任何一个网口上都可以使用。

其实思路很简单,但是有一些坑,特别是涉及组播相关。下面以我所在地 海南电信 为例。

我的网络拓扑很简单:

光猫 <--> 主路由器 <--> AP

其中主路由器是 x86 软路由,安装了原版 openwrt 。AP 是市面上常见的家用 mesh 路由器,我的是华硕系列。光猫桥接模式,主路由拨号上网。

通过前期的抓包分析,我已经知道:

有了上面这些抓包分析之后,配置方法就明确了:

  1. 从光猫连两根网线到主路由,一根属于宽带,一根属于 IPTV (连接光猫 iTV 口)。理论上这里也可以通过 VLAN 简化成一根网线,但是我没有光猫超级密码,不想折腾了。
  2. 在主路由配置两个 WAN ,WAN1 属于宽带,通过 PPPoE 拨号获取 IP 。WAN2 属于 IPTV ,通过 DHCP 获取 IP 。WAN1/WAN2 同属于同一个防火墙 zone 下面。把 WAN2 的默认网关和自动获取 DNS 选项关闭。
  3. 在主路由上配置两条静态路由:10.39.0.0/16 via 10.254.0.1 dev wan2 和 10.255.0.0/16 via 10.254.0.1 dev wan2
  4. 此时把 IPTV 盒子通过网线接到主路由或者任意 AP 下面,发现已经可以通过开机认证并且显示主界面了。只是不能播放直播频道。
  5. 这是因为我们还没有解决 IGMP 组播转发问题。对于 openwrt ,需要安装 omcproxy 和 luci-app-omcproxy 。omcproxy 的上行链路设置为 wan2 ,下行链路设置为 lan 。
  6. 此时 IPTV 盒子已经可以播放直播频道。任意电脑连接网线接入家庭局域网后,也可以用本地播放器直接播放上面我整理好的 RTP 组播地址。
  7. 但是发现 IPTV 盒子切换频道非常慢,每次换台需要等待 3-5 秒。如果 IPTV 盒子直接接入光猫,可以秒换台,很丝滑。看来 FCC 机制没有生效。
  8. 在主路由添加一条端口转发规则:将从 wan2 入站的 UDP 20000-21000 端口转发到 IPTV 盒子上。
  9. IPTV 盒子切换频道重新变得丝滑起来,秒切无卡顿。原因是当 FCC 服务器返回单播流时,是用一个新端口直接给盒子的 20000-21000 的某个随机端口打流,因此必须开启端口转发来放行

关于 FCC 的这部分我找了很多资料,过去应该很少有人提到过它。我折腾了很久,反复抓包对比才发现它的工作方式类似 FTP 主动模式,需要在防火墙上开端口映射才行。希望大家点个赞。

目前还有一个遗留问题,是 DHCP 获取的地址,1-2 天后会失效且不会自动重新获取。猜测有某种保活机制,但是我还没有逆向出来。现在我的应对办法是在路由器上通过脚本定期重启 wan2 interface 和 omcproxy 。

7232 次点击
所在节点    宽带症候群
46 条回复
jsq2627
2023-09-16 04:30:20 +08:00
l123456789jy
2023-11-10 17:54:48 +08:00
现在的路由都支持,IPTV 口了 ,根本没这么麻烦,教程地址: <amp-youtube data-videoid="WFsgU-dAKZU" layout="responsive" width="480" height="270"></amp-youtube>
pensz
2023-12-23 15:45:33 +08:00
@l123456789jy 请教下,这个原理是什么呢,iptv 和上网的流量都没有 vlan tag ,路由器和光猫是怎么区分这个流量的呢。
l123456789jy
316 天前
@pensz 小米这款路由支持自动识别 iptv ,还有光猫其实一直是网络和 iptv 都是一起发送的,并不区分网口。
ttizard
274 天前
@jsq2627 大佬直播源好像无效了不?
ttizard
273 天前
重启 IGMP 故障排除又可以用了,直播源没问题~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/971817

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX