把 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 。

7201 次点击
所在节点    宽带症候群
46 条回复
planenalp
2023-09-08 03:16:09 +08:00
电力猫猫
FightPig
2023-09-08 03:26:28 +08:00
刷了 op 后很简单的,可能和地区有关,我设置了固定 ip ,一直没改过,一直用
TerraNova
2023-09-08 08:39:36 +08:00
@lcy630409 这样双播的方式会影响带宽吗
lcy630409
2023-09-08 09:29:35 +08:00
@TerraNova 不会,路由这一层会拦截 pppoe 的协议,去不了上网的口,出口只能在 iptv 的口了
persistpot
2023-09-08 09:33:03 +08:00
iptv 这个东西该淘汰了吧,直接在线看视频不好吗?整这么复杂
YGBlvcAK
2023-09-08 09:33:15 +08:00
有支持 FCC 的 iptv app 吗?
xhcnb
2023-09-08 11:03:25 +08:00
@persistpot #25 一是电视台直播, 一是电视台节目回看, 这两个功能我家是刚需, IPTV 还是有存在意义的, 而且每月只要 10 块钱, 还没有广告, 比那些视频 app 良心多了
txydhr
2023-09-08 11:10:15 +08:00
@0ranger 最简单的就是网管交换机
JensenQian
2023-09-08 11:29:57 +08:00
我自己抓了下,我这移动,我疫情前的抓的,他现在还能用,不过家里现在也没人看电视
lyu594
2023-09-08 12:24:12 +08:00
软硬通吃!路由器 IPTV 革新设置指南 https://www.bilibili.com/video/BV1524y1h7Wq/?share_source=copy_web&vd_source=cf341dfb1428d1a989240363afd9cb28

我是广西电信,用的这个 up 主的方案实现的,我折腾了才知道 iptv 能单播和组播,需要光猫 vlan 设置对了才行。

我电视盒子直接连光猫,测过换台速度,比广电还快,不知道这个 FCC 功能是不是内置在电视盒子(TY1608),我用 potplayer 播放就要缓冲 3 秒左右。
jsq2627
2023-09-08 18:47:21 +08:00
@lcy630409 这运营商是个很好的解决办法。

现在很多地方做 IPoE 改造,为了兼容桥接的路由器,也采用了同样的办法:光猫充当 PPPoE server ,兼容了路由器的拨号行为。
huihuilang
2023-09-08 18:47:31 +08:00
我觉得最麻烦的不是网线,而是光猫改桥接了 iptv 用不了了,不知道怎么解决
jsq2627
2023-09-08 18:48:11 +08:00
@lookookok 要看交换机是否支持 IGMP snooping 了。傻瓜交换机没有标明的话很难区分。
jsq2627
2023-09-08 19:44:15 +08:00
@YGBlvcAK 我也在找,但是目前没有找到

FCC 不是标准协议,估计很难有 app 主动去实现。
rebecca554owen
2023-09-09 09:44:34 +08:00
移动的魔百盒用网络就可以直接看。
jsq2627
2023-09-10 15:32:39 +08:00
@YGBlvcAK
@lyu594

我今天在 rtp2httpd 上魔改了下,增加了 FCC 的实现
https://github.com/stackia/rtp2httpd

rtp2httpd 和 udpxy 类似,是一个组播转单播流工具
可以用类似这样 http://10.0.0.2:5140/rtp/239.253.64.120:5140?fcc=10.255.14.152:15970 的 URL 作为播放地址,将能够从 FCC 服务器上拉取单播流来加速初始播放。具体 fcc 地址要自己从所在地 iptv 上抓包了
Rinndy
2023-09-14 15:05:18 +08:00
这个和 udpxy 有什么区别吗,还有能把那个插件弄到 op 软件包里吗。
jsq2627
2023-09-14 17:58:06 +08:00
@Rinndy 有 FCC 服务器时可以快速换台,效果见 github 里的视频
暂时仅供高阶玩家自行交叉编译跑在 openwrt 上
Rinndy
2023-09-15 11:32:42 +08:00
@jsq2627 我抓包没看到哪个是 fcc 地址。。
cpstar
2023-09-15 22:34:04 +08:00
折腾了半天,igmp 也没有转发进来。也就是方法 5 没有搞定。不知道哪里该怎么搞

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

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

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

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

© 2021 V2EX