配置 pfSense 以通过 WAN 链路上的单独 VLAN 传输 IPTV

配置 pfSense 以通过 WAN 链路上的单独 VLAN 传输 IPTV

我正在尝试将 pfSense 设置为我的主要互联网路由器,以取代提供商路由器。

基本互联网连接正常工作:将外部接口配置为 DHCP 客户端,为内部客户端配置 DHCP 服务器,配置 NAT – 一切正常。

但是,我还想通过该设备使用 IPTV。我的 ISP 使用 WAN 线路上的单独 VLAN 提供 IPTV。(互联网流量使用本机 VLAN,因此这里不需要处理 VLAN。)

ISP路由器配置如下:

  • 一个桥接器,其成员为连接 IPTV 接收器的内部端口和 WAN 接口上的 IPTV VLAN 终止
  • 网桥绑定了一个 IP 地址。这是一个静态 RFC1918 地址,该接口上显然没有配置默认网关。
  • 此外,该设备运行 IGMP 代理,该代理将桥接器作为其上游接口,将 LAN 接口(甚至那些不用于 IPTV 的接口)作为下游接口。启用了快速离开,在上游和下游强制使用 IGMP 版本 2,并且跳过了一个特定 IP 地址的多播组。不过,我确实觉得上游配置为整个桥接器(而不仅仅是 VLAN 接口)很奇怪——这可能与路由器也支持其他上行链路连接有关(我使用的是光纤,ONT 通过以太网连接,显然该设备还支持以太网上的 ATM 以及 ADSL)。

我在 pfSense 中做了什么:

  • 在接口 > VLAN 中,添加了一个新接口(WANIPTV),其中 WAN 接口作为其父接口,并具有适当的 VLAN ID。
  • 在接口 > 网桥中,创建一个网桥,该网桥以WANIPTV接口和一个未使用的物理接口作为其成员。该网桥称为BRIDGE0
  • 在“接口”>“分配”中,将其分配BRIDGE0为自己的接口(IPTVBRIDGE)并启用它,使用无需 IP 配置与提供商提供的路由器相同的 IP 配置(RFC1918 地址,无网关)。
  • 在系统 > 高级 > 可调参数中,设置net.link.bridge.pfil_member为 0 和net.link.bridge.pfil_bridge1。net.link.bridge.pfil_onlyip我保留默认值 0,以允许非 IP 流量通过。
  • 在防火墙 > 规则中,我为IPTVBRIDGE接口添加了一条通过规则,匹配 IPv4+IPv6,其他所有内容均设置为 ANY。
  • 在“服务”>“IGMP 代理”中,我已启用 IGMP,将其添加IPTVBRIDGE为上游接口,并将接收器的物理端口添加为下游。我不知道需要在接口上输入什么网络;我刚刚为两者添加了 0.0.0.0/1 和 128.0.0.0/1。
  • WANIPTV然后,我为所涉及的接口(以及IPTVBRIDGE接收器的物理接口)添加了任意过滤规则。

通过这些设置,我能够在 ISP 路由器上运行接收器,然后将 WAN 电缆和 IPTV 接收器插入我的 pfSense,从而在短时间内获得图像。但是过了一段时间,图像冻结了,当我重新启动接收器时,它报告没有可用的网络连接。

我如何才能知道必须为 IGMP 代理配置哪些网络?还是问题出在其他地方?

答案1

经过一番摆弄和研究,我相信我终于明白了:

IGMP 代理

对于我的 ISP,消费设备似乎位于交换网络上,因此 IGMP 代理似乎根本没有必要。

YMMV,如果您的 IPTV 接收器与上游服务器之间有路由连接,则可能仍需要此功能。在这种情况下,它应该这样工作:

将上游网络设置为任何有效的 IP 地址,并尽可能使用掩码(您需要创建一个语法有效的条目,该条目实际上不匹配您的服务实际使用的任何 IP 地址)。然后转到状态 > 系统日志 > 系统 > 常规并过滤igmpproxy。您应该会看到一堆消息,例如:

The source address 10.20.30.40 for group 239.240.241.242, is not in any valid net for upstream VIF. 

源地址是您需要在上游接口上允许的地址。如果您比较谨慎,可以逐个添加地址,也可以直接添加整个 IP 范围。

找出接收器的 IP 地址(您可能需要将其连接到正在工作的路由器)并在下游启用它。

本地 IP 地址

禁用 IGMP 代理后,接口上的本地 IP 地址IPTVBRIDGE也不再需要。禁用 IGMP 代理后,我还删除了 IP 地址。

过滤规则

在接口的过滤规则中IPTVBRIDGE,务必展开高级选项并选中“允许 IP 选项”。如果不选中此框,则默认情况下会丢弃带有 IP 选项的数据包(多播服务需要,例如 IPTV)。

如果像我的情况一样,您没有运行 IGMP 代理,并且 pfSense 配置为在网桥而不是其成员接口上应用过滤规则,则您不需要在外部/内部 IPTV 接口上制定任何规则。

结论

这样,即使重启后,我的 IPTV 接收器也终于可以接收流媒体了。

在我让一切正常工作后,我删除了所有不必要的东西(IGMP 代理、IPTVBRIDGE接口上的本地 IP 配置以及 IPTV 桥接成员接口上的过滤规则)。为确保万无一失,我重新启动了 IPTV 盒并将其放置了约 15 分钟。我仍然可以看电视,并且没有观察到任何与 IPTV 相关的接口上有任何丢包的情况。

相关内容