Linux-Kernel

什麼是多播偵聽,為什麼它會破壞 UPnP/DLNA?

  • December 31, 2017

我有一台伺服器,除其他外,它使用mediatomb. 客戶端使用簡單服務發現協議(SSDP) 在網路上定位伺服器。

我發現 SSDP 發現M-SEARCH查詢沒有得到響應,並最終將問題追溯到伺服器使用啟用了多播偵聽的橋接介面這一事實(因為橋接預設啟用此功能)。

我解決了我的問題

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

但是,儘管這適用於我的情況,但我不明白它在做什麼,以及是否有任何我不知道的影響。因此問題….

什麼是多播偵聽,為什麼它會破壞 SSDP,為什麼需要它以及為什麼在網橋上預設啟用它,以及禁用它可能會導致什麼問題,因為它可能是有充分理由預設啟用的?

多播可能代表交換路由器的沉重負載(更不用說潛在的 DoS 攻擊的安全方面)。在交換機(或 Linux 網橋)上,多播偵聽位於網路層 2.5,旨在通過以下方式減輕負載:

  • 窺探網路流量
  • 辨識每個交換機埠訂閱的多播通道
  • 過濾掉其他組播流量

聽起來,這始終是一個理想的功能(除非您想調試多播流量)。那麼為什麼要禁用多播偵聽呢?

因為您面臨的是幾年前我在 Corosync 和兩個不同主機上的兩個 VM 上遇到的一個錯誤:流量正常,直到某個點,所有傳入的多播流量似乎都被主機丟棄(儘管它的iptable表完全是空的)。AFAIK,這是 3.x 核心中的一個錯誤,我不得不像你一樣禁用多播偵聽。如果我沒記錯的話,我當時使用的是 Debian(Wheezy 或 Jessie),但這個RedHat 錯誤報告準確地描述了我遇到的問題。

如本錯誤報告中所述,如果您有可能,最好:

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

比:

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

引用自:https://unix.stackexchange.com/questions/391672