我想要列出Linux系统上所有已打开的组播套接字,但仅使用netstat -g只能列出已加入的组。是否有其他工具可用于此目的?
非常感谢您的帮助。
除了 netstat -g
外,您还可以使用此命令查看绑定到多播地址的所有套接字:
除了 netstat -g
,您还可以使用此命令查看绑定到多播地址的所有套接字:
netstat -anu|sort -nk4
这是所有UDP套接字(无论是否组播)的列表。查找范围在224.0.0.0到239.255.255.255之间的所有地址。这些套接字绑定到多播地址,无论它们是否加入了多播组。它们将仅接收此多播组的流量。
但是:
实际上,用于接收多播流量的UDP套接字通常绑定到地址0.0.0.0。这些套接字可以接收所有单播和多播地址的UDP数据包,服务器通常根据源IP地址进行一些额外的过滤。
因此,在上面的列表中,您可能还需要查看绑定到0.0.0.0的UDP套接字,例如0.0.0.0:5353,这很可能是mDNS(avahi、zeroconf)服务器。
我认为没有工具可以提供您那样的信息。
原因是多播套接字并未绑定到地址,仅参与多播组(IP_ADD_MEMBERSHIP)。一个套接字可以在同一接口上加入多个不同的组,或者在不同接口上加入相同的组,因此保持这些交叉引用意义不大。内核暴露的唯一信息位于 /proc/net 中,在这种情况下是 /proc/net/igmp (<- netstat -g)。