Linux內建或開源程式加入多播群組?

Linux內建或開源程式加入多播群組?

我正在使用 tcpdump 捕獲多播資料包,並且必須編寫一個自訂程式來加入多播來源,以便 tcpdump 能夠「看到」資料包。只是想知道 netcat 或任何其他應用程式是否可以執行此功能?

答案1

該答案已被撤回。

答案2

可以使用 socat 訂閱群組。這對於 L2 和 L3 訂閱都很有效:

socat STDIO  UDP4-DATAGRAM:239.101.1.68:8889,\
  ip-add-membership=239.0.1.68:10.100.201.1

239.0.1.68這將使用地址為介面訂閱組10.100.201.1。該UDP4-DATAGRAM:239.101.1.68:8889位元偵聽虛擬群組和 udp 連接埠上的資料包,該連接埠不應接收任何數據,以防止 socat 也將所有內容輸出到 stdout。相反,如果您希望將有效負載定向到 stdout,請將該群組和連接埠變更為您要訂閱的實際群組和連接埠。

可以指定多個以逗號分隔的ip-add-membership指令來同時訂閱多個群組。當 socat 退出時,它似乎也會清除 IGMP 訂閱。

答案3

除了socat回答之外,這裡還有一個重量級的解決方案——路由。該應用程式作為守護進程運行,並且可以動態控制:

smcroutectl join eth0 239.1.1.27
smcroutectl leave eth0 239.1.1.27

答案4

在FRR的pimd中,你可以這樣做:

interface vlan2000
 ip address A.B.C.D/24
 ip igmp
 ip igmp join 239.0.110.219
 ip igmp join 239.0.110.220
 ip igmp version 2

相關內容