linux-kernel – 什么是多播侦听?为什么它会破坏UPnP / DLNA?

我有一个服务器,除其他外,使用mediatomb为DLNA(UPnP)提供媒体服务.客户端使用简单服务发现协议(SSDP)来定位网络上的服务器.

我发现SSDP发现M-SEARCH查询没有被响应并最终跟踪问题,因为服务器正在使用已启用多播侦听的桥接接口(因为桥接器默认启用此功能).

我解决了我的问题

echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping

然而,虽然这在我的情况下有效,但我不明白它在做什么以及是否有任何我不知道的含义.因此问题……

什么是多播侦听,为什么它会破坏SSDP,为什么它会被通缉以及为什么它在桥上默认启用,以及禁用它可能导致什么问题,因为它可能默认情况下有充分理由启用?

最佳答案
多播可能代表交换机路由器的重负荷(未提及具有潜在DoS攻击的安全方面).在交换机(或Linux网桥)上,Multicast snooping位于网络层2.5,旨在通过以下方式减轻负载:

>窥探网络流量
>识别每个交换机端口订阅的多播信道
>过滤掉其他多播流量

听起来,这总是一个理想的功能(除非你想调试多播流量).那么为什么要禁用多播侦听呢?

因为你所面临的是我几年前遇到的一个错误,我在两个不同的主机上使用了Corosync和两个虚拟机:流量是正常的,直到所有传入的多播流量似乎被主机丢弃的某个点(尽管它的iptable表是完全空的) . AFAIK,这是3.x内核中的一个错误,我必须以与你相同的方式禁用多播窥探.如果我的记忆为我服务,那时我正在使用Debian(Wheezy或Jessie),但是这个RedHat bug report描述了我的问题.

正如本错误报告中所述,如果您有可能,最好:

echo 1 > /sys/devices/virtual/net/br0/bridge/multicast_querier

比:

echo 0 > /sys/devices/virtual/net/br0/bridge/multicast_snooping

转载注明原文:linux-kernel – 什么是多播侦听?为什么它会破坏UPnP / DLNA? - 代码日志