список многоадресных сокетов

Я пытаюсь перечислить все открытые многоадресные сокеты в системе Linux? Однако netstat -g перечисляет присоединенные группы. Есть ли какая-нибудь другая утилита, которую я могу использовать для этого?

Большое спасибо за помощь.


person Sreeram Ravinoothala    schedule 09.04.2013    source источник


Ответы (2)


В дополнение к netstat -g вы можете использовать это, чтобы увидеть все сокеты, привязанные к многоадресному адресу:

netstat -anu|sort -nk4

Это список всех сокетов UDP (многоадресных или нет). Найдите все адреса в диапазоне от 224.0.0.0 до 239.255.255.255. Это сокеты, привязанные к многоадресным адресам, независимо от того, присоединились ли они к многоадресной группе или нет. Они будут только получать трафик для этой многоадресной группы.

Но:

На практике сокеты UDP, используемые для приема многоадресного трафика, обычно привязаны к адресу 0.0.0.0. Они могут получать UDP-пакеты для всех одноадресных и многоадресных адресов, и сервер обычно выполняет некоторую дополнительную фильтрацию на основе исходного IP-адреса.

Таким образом, в приведенном выше списке вы также можете посмотреть на сокеты UDP, привязанные к 0.0.0.0, например, 0.0.0.0:5353, который, скорее всего, является сервером mDNS (avahi, zeroconf).

person Johannes Overmann    schedule 27.02.2014

Я не думаю, что есть инструмент, который может дать вам эту информацию.

Причина в том, что многоадресный сокет не привязан к адресу, он только участвует в группе многоадресной рассылки (IP_ADD_MEMBERSHIP). Сокет может присоединяться к нескольким различным группам на одном и том же интерфейсе или к одной и той же группе на разных интерфейсах, поэтому не имеет большого смысла поддерживать эти перекрестные ссылки. Единственная информация, предоставляемая ядром, находится в /proc/net, и в данном случае /proc/net/igmp (‹-netstat -g).

person Catalin    schedule 27.02.2014