igmpproxy 不在接口之间路由 SSDP

igmpproxy 不在接口之间路由 SSDP

我有 hostapd 在隔离和桥接模式下的两个无线设备上运行:wlp1s0位于网桥后面wanwlp5s0位于网桥后面iot。每个桥的确切配置如所描述的那样这里wan有子网192.168.2.0/24n 和iot子网192.168.3.0/24

我正在尝试设置从wan到 的SSDP 转发,以便我可以使用 上的控制器iot连接到 Sonos 播放器。我正在跟进iotwan本指南。请注意,它是在考虑两个不同的 VLAN 的情况下编写的,但我认为同样的方法应该适用于两个不同的网桥。

因此,我使用以下配置设置了 igmpproxy 实例

phyint wan upstream   ratelimit 0 threshold 1
phyint iot downstream ratelimit 0 threshold 1

出于测试目的,我在防火墙上的两个网桥之间完全禁用了数据包过滤。

我希望这个设置足够了,但是 上的控制器wan看不到 上的玩家iot。玩家确实正确注册到 IGMP 代理(192.168.3.29是玩家之一):

igmpproxy[13948]: SENT Membership query   from 192.168.3.1     to 224.0.0.1
...
igmpproxy[13948]: RECV V2 member report   from 192.168.3.29    to 239.255.255.250
igmpproxy[13948]: Should insert group 239.255.255.250 (from: 192.168.3.29) to route table. Vif Ix : 1
igmpproxy[13948]: Updated route entry for 239.255.255.250 on VIF #1

我可以使用 TCP 转储检查控制器确实发送 SSDP 数据包(192.168.2.67是控制器):

> tcpdump -i wan port 1900
...
16:16:07.600003 IP 192.168.2.67.49628 > 239.255.255.250.ssdp: UDP, length 202
16:16:07.600003 IP 192.168.2.67.49628 > 255.255.255.255.ssdp: UDP, length 202
...

igmpproxy 似乎正确接收了这些:

igmpproxy[13948]: Vif bits : 0x00000002
igmpproxy[13948]: Setting TTL for Vif 1 to 1
igmpproxy[13948]: Adding MFC: 192.168.2.67 -> 239.255.255.250, InpVIf: 2
...
igmpproxy[13948]: Current routing table (Insert Route):
igmpproxy[13948]: -----------------------------------------------------
igmpproxy[13948]: #0: Src0: 192.168.2.67, Dst: 239.255.255.250, Age:2, St: A, OutVifs: 0x00000002, dHosts
igmpproxy[13948]: -----------------------------------------------------

但我没有看到这些数据包通过 tcpdump 转发。我期望一些数据包的iot目的地是注册多播的IP 239.255.255.250(特别是sonos播放器)。因此我认为这就是导致发现失败的原因。

为什么我看不到 SSDP 数据包被转发?我应该如何更改 Sonos 控制器才能通过 SSDP 发现播放器?

答案1

问题实际上出在防火墙方面。

我只在桥接层禁用了数据包过滤,因为我的理解这个答案网桥之间的流量仅通过防火墙的网桥层。但似乎如果两个网桥不同,那么流量仍然通过 IP 层,这是有道理的。

因此,解决方案是在 IP 系列的转发挂钩中(而不是在网桥系列中)打开两个网桥之间的必要端口。

相关内容