Multicast en netstat, tcpdump y /proc

Hoy escribo una entrada rápida en la que podemos ver diferentes formas de diagnosticar el estado del tráfico multicast en un servidor GNU/Linux. Básicamente utilizamos el comando netstat para visualizar los grupos de membresía multicast para IPv4 e IPv6, tcpdump para visualizar el tráfico a tiempo real y /proc para visualizar la información IGMP (Internet Group Management Protocol) multicast.

Empezamos por netstat, comando al cual podemos pasarle el parámetro «-g» o «–groups» para ver los grupos multicast en los que formamos parte, tanto para IPv4 como IPv6:

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      224.0.0.251
eth0            1      all-systems.mcast.net
lo              1      ip6-allnodes
eth0            1      ff02::fb
eth0            1      ff02::1:ffd5:1899
eth0            1      ip6-allnodes
eth2            1      ip6-allnodes

Otra forma de ver los grupos es a través de /proc (/proc/net/igmp):

$ cat /proc/net/igmp
Idx	Device    : Count Querier	Group    Users Timer	Reporter
1	lo        :     1      V3
				010000E0     1 0:00000000		0
2	eth0      :     2      V3
				FB0000E0     1 0:00000000		0
				010000E0     1 0:00000000		0

Como véis tenemos otra información interesante como la versión utilizada para la transmisión de mensajes IGMP, en este caso IGMPv3.

Una vez verificados los grupos multicast, podemos esnifar el tráfico de red filtrando únicamente el tráfico multicast gracias a tcpdump:

# tcpdump -n "multicast"

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
[...]
[...]

Para saber la diferencia entre unicast, broadcast y multicast, revisad esta entrada: Broadcast, Multicast y Unicast.