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