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

相关内容