
我正在使用 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