![Linux内置或者开源程序加入多播组?](https://linux22.com/image/1286712/Linux%E5%86%85%E7%BD%AE%E6%88%96%E8%80%85%E5%BC%80%E6%BA%90%E7%A8%8B%E5%BA%8F%E5%8A%A0%E5%85%A5%E5%A4%9A%E6%92%AD%E7%BB%84%EF%BC%9F.png)
我正在使用 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