我试图通过Wireshark(实际上是TShark)捕获多点传送stream量,但是交换机启用了IGMP snooping,并且只会在具有活动的IGMP订阅的端口上发送多点传送stream量。
目前我正在通过一个单独的应用程序来解决这个问题,使得我希望logging的群组打开,但是我正试图build立一个dynamic地开始/停止logging数据的系统,这种额外的复杂性是痛苦的。
有没有办法强制Wireshark发送它正在录制的组播组的IGMP订阅?
您可以使用“ip maddr add”来订阅其他组。 这应该会导致内核对IGMP查询做出响应,并为它们接收stream量。
假设“多播组正在录制”,则表示您已经指定了一个捕获filter,要求在“主机”关键字中使用特定的多播目的地址; 这是Wireshark将数据包捕获限制在特定组播组的唯一方法。
Wireshark没有基于捕获filter发送IGMP订阅的机制; 它假定你已经安排好所有相关的数据包发送到它所捕获的端口 ,例如通过端口镜像/ SPAN /不pipe你的交换机厂商在那个端口上调用它 ,以便交换机发送所有数据包到那个端口。 如果您不能设置端口镜像,或者如果这样会将太多的数据包发送到您捕获的端口,则必须将该端口订阅到适当的多播组(如您似乎已经在做的那样) 。
您可以使用Ostinato来构build,制作和发送数据包 。
创build一个自定义的lua监听器,并从wireshark中调用它。
这是一个有据可查的例子。