最近注册了带有 IPTV 的 Cincinnati Bell Fioptics FTTH。用 pfsense 盒 + Ubiquiti AP 替换提供的无线路由器,互联网运行良好。但是,我无法让 IPTV 盒子工作。我已经阅读了互联网上所有关于 Fioptics IPTV 网络的帖子,以及来自@Mech 的许多帖子,但都没有运气。
这是我所拥有的:
pfsense 2.5.2-发布
启用 IGMP,WAN 上行 10.0.0.0/8,LAN 下行 239.0.0.0/8
IGMP WAN 通过规则,UDP IPTV 流量通过
IGMP LAN 通行规则
所有规则都选中了“允许带有 IP 选项的数据包通过”框。在防火墙系统日志中,我看到 WAN 和 LAN 上的 IGMP 流量匹配,这表明 IGMP 流量正在成功流动,但不是实际的多播流量。
只有一个WAN接口和一个LAN接口。没有 vlan、PPPoE 或任何类似的东西。
作为调试的一部分,我将 pfsense 盒子上的两个端口设置为网桥,并通过它们连接 ISP 提供的路由器以捕获流量。我将网桥设置为接口,创建“通过所有 IPV4”规则,并启用“允许带有 IP 选项的数据包到低音”框,此时电视开始工作。捕获流量确认所有 Fioptics IPTV 流都来自 10.0.0.0/8,并按照本“Fioptics(辛辛那提贝尔的 IPTV)权威指南”中的建议,发往 239.0.0.0/8 。
Wireshark 捕获
我试图在桥接接口中制定规则以专门匹配 IPTV 流量(来自 10.0.0.0/8 的 IPv4 UDP),但即使我可以在数据包捕获中看到它,也无法获得匹配任何流量的规则。这向我表明,由于网桥,数据包是在链路层而不是防火墙上路由的。
我还确保我正在使用 ISP DNS 服务器来消除这个可能的问题。
有没有人有任何想法?Spitballing:我需要向 IGMP 代理添加更多网络吗?我的传递规则不够吗?我的盒子是否在接口处丢弃所有链路层多播数据包,因此它们甚至永远不会到达防火墙?
好的,我让它工作了,现在通过 pfsense 路由器成功地观看了 Fioptics IPTV。有两个问题 - 一个是问题中显示的配置更改,另一个是我单独发现的。
第一个问题:224.0.0.0/8 需要添加到下游的 IGMP 代理中,如下所示: 有趣的注意:239 是 11101111,224 是 11100000,所以它们都在 224.0.0.0/4 掩码下。我确实看到了一些发往 225.xxx (11100001) 的 IGMP 数据包 - 所以我想知道 224.0.0.0/4 是否实际上是“更正确”的下游 IGMP 网络。
第二个问题:DNS。为了隔离所有进出 IPTV 盒子的流量,我设置了第二个 LAN 端口(称为 IPTV),并且只将 IPTV 盒子切换到它。捕获流量显示,盒子在启动时做的第一件事是对 entm.iptv.zoomtown.com 进行 DNS 查询(然后在每个成功解析后依次进行一系列其他查询)。
我最初将 pfsense 配置为使用 1.1.1.1 作为 DNS 服务器,它不解析该主机名。然后,我允许 ISP DHCP 配置 DNS 服务器,但提供的默认服务器也无法解析该名称。只有 DNS 服务器 ns1.fuse.net (216.68.1.100) 和 ns2.fuse.net (216.68.2.100) 会解析它们。这些必须已在 ISP 提供的路由器上进行配置。但是,我不希望所有 DNS 查询都转到这些服务器,因此我将 General Setup 下的 DNS 服务器重新配置为 1.1.1.1 和 1.0.0.1,然后为 IPTV 接口设置 DHCP DNS 服务器(服务 -> DHCP服务器 - > IPTV)到两个熔断服务器。这似乎解决了它。
1 月 1 日 22 日更新:
辛辛那提贝尔一直在做出一些改变。现在需要在您的 IGMP 代理中包含 172.16.0.0/12。我还没有调查是否仍然需要 10/8。他们大约在两周前进行了第一次更改,我将 172.0.0.0/8 添加到 IGMP,它一直有效,此时 /12 版本是必要的,它是完整的 172.16.xx 私有 IPV4 地址空间。注意我还将下游切换到 224/4。
1 月 17 日 22 日更新:
猫捉老鼠的游戏还在继续。必须将 172.17.0.0/16 添加到 IGMP 代理。这是 172.16/12 的一个子集,所以我还不确定为什么,但它又可以工作了。
7 月 8 日 22 日更新:
原来 IGMP 设置在 224.0.0.0/4 是正确的。问题是 IGMP 代理服务崩溃。它似乎与 Fioptics IPTV 多播数据包本身有关。“修复”是安装 Service Watchdog 插件以在 igmpproxy 服务崩溃时自动重启。谜团已揭开!